Skip to main content

origincloud_compute/generated/
origincloud.compute.v1beta1.rs

1// Code generated by origincloud-sdk-generator. DO NOT EDIT.
2// source: origincloud/compute/v1beta1/catalog.proto
3// source: origincloud/compute/v1beta1/image.proto
4// source: origincloud/compute/v1beta1/instance.proto
5// source: origincloud/compute/v1beta1/key_pair.proto
6// source: origincloud/compute/v1beta1/public_image.proto
7// source: origincloud/compute/v1beta1/volume_attachment.proto
8
9/// A size an instance is launched as.
10#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11pub struct InstanceType {
12    /// The type's resource name, `instanceTypes/gp1.core.2`.
13    #[prost(string, tag = "1")]
14    pub name: ::prost::alloc::string::String,
15    /// The name the console shows.
16    #[prost(string, tag = "2")]
17    pub display_name: ::prost::alloc::string::String,
18    /// The hardware kind, such as `gp1`.
19    #[prost(string, tag = "3")]
20    pub kind: ::prost::alloc::string::String,
21    /// How its vCPUs are allocated, such as `core`: dedicated and guaranteed.
22    #[prost(string, tag = "4")]
23    pub cpu_allocation_mode: ::prost::alloc::string::String,
24    /// The vCPUs an instance of the type has.
25    #[prost(int32, tag = "5")]
26    pub vcpu: i32,
27    /// The memory an instance of the type has, in MiB.
28    #[prost(int32, tag = "6")]
29    pub memory_mib: i32,
30    /// The most an instance of the type reads and writes across all its
31    /// volumes together, in megabits per second; 0 when it isn't limited.
32    #[prost(int32, tag = "7")]
33    pub storage_bandwidth_mbit: i32,
34    /// The rate an instance of the type can burst to above
35    /// `storage_bandwidth_mbit`, in megabits per second, for 60 seconds of
36    /// traffic at that rate, which staying under the limit refills; 0 when it
37    /// can't burst.
38    #[prost(int32, tag = "8")]
39    pub storage_burst_bandwidth_mbit: i32,
40    /// Whether an instance can be launched as, or changed to, the type now. A
41    /// type listed but not available is no longer offered; instances already
42    /// of the type keep running.
43    #[prost(bool, tag = "9")]
44    pub available: bool,
45}
46/// A stable name for the current public image of an operating system
47/// release.
48#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
49pub struct ImageFamily {
50    /// The family's resource name, `imageFamilies/ubuntu-24-04-minimal`.
51    /// Never renamed, and never reused for another release.
52    #[prost(string, tag = "1")]
53    pub name: ::prost::alloc::string::String,
54    /// The name the console shows.
55    #[prost(string, tag = "2")]
56    pub display_name: ::prost::alloc::string::String,
57    /// What the family's images hold.
58    #[prost(string, tag = "3")]
59    pub description: ::prost::alloc::string::String,
60    /// Who publishes the release, such as `Canonical`.
61    #[prost(string, tag = "4")]
62    pub vendor: ::prost::alloc::string::String,
63    /// The operating system, such as `ubuntu`.
64    #[prost(string, tag = "5")]
65    pub os: ::prost::alloc::string::String,
66    /// The release, such as `24.04`.
67    #[prost(string, tag = "6")]
68    pub os_version: ::prost::alloc::string::String,
69    /// When the vendor stops supporting the release; empty when no date is
70    /// known. Advisory: launches aren't refused after it.
71    #[prost(message, optional, tag = "7")]
72    pub support_end_time: ::core::option::Option<
73        ::origincloud_core::protobuf::Timestamp,
74    >,
75    /// Whether an instance can be launched from the family now. Instances
76    /// launched from a family no longer offered are unaffected.
77    #[prost(bool, tag = "8")]
78    pub available: bool,
79}
80/// The request for GetInstanceType.
81#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
82pub struct GetInstanceTypeRequest {
83    /// The type to return, `instanceTypes/{instance_type}`.
84    #[prost(string, tag = "1")]
85    pub name: ::prost::alloc::string::String,
86}
87/// The request for ListInstanceTypes. The catalog is small and bounded by
88/// the platform, so it comes in one page.
89#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
90pub struct ListInstanceTypesRequest {}
91/// The response for ListInstanceTypes.
92#[derive(Clone, PartialEq, ::prost::Message)]
93pub struct ListInstanceTypesResponse {
94    /// Every instance type, by kind, then by size.
95    #[prost(message, repeated, tag = "1")]
96    pub instance_types: ::prost::alloc::vec::Vec<InstanceType>,
97}
98/// The request for GetImageFamily.
99#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
100pub struct GetImageFamilyRequest {
101    /// The family to return, `imageFamilies/{image_family}`.
102    #[prost(string, tag = "1")]
103    pub name: ::prost::alloc::string::String,
104}
105/// The request for ListImageFamilies. The catalog is small and bounded by
106/// the platform, so it comes in one page.
107#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
108pub struct ListImageFamiliesRequest {}
109/// The response for ListImageFamilies.
110#[derive(Clone, PartialEq, ::prost::Message)]
111pub struct ListImageFamiliesResponse {
112    /// Every image family, by name.
113    #[prost(message, repeated, tag = "1")]
114    pub image_families: ::prost::alloc::vec::Vec<ImageFamily>,
115}
116/// A project's own image, which an instance's boot volume can be created
117/// from.
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct Image {
120    /// The image's resource name.
121    #[prost(string, tag = "1")]
122    pub name: ::prost::alloc::string::String,
123    /// The image's URN, the identifier access policies and the audit log use.
124    #[prost(string, tag = "2")]
125    pub urn: ::prost::alloc::string::String,
126    /// What the image holds, as you describe it.
127    #[prost(string, tag = "3")]
128    pub description: ::prost::alloc::string::String,
129    /// The account an instance launched from the image logs in as, unless the
130    /// launch names another: a POSIX user name of at most 32 lowercase
131    /// letters, digits, underscores and hyphens, starting with a letter or an
132    /// underscore, and not `root`. `cloud` when left empty.
133    #[prost(string, tag = "4")]
134    pub default_user: ::prost::alloc::string::String,
135    /// The device name of the disk the image boots from: one of the
136    /// `block_devices`' `device`.
137    #[prost(string, tag = "5")]
138    pub root_device: ::prost::alloc::string::String,
139    /// The image's disks, each created for an instance launched from it.
140    #[prost(message, repeated, tag = "6")]
141    pub block_devices: ::prost::alloc::vec::Vec<ImageBlockDevice>,
142    /// The CPU architecture it boots on.
143    #[prost(enumeration = "image::Architecture", tag = "7")]
144    pub architecture: i32,
145    /// Its operating system family.
146    #[prost(enumeration = "image::Platform", tag = "8")]
147    pub platform: i32,
148    /// Where it is in its lifecycle.
149    #[prost(enumeration = "image::State", tag = "9")]
150    pub state: i32,
151    /// The principal that created the image, such as `user:<id>`.
152    #[prost(string, tag = "10")]
153    pub creator: ::prost::alloc::string::String,
154    /// Labels of your own, at most 50. The `origin:name` tag is the name the
155    /// console shows.
156    #[prost(btree_map = "string, string", tag = "11")]
157    pub tags: ::prost::alloc::collections::BTreeMap<
158        ::prost::alloc::string::String,
159        ::prost::alloc::string::String,
160    >,
161}
162/// Nested message and enum types in `Image`.
163pub mod image {
164    /// The CPU architecture an image boots on.
165    #[derive(
166        Clone,
167        Copy,
168        Debug,
169        PartialEq,
170        Eq,
171        Hash,
172        PartialOrd,
173        Ord,
174        ::prost::Enumeration
175    )]
176    #[repr(i32)]
177    pub enum Architecture {
178        /// Not set.
179        Unspecified = 0,
180        /// 64-bit x86.
181        X8664 = 1,
182    }
183    impl Architecture {
184        /// String value of the enum field names used in the ProtoBuf definition.
185        ///
186        /// The values are not transformed in any way and thus are considered stable
187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
188        pub fn as_str_name(&self) -> &'static str {
189            match self {
190                Self::Unspecified => "ARCHITECTURE_UNSPECIFIED",
191                Self::X8664 => "X86_64",
192            }
193        }
194        /// Creates an enum from field names used in the ProtoBuf definition.
195        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
196            match value {
197                "ARCHITECTURE_UNSPECIFIED" => Some(Self::Unspecified),
198                "X86_64" => Some(Self::X8664),
199                _ => None,
200            }
201        }
202    }
203    /// The operating system family of an image.
204    #[derive(
205        Clone,
206        Copy,
207        Debug,
208        PartialEq,
209        Eq,
210        Hash,
211        PartialOrd,
212        Ord,
213        ::prost::Enumeration
214    )]
215    #[repr(i32)]
216    pub enum Platform {
217        /// Not set.
218        Unspecified = 0,
219        /// Linux or another Unix.
220        LinuxUnix = 1,
221    }
222    impl Platform {
223        /// String value of the enum field names used in the ProtoBuf definition.
224        ///
225        /// The values are not transformed in any way and thus are considered stable
226        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
227        pub fn as_str_name(&self) -> &'static str {
228            match self {
229                Self::Unspecified => "PLATFORM_UNSPECIFIED",
230                Self::LinuxUnix => "LINUX_UNIX",
231            }
232        }
233        /// Creates an enum from field names used in the ProtoBuf definition.
234        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
235            match value {
236                "PLATFORM_UNSPECIFIED" => Some(Self::Unspecified),
237                "LINUX_UNIX" => Some(Self::LinuxUnix),
238                _ => None,
239            }
240        }
241    }
242    /// Where the image is in its lifecycle.
243    #[derive(
244        Clone,
245        Copy,
246        Debug,
247        PartialEq,
248        Eq,
249        Hash,
250        PartialOrd,
251        Ord,
252        ::prost::Enumeration
253    )]
254    #[repr(i32)]
255    pub enum State {
256        /// Not set.
257        Unspecified = 0,
258        /// Instances can be launched from it.
259        Available = 1,
260    }
261    impl State {
262        /// String value of the enum field names used in the ProtoBuf definition.
263        ///
264        /// The values are not transformed in any way and thus are considered stable
265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
266        pub fn as_str_name(&self) -> &'static str {
267            match self {
268                Self::Unspecified => "STATE_UNSPECIFIED",
269                Self::Available => "AVAILABLE",
270            }
271        }
272        /// Creates an enum from field names used in the ProtoBuf definition.
273        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
274            match value {
275                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
276                "AVAILABLE" => Some(Self::Available),
277                _ => None,
278            }
279        }
280    }
281}
282/// A disk of an image.
283#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
284pub struct ImageBlockDevice {
285    /// The device name the disk appears under on every instance launched from
286    /// the image: `vda` to `vdz` but `vdc`, unique within the image.
287    #[prost(string, tag = "1")]
288    pub device: ::prost::alloc::string::String,
289    /// The disk's size in GiB, at least the snapshot's.
290    #[prost(int32, tag = "2")]
291    pub size_gib: i32,
292    /// The protected snapshot the disk is created from, in the image's
293    /// project and zone; an empty disk when left empty.
294    #[prost(string, tag = "3")]
295    pub source_snapshot: ::prost::alloc::string::String,
296}
297/// The request for GetImage.
298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
299pub struct GetImageRequest {
300    /// The image to return.
301    #[prost(string, tag = "1")]
302    pub name: ::prost::alloc::string::String,
303}
304/// The request for ListImages.
305#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
306pub struct ListImagesRequest {
307    /// The zone whose images to list, `projects/{project}/zones/{zone}`.
308    #[prost(string, tag = "1")]
309    pub parent: ::prost::alloc::string::String,
310    /// The most images to return; the server clamps it, and 0 means its
311    /// default.
312    #[prost(int32, tag = "2")]
313    pub page_size: i32,
314    /// A previous response's `next_page_token`, for the page after it.
315    #[prost(string, tag = "3")]
316    pub page_token: ::prost::alloc::string::String,
317}
318/// The response for ListImages.
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct ListImagesResponse {
321    /// The images on this page.
322    #[prost(message, repeated, tag = "1")]
323    pub images: ::prost::alloc::vec::Vec<Image>,
324    /// The token for the next page; empty on the last one.
325    #[prost(string, tag = "2")]
326    pub next_page_token: ::prost::alloc::string::String,
327}
328/// The request for CreateImage.
329#[derive(Clone, PartialEq, ::prost::Message)]
330pub struct CreateImageRequest {
331    /// The zone to create the image in, `projects/{project}/zones/{zone}`.
332    #[prost(string, tag = "1")]
333    pub parent: ::prost::alloc::string::String,
334    /// The image to create: its description, root device and disks, and
335    /// optionally its default user and tags.
336    #[prost(message, optional, tag = "2")]
337    pub image: ::core::option::Option<Image>,
338    /// A UUID; a repeat with the same id returns the first request's image
339    /// instead of creating a second one.
340    #[prost(string, tag = "3")]
341    pub request_id: ::prost::alloc::string::String,
342}
343/// The request for UpdateImage.
344#[derive(Clone, PartialEq, ::prost::Message)]
345pub struct UpdateImageRequest {
346    /// The image, by its name, with the fields to change.
347    #[prost(message, optional, tag = "1")]
348    pub image: ::core::option::Option<Image>,
349    /// The fields to change: `description`, `tags`, or both. `*` is both.
350    #[prost(message, optional, tag = "2")]
351    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
352}
353/// The request for DeleteImage.
354#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
355pub struct DeleteImageRequest {
356    /// The image to delete.
357    #[prost(string, tag = "1")]
358    pub name: ::prost::alloc::string::String,
359}
360/// A virtual machine in one zone.
361#[derive(Clone, PartialEq, ::prost::Message)]
362pub struct Instance {
363    /// The instance's resource name.
364    #[prost(string, tag = "1")]
365    pub name: ::prost::alloc::string::String,
366    /// The instance's URN, the identifier access policies and the audit log
367    /// use.
368    #[prost(string, tag = "2")]
369    pub urn: ::prost::alloc::string::String,
370    /// The instance type, `instanceTypes/{instance_type}`, such as
371    /// `instanceTypes/gp1.core.2`: one whose `available` is true. Changing it
372    /// needs the instance `instance::State::Stopped`.
373    #[prost(string, tag = "3")]
374    pub instance_type: ::prost::alloc::string::String,
375    /// The image the boot volume is created from, in the instance's zone: one
376    /// of the project's own, `projects/{project}/zones/{zone}/images/{image}`,
377    /// or a public one, `zones/{zone}/images/{image}`. Set exactly one of
378    /// `image` and `image_family`; launched from a family, this is the public
379    /// image the family resolved to.
380    #[prost(string, tag = "4")]
381    pub image: ::prost::alloc::string::String,
382    /// The image family to launch the current public image of,
383    /// `imageFamilies/{image_family}`. Set exactly one of `image` and
384    /// `image_family`. Empty when the instance was launched from an image.
385    #[prost(string, tag = "5")]
386    pub image_family: ::prost::alloc::string::String,
387    /// The key pair whose public key is installed for `login_user`, in the
388    /// instance's project.
389    #[prost(string, tag = "6")]
390    pub key_pair: ::prost::alloc::string::String,
391    /// The account to log in as: a user created at first boot that holds the
392    /// key pair. A POSIX user name of at most 32 lowercase letters, digits,
393    /// underscores and hyphens, starting with a letter or an underscore, and
394    /// not `root`. The image's `default_user` when left empty.
395    #[prost(string, tag = "7")]
396    pub login_user: ::prost::alloc::string::String,
397    /// The boot volume: its size and storage class at launch, and the volume.
398    /// The image's size on the default storage class when left out.
399    #[prost(message, optional, tag = "8")]
400    pub boot_volume: ::core::option::Option<BootVolume>,
401    /// The network interfaces, in device order, the boot interface first;
402    /// exactly one today. Each is an existing interface in the instance's
403    /// project and zone that nothing else holds, created with the network
404    /// service: its subnet and security groups are the instance's.
405    /// Terminating the instance releases it, and it stays. An instance
406    /// launched before interfaces were named at launch shows the interface
407    /// created for it, which is deleted with the instance.
408    #[prost(string, repeated, tag = "9")]
409    pub network_interfaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
410    /// Where the instance is in its lifecycle.
411    #[prost(enumeration = "instance::State", tag = "10")]
412    pub state: i32,
413    /// Why the instance is `instance::State::Failed`, or why a `instance::State::Stopped` instance went down
414    /// when the machine it ran on failed; empty otherwise.
415    #[prost(string, tag = "11")]
416    pub state_reason: ::prost::alloc::string::String,
417    /// Whether the platform can currently confirm the instance is working,
418    /// which `state` doesn't say: a `instance::State::Running` instance on a machine that
419    /// stopped answering is still `instance::State::Running`.
420    #[prost(message, optional, tag = "12")]
421    pub health: ::core::option::Option<InstanceHealth>,
422    /// When the instance was launched.
423    #[prost(message, optional, tag = "13")]
424    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
425    /// The principal that launched the instance, such as `user:<id>` or
426    /// `service_account:<id>`.
427    #[prost(string, tag = "14")]
428    pub creator: ::prost::alloc::string::String,
429    /// Labels of your own, at most 50. The `origin:name` tag is the name the
430    /// console shows.
431    #[prost(btree_map = "string, string", tag = "15")]
432    pub tags: ::prost::alloc::collections::BTreeMap<
433        ::prost::alloc::string::String,
434        ::prost::alloc::string::String,
435    >,
436    /// Each network interface's private addresses, in the order of
437    /// `network_interfaces`; an interface not attached yet has none.
438    #[prost(message, repeated, tag = "16")]
439    pub interface_addresses: ::prost::alloc::vec::Vec<InterfaceAddresses>,
440    /// The service account the instance runs as,
441    /// `organizations/{organization}/serviceAccounts/{service_account}`: a
442    /// `WORKLOAD` service account of the instance's organization that isn't
443    /// deleted. Launching with one needs `iam.service_account.act_as` on the
444    /// organization as well. Empty for an instance that runs as none.
445    #[prost(string, tag = "17")]
446    pub service_account: ::prost::alloc::string::String,
447}
448/// Nested message and enum types in `Instance`.
449pub mod instance {
450    /// Where the instance is in its lifecycle.
451    #[derive(
452        Clone,
453        Copy,
454        Debug,
455        PartialEq,
456        Eq,
457        Hash,
458        PartialOrd,
459        Ord,
460        ::prost::Enumeration
461    )]
462    #[repr(i32)]
463    pub enum State {
464        /// Not set.
465        Unspecified = 0,
466        /// Its boot volume and network interface are being created; it starts
467        /// on its own once they are ready.
468        Initializing = 1,
469        /// Being placed on a machine and booted.
470        Pending = 2,
471        /// Running.
472        Running = 3,
473        /// Shutting down, to `instance::State::Stopped`.
474        Stopping = 4,
475        /// Stopped: it holds its volumes and addresses, and no compute capacity
476        /// is charged.
477        Stopped = 5,
478        /// Being terminated.
479        ShuttingDown = 6,
480        /// Terminated. Readable by name for a day.
481        Terminated = 7,
482        /// A start, a stop or the launch failed; `state_reason` says why. Start
483        /// it again, or delete it.
484        Failed = 8,
485    }
486    impl State {
487        /// String value of the enum field names used in the ProtoBuf definition.
488        ///
489        /// The values are not transformed in any way and thus are considered stable
490        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
491        pub fn as_str_name(&self) -> &'static str {
492            match self {
493                Self::Unspecified => "STATE_UNSPECIFIED",
494                Self::Initializing => "INITIALIZING",
495                Self::Pending => "PENDING",
496                Self::Running => "RUNNING",
497                Self::Stopping => "STOPPING",
498                Self::Stopped => "STOPPED",
499                Self::ShuttingDown => "SHUTTING_DOWN",
500                Self::Terminated => "TERMINATED",
501                Self::Failed => "FAILED",
502            }
503        }
504        /// Creates an enum from field names used in the ProtoBuf definition.
505        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
506            match value {
507                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
508                "INITIALIZING" => Some(Self::Initializing),
509                "PENDING" => Some(Self::Pending),
510                "RUNNING" => Some(Self::Running),
511                "STOPPING" => Some(Self::Stopping),
512                "STOPPED" => Some(Self::Stopped),
513                "SHUTTING_DOWN" => Some(Self::ShuttingDown),
514                "TERMINATED" => Some(Self::Terminated),
515                "FAILED" => Some(Self::Failed),
516                _ => None,
517            }
518        }
519    }
520}
521/// An instance's boot volume.
522#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
523pub struct BootVolume {
524    /// The size in GiB the volume was created with, at least the image's
525    /// size; the image's size when left at 0. Grow the volume itself to
526    /// resize it; this keeps the size at launch.
527    #[prost(int32, tag = "1")]
528    pub size_gib: i32,
529    /// The storage class, `storageClasses/{storage_class}` of the persistent
530    /// volume service; the default class when left empty.
531    #[prost(string, tag = "2")]
532    pub storage_class: ::prost::alloc::string::String,
533    /// The volume, in the instance's project and zone.
534    #[prost(string, tag = "3")]
535    pub volume: ::prost::alloc::string::String,
536}
537/// The private addresses of one of an instance's network interfaces.
538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
539pub struct InterfaceAddresses {
540    /// The network interface.
541    #[prost(string, tag = "1")]
542    pub network_interface: ::prost::alloc::string::String,
543    /// Its private IPv4 address.
544    #[prost(string, tag = "2")]
545    pub ipv4_address: ::prost::alloc::string::String,
546    /// Its IPv6 address.
547    #[prost(string, tag = "3")]
548    pub ipv6_address: ::prost::alloc::string::String,
549}
550/// An instance's health: each check, and their summary.
551#[derive(Clone, PartialEq, ::prost::Message)]
552pub struct InstanceHealth {
553    /// The summary of `checks`, for a listing that shows one value per
554    /// instance. Only the checks say whether a problem is the platform's or
555    /// the instance's own.
556    #[prost(enumeration = "instance_health::Availability", tag = "1")]
557    pub availability: i32,
558    /// Every check, always all of them: one with nothing to report is
559    /// `instance_health::Availability::NotApplicable` or `health_check::Outcome::InsufficientData`, never left out.
560    #[prost(message, repeated, tag = "2")]
561    pub checks: ::prost::alloc::vec::Vec<HealthCheck>,
562}
563/// Nested message and enum types in `InstanceHealth`.
564pub mod instance_health {
565    /// The summary of the checks.
566    #[derive(
567        Clone,
568        Copy,
569        Debug,
570        PartialEq,
571        Eq,
572        Hash,
573        PartialOrd,
574        Ord,
575        ::prost::Enumeration
576    )]
577    #[repr(i32)]
578    pub enum Availability {
579        /// Not set.
580        Unspecified = 0,
581        /// Every check that applies passed.
582        Available = 1,
583        /// A check failed.
584        Impaired = 2,
585        /// A check that applies has no recent observation.
586        Unknown = 3,
587        /// No check applies, as for a stopped instance.
588        NotApplicable = 4,
589    }
590    impl Availability {
591        /// String value of the enum field names used in the ProtoBuf definition.
592        ///
593        /// The values are not transformed in any way and thus are considered stable
594        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
595        pub fn as_str_name(&self) -> &'static str {
596            match self {
597                Self::Unspecified => "AVAILABILITY_UNSPECIFIED",
598                Self::Available => "AVAILABLE",
599                Self::Impaired => "IMPAIRED",
600                Self::Unknown => "UNKNOWN",
601                Self::NotApplicable => "NOT_APPLICABLE",
602            }
603        }
604        /// Creates an enum from field names used in the ProtoBuf definition.
605        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
606            match value {
607                "AVAILABILITY_UNSPECIFIED" => Some(Self::Unspecified),
608                "AVAILABLE" => Some(Self::Available),
609                "IMPAIRED" => Some(Self::Impaired),
610                "UNKNOWN" => Some(Self::Unknown),
611                "NOT_APPLICABLE" => Some(Self::NotApplicable),
612                _ => None,
613            }
614        }
615    }
616}
617/// One health check of an instance.
618#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
619pub struct HealthCheck {
620    /// What the check observes.
621    #[prost(enumeration = "health_check::Kind", tag = "1")]
622    pub kind: i32,
623    /// Whose the subject is, derived from `kind`.
624    #[prost(enumeration = "health_check::Category", tag = "2")]
625    pub category: i32,
626    /// Its outcome.
627    #[prost(enumeration = "health_check::Outcome", tag = "3")]
628    pub outcome: i32,
629    /// When the check came to `outcome`; empty while nothing has observed it.
630    #[prost(message, optional, tag = "4")]
631    pub change_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
632}
633/// Nested message and enum types in `HealthCheck`.
634pub mod health_check {
635    /// What a check observes.
636    #[derive(
637        Clone,
638        Copy,
639        Debug,
640        PartialEq,
641        Eq,
642        Hash,
643        PartialOrd,
644        Ord,
645        ::prost::Enumeration
646    )]
647    #[repr(i32)]
648    pub enum Kind {
649        /// Not set.
650        Unspecified = 0,
651        /// The machine the instance runs on answers.
652        HostReachable = 1,
653        /// The machine reports the virtual machine in the state it should be in.
654        DomainState = 2,
655        /// The instance answers on its network interface.
656        NetworkReachable = 3,
657        /// The agent in the guest answers.
658        GuestAgent = 4,
659        /// The virtual machine exists on its machine.
660        GuestPresent = 5,
661    }
662    impl Kind {
663        /// String value of the enum field names used in the ProtoBuf definition.
664        ///
665        /// The values are not transformed in any way and thus are considered stable
666        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
667        pub fn as_str_name(&self) -> &'static str {
668            match self {
669                Self::Unspecified => "KIND_UNSPECIFIED",
670                Self::HostReachable => "HOST_REACHABLE",
671                Self::DomainState => "DOMAIN_STATE",
672                Self::NetworkReachable => "NETWORK_REACHABLE",
673                Self::GuestAgent => "GUEST_AGENT",
674                Self::GuestPresent => "GUEST_PRESENT",
675            }
676        }
677        /// Creates an enum from field names used in the ProtoBuf definition.
678        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
679            match value {
680                "KIND_UNSPECIFIED" => Some(Self::Unspecified),
681                "HOST_REACHABLE" => Some(Self::HostReachable),
682                "DOMAIN_STATE" => Some(Self::DomainState),
683                "NETWORK_REACHABLE" => Some(Self::NetworkReachable),
684                "GUEST_AGENT" => Some(Self::GuestAgent),
685                "GUEST_PRESENT" => Some(Self::GuestPresent),
686                _ => None,
687            }
688        }
689    }
690    /// Whose a check's subject is.
691    #[derive(
692        Clone,
693        Copy,
694        Debug,
695        PartialEq,
696        Eq,
697        Hash,
698        PartialOrd,
699        Ord,
700        ::prost::Enumeration
701    )]
702    #[repr(i32)]
703    pub enum Category {
704        /// Not set.
705        Unspecified = 0,
706        /// The platform underneath the instance.
707        System = 1,
708        /// The instance's own operating system and network configuration.
709        Instance = 2,
710    }
711    impl Category {
712        /// String value of the enum field names used in the ProtoBuf definition.
713        ///
714        /// The values are not transformed in any way and thus are considered stable
715        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
716        pub fn as_str_name(&self) -> &'static str {
717            match self {
718                Self::Unspecified => "CATEGORY_UNSPECIFIED",
719                Self::System => "SYSTEM",
720                Self::Instance => "INSTANCE",
721            }
722        }
723        /// Creates an enum from field names used in the ProtoBuf definition.
724        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
725            match value {
726                "CATEGORY_UNSPECIFIED" => Some(Self::Unspecified),
727                "SYSTEM" => Some(Self::System),
728                "INSTANCE" => Some(Self::Instance),
729                _ => None,
730            }
731        }
732    }
733    /// A check's outcome.
734    #[derive(
735        Clone,
736        Copy,
737        Debug,
738        PartialEq,
739        Eq,
740        Hash,
741        PartialOrd,
742        Ord,
743        ::prost::Enumeration
744    )]
745    #[repr(i32)]
746    pub enum Outcome {
747        /// Not set.
748        Unspecified = 0,
749        /// Passed.
750        Ok = 1,
751        /// Failed.
752        Impaired = 2,
753        /// No recent observation.
754        InsufficientData = 3,
755        /// The check doesn't apply now.
756        NotApplicable = 4,
757    }
758    impl Outcome {
759        /// String value of the enum field names used in the ProtoBuf definition.
760        ///
761        /// The values are not transformed in any way and thus are considered stable
762        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
763        pub fn as_str_name(&self) -> &'static str {
764            match self {
765                Self::Unspecified => "OUTCOME_UNSPECIFIED",
766                Self::Ok => "OK",
767                Self::Impaired => "IMPAIRED",
768                Self::InsufficientData => "INSUFFICIENT_DATA",
769                Self::NotApplicable => "NOT_APPLICABLE",
770            }
771        }
772        /// Creates an enum from field names used in the ProtoBuf definition.
773        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
774            match value {
775                "OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
776                "OK" => Some(Self::Ok),
777                "IMPAIRED" => Some(Self::Impaired),
778                "INSUFFICIENT_DATA" => Some(Self::InsufficientData),
779                "NOT_APPLICABLE" => Some(Self::NotApplicable),
780                _ => None,
781            }
782        }
783    }
784}
785/// The request for GetInstance.
786#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
787pub struct GetInstanceRequest {
788    /// The instance to return.
789    #[prost(string, tag = "1")]
790    pub name: ::prost::alloc::string::String,
791}
792/// The request for ListInstances.
793#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
794pub struct ListInstancesRequest {
795    /// The zone whose instances to list, `projects/{project}/zones/{zone}`.
796    #[prost(string, tag = "1")]
797    pub parent: ::prost::alloc::string::String,
798    /// The most instances to return; the server clamps it, and 0 means its
799    /// default.
800    #[prost(int32, tag = "2")]
801    pub page_size: i32,
802    /// A previous response's `next_page_token`, for the page after it.
803    #[prost(string, tag = "3")]
804    pub page_token: ::prost::alloc::string::String,
805}
806/// The response for ListInstances.
807#[derive(Clone, PartialEq, ::prost::Message)]
808pub struct ListInstancesResponse {
809    /// The instances on this page.
810    #[prost(message, repeated, tag = "1")]
811    pub instances: ::prost::alloc::vec::Vec<Instance>,
812    /// The token for the next page; empty on the last one.
813    #[prost(string, tag = "2")]
814    pub next_page_token: ::prost::alloc::string::String,
815}
816/// The request for CreateInstance.
817#[derive(Clone, PartialEq, ::prost::Message)]
818pub struct CreateInstanceRequest {
819    /// The zone to launch the instance in, `projects/{project}/zones/{zone}`.
820    #[prost(string, tag = "1")]
821    pub parent: ::prost::alloc::string::String,
822    /// The instance to launch: its type, its image or image family, its key
823    /// pair and its network interface, and optionally its login user, boot
824    /// volume and tags.
825    #[prost(message, optional, tag = "2")]
826    pub instance: ::core::option::Option<Instance>,
827    /// A UUID; a repeat with the same id returns the first request's
828    /// operation instead of launching a second instance.
829    #[prost(string, tag = "3")]
830    pub request_id: ::prost::alloc::string::String,
831}
832/// The request for UpdateInstance.
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct UpdateInstanceRequest {
835    /// The instance, by its name, with the fields to change.
836    #[prost(message, optional, tag = "1")]
837    pub instance: ::core::option::Option<Instance>,
838    /// The fields to change: `instance_type`, `tags`, or both. `*` is both.
839    #[prost(message, optional, tag = "2")]
840    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
841    /// A UUID; a repeat with the same id returns the first request's
842    /// operation instead of changing the instance again.
843    #[prost(string, tag = "3")]
844    pub request_id: ::prost::alloc::string::String,
845}
846/// The request for DeleteInstance.
847#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
848pub struct DeleteInstanceRequest {
849    /// The instance to terminate.
850    #[prost(string, tag = "1")]
851    pub name: ::prost::alloc::string::String,
852    /// A UUID; a repeat with the same id returns the first request's
853    /// operation.
854    #[prost(string, tag = "2")]
855    pub request_id: ::prost::alloc::string::String,
856}
857/// The request for StartInstance.
858#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
859pub struct StartInstanceRequest {
860    /// The instance to start.
861    #[prost(string, tag = "1")]
862    pub name: ::prost::alloc::string::String,
863    /// A UUID; a repeat with the same id returns the first request's
864    /// operation.
865    #[prost(string, tag = "2")]
866    pub request_id: ::prost::alloc::string::String,
867}
868/// The request for StopInstance.
869#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
870pub struct StopInstanceRequest {
871    /// The instance to stop.
872    #[prost(string, tag = "1")]
873    pub name: ::prost::alloc::string::String,
874    /// A UUID; a repeat with the same id returns the first request's
875    /// operation.
876    #[prost(string, tag = "2")]
877    pub request_id: ::prost::alloc::string::String,
878}
879/// An SSH public key, and on creation the private key generated for it.
880#[derive(Clone, PartialEq, ::prost::Message)]
881pub struct KeyPair {
882    /// The key pair's resource name.
883    #[prost(string, tag = "1")]
884    pub name: ::prost::alloc::string::String,
885    /// The key pair's URN, the identifier access policies and the audit log
886    /// use.
887    #[prost(string, tag = "2")]
888    pub urn: ::prost::alloc::string::String,
889    /// The OpenSSH public key line, such as `ssh-ed25519 AAAA... comment`.
890    /// Left empty, the platform generates the key pair.
891    #[prost(string, tag = "3")]
892    pub public_key: ::prost::alloc::string::String,
893    /// The generated private key in OpenSSH format, in the response that
894    /// generated it and never again: the platform keeps only the public key.
895    /// Empty in every other response.
896    #[prost(string, tag = "4")]
897    pub private_key: ::prost::alloc::string::String,
898    /// The principal that created the key pair, such as `user:<id>` or
899    /// `service_account:<id>`.
900    #[prost(string, tag = "5")]
901    pub creator: ::prost::alloc::string::String,
902    /// Labels of your own, at most 50. The `origin:name` tag is the name the
903    /// console shows, and the comment of a generated key.
904    #[prost(btree_map = "string, string", tag = "6")]
905    pub tags: ::prost::alloc::collections::BTreeMap<
906        ::prost::alloc::string::String,
907        ::prost::alloc::string::String,
908    >,
909}
910/// The request for GetKeyPair.
911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
912pub struct GetKeyPairRequest {
913    /// The key pair to return.
914    #[prost(string, tag = "1")]
915    pub name: ::prost::alloc::string::String,
916}
917/// The request for ListKeyPairs.
918#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
919pub struct ListKeyPairsRequest {
920    /// The project whose key pairs to list, `projects/{project}`.
921    #[prost(string, tag = "1")]
922    pub parent: ::prost::alloc::string::String,
923    /// The most key pairs to return; the server clamps it, and 0 means its
924    /// default.
925    #[prost(int32, tag = "2")]
926    pub page_size: i32,
927    /// A previous response's `next_page_token`, for the page after it.
928    #[prost(string, tag = "3")]
929    pub page_token: ::prost::alloc::string::String,
930}
931/// The response for ListKeyPairs.
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct ListKeyPairsResponse {
934    /// The key pairs on this page.
935    #[prost(message, repeated, tag = "1")]
936    pub key_pairs: ::prost::alloc::vec::Vec<KeyPair>,
937    /// The token for the next page; empty on the last one.
938    #[prost(string, tag = "2")]
939    pub next_page_token: ::prost::alloc::string::String,
940}
941/// The request for CreateKeyPair.
942#[derive(Clone, PartialEq, ::prost::Message)]
943pub struct CreateKeyPairRequest {
944    /// The project to create the key pair in, `projects/{project}`.
945    #[prost(string, tag = "1")]
946    pub parent: ::prost::alloc::string::String,
947    /// The key pair to create: the public key to import, or none to generate
948    /// one, and optionally its tags.
949    #[prost(message, optional, tag = "2")]
950    pub key_pair: ::core::option::Option<KeyPair>,
951    /// A UUID; a repeat with the same id creates no second key pair. A repeat
952    /// importing a key returns the first request's key pair; a repeat
953    /// generating one is refused with `CONFLICT`, as the private key went to
954    /// the first request only, and the error's `ErrorInfo` metadata names the
955    /// key pair under `keyPair`.
956    #[prost(string, tag = "3")]
957    pub request_id: ::prost::alloc::string::String,
958}
959/// The request for UpdateKeyPair.
960#[derive(Clone, PartialEq, ::prost::Message)]
961pub struct UpdateKeyPairRequest {
962    /// The key pair, by its name, with the tags to set.
963    #[prost(message, optional, tag = "1")]
964    pub key_pair: ::core::option::Option<KeyPair>,
965    /// The fields to change: `tags`, the only field that changes. `*` is the
966    /// same.
967    #[prost(message, optional, tag = "2")]
968    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
969}
970/// The request for DeleteKeyPair.
971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
972pub struct DeleteKeyPairRequest {
973    /// The key pair to delete.
974    #[prost(string, tag = "1")]
975    pub name: ::prost::alloc::string::String,
976}
977/// One of the platform's images, in one zone.
978#[derive(Clone, PartialEq, ::prost::Message)]
979pub struct PublicImage {
980    /// The image's resource name, `zones/{zone}/images/{image}`.
981    #[prost(string, tag = "1")]
982    pub name: ::prost::alloc::string::String,
983    /// The image's URN, the identifier access policies and the audit log use.
984    #[prost(string, tag = "2")]
985    pub urn: ::prost::alloc::string::String,
986    /// What the image holds.
987    #[prost(string, tag = "3")]
988    pub description: ::prost::alloc::string::String,
989    /// The account an instance launched from the image logs in as, unless the
990    /// launch names another.
991    #[prost(string, tag = "4")]
992    pub default_user: ::prost::alloc::string::String,
993    /// The device name of the disk the image boots from.
994    #[prost(string, tag = "5")]
995    pub root_device: ::prost::alloc::string::String,
996    /// The image's disks, each created for an instance launched from it.
997    #[prost(message, repeated, tag = "6")]
998    pub block_devices: ::prost::alloc::vec::Vec<PublicImageBlockDevice>,
999    /// The CPU architecture it boots on.
1000    #[prost(enumeration = "image::Architecture", tag = "7")]
1001    pub architecture: i32,
1002    /// Its operating system family.
1003    #[prost(enumeration = "image::Platform", tag = "8")]
1004    pub platform: i32,
1005    /// Where it is in its lifecycle.
1006    #[prost(enumeration = "image::State", tag = "9")]
1007    pub state: i32,
1008    /// The family the image belongs to, `imageFamilies/{image_family}`; empty
1009    /// for an image of none.
1010    #[prost(string, tag = "10")]
1011    pub image_family: ::prost::alloc::string::String,
1012    /// Whether `image_family` launches this image now.
1013    #[prost(bool, tag = "11")]
1014    pub family_current: bool,
1015}
1016/// A disk of a public image.
1017#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1018pub struct PublicImageBlockDevice {
1019    /// The device name the disk appears under on every instance launched from
1020    /// the image.
1021    #[prost(string, tag = "1")]
1022    pub device: ::prost::alloc::string::String,
1023    /// The disk's size in GiB.
1024    #[prost(int32, tag = "2")]
1025    pub size_gib: i32,
1026}
1027/// The request for GetPublicImage.
1028#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1029pub struct GetPublicImageRequest {
1030    /// The image to return, `zones/{zone}/images/{image}`.
1031    #[prost(string, tag = "1")]
1032    pub name: ::prost::alloc::string::String,
1033}
1034/// The request for ListPublicImages.
1035#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1036pub struct ListPublicImagesRequest {
1037    /// The zone whose public images to list, `zones/{zone}`.
1038    #[prost(string, tag = "1")]
1039    pub parent: ::prost::alloc::string::String,
1040    /// The most images to return; the server clamps it, and 0 means its
1041    /// default.
1042    #[prost(int32, tag = "2")]
1043    pub page_size: i32,
1044    /// A previous response's `next_page_token`, for the page after it.
1045    #[prost(string, tag = "3")]
1046    pub page_token: ::prost::alloc::string::String,
1047}
1048/// The response for ListPublicImages.
1049#[derive(Clone, PartialEq, ::prost::Message)]
1050pub struct ListPublicImagesResponse {
1051    /// The images on this page.
1052    #[prost(message, repeated, tag = "1")]
1053    pub public_images: ::prost::alloc::vec::Vec<PublicImage>,
1054    /// The token for the next page; empty on the last one.
1055    #[prost(string, tag = "2")]
1056    pub next_page_token: ::prost::alloc::string::String,
1057}
1058/// A volume an instance holds.
1059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1060pub struct VolumeAttachment {
1061    /// The attachment's resource name.
1062    #[prost(string, tag = "1")]
1063    pub name: ::prost::alloc::string::String,
1064    /// The attachment's URN, the identifier access policies and the audit log
1065    /// use.
1066    #[prost(string, tag = "2")]
1067    pub urn: ::prost::alloc::string::String,
1068    /// The volume, in the instance's project and zone.
1069    #[prost(string, tag = "3")]
1070    pub volume: ::prost::alloc::string::String,
1071    /// The device name the guest sees the volume under, `vda` to `vdz`. The
1072    /// first free one when left empty.
1073    #[prost(string, tag = "4")]
1074    pub device: ::prost::alloc::string::String,
1075    /// Whether this is the instance's boot volume, which was attached at
1076    /// launch and can't be detached.
1077    #[prost(bool, tag = "5")]
1078    pub boot: bool,
1079    /// Where the attachment is.
1080    #[prost(enumeration = "volume_attachment::State", tag = "6")]
1081    pub state: i32,
1082}
1083/// Nested message and enum types in `VolumeAttachment`.
1084pub mod volume_attachment {
1085    /// Where the attachment is.
1086    #[derive(
1087        Clone,
1088        Copy,
1089        Debug,
1090        PartialEq,
1091        Eq,
1092        Hash,
1093        PartialOrd,
1094        Ord,
1095        ::prost::Enumeration
1096    )]
1097    #[repr(i32)]
1098    pub enum State {
1099        /// Not set.
1100        Unspecified = 0,
1101        /// The volume is being created or claimed for the instance.
1102        Creating = 1,
1103        /// Being added to the running guest.
1104        Attaching = 2,
1105        /// Attached.
1106        Attached = 3,
1107        /// Being removed from the running guest.
1108        Detaching = 4,
1109        /// Being released, as the instance is terminated.
1110        Releasing = 5,
1111        /// The platform stopped trying to release the volume, which may still
1112        /// be held.
1113        ReleaseAbandoned = 6,
1114        /// The volume couldn't be attached, and was released.
1115        Failed = 7,
1116    }
1117    impl State {
1118        /// String value of the enum field names used in the ProtoBuf definition.
1119        ///
1120        /// The values are not transformed in any way and thus are considered stable
1121        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1122        pub fn as_str_name(&self) -> &'static str {
1123            match self {
1124                Self::Unspecified => "STATE_UNSPECIFIED",
1125                Self::Creating => "CREATING",
1126                Self::Attaching => "ATTACHING",
1127                Self::Attached => "ATTACHED",
1128                Self::Detaching => "DETACHING",
1129                Self::Releasing => "RELEASING",
1130                Self::ReleaseAbandoned => "RELEASE_ABANDONED",
1131                Self::Failed => "FAILED",
1132            }
1133        }
1134        /// Creates an enum from field names used in the ProtoBuf definition.
1135        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1136            match value {
1137                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1138                "CREATING" => Some(Self::Creating),
1139                "ATTACHING" => Some(Self::Attaching),
1140                "ATTACHED" => Some(Self::Attached),
1141                "DETACHING" => Some(Self::Detaching),
1142                "RELEASING" => Some(Self::Releasing),
1143                "RELEASE_ABANDONED" => Some(Self::ReleaseAbandoned),
1144                "FAILED" => Some(Self::Failed),
1145                _ => None,
1146            }
1147        }
1148    }
1149}
1150/// The request for GetVolumeAttachment.
1151#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1152pub struct GetVolumeAttachmentRequest {
1153    /// The attachment to return.
1154    #[prost(string, tag = "1")]
1155    pub name: ::prost::alloc::string::String,
1156}
1157/// The request for ListVolumeAttachments.
1158#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1159pub struct ListVolumeAttachmentsRequest {
1160    /// The instance whose attachments to list,
1161    /// `projects/{project}/zones/{zone}/instances/{instance}`, or `-` for the
1162    /// instance to list every instance's in the zone.
1163    #[prost(string, tag = "1")]
1164    pub parent: ::prost::alloc::string::String,
1165    /// The most attachments to return; the server clamps it, and 0 means its
1166    /// default.
1167    #[prost(int32, tag = "2")]
1168    pub page_size: i32,
1169    /// A previous response's `next_page_token`, for the page after it.
1170    #[prost(string, tag = "3")]
1171    pub page_token: ::prost::alloc::string::String,
1172    /// Only the attachments of this volume; every volume's when left empty.
1173    #[prost(string, tag = "4")]
1174    pub volume: ::prost::alloc::string::String,
1175}
1176/// The response for ListVolumeAttachments.
1177#[derive(Clone, PartialEq, ::prost::Message)]
1178pub struct ListVolumeAttachmentsResponse {
1179    /// The attachments on this page.
1180    #[prost(message, repeated, tag = "1")]
1181    pub volume_attachments: ::prost::alloc::vec::Vec<VolumeAttachment>,
1182    /// The token for the next page; empty on the last one.
1183    #[prost(string, tag = "2")]
1184    pub next_page_token: ::prost::alloc::string::String,
1185}
1186/// The request for CreateVolumeAttachment.
1187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1188pub struct CreateVolumeAttachmentRequest {
1189    /// The instance to attach the volume to,
1190    /// `projects/{project}/zones/{zone}/instances/{instance}`.
1191    #[prost(string, tag = "1")]
1192    pub parent: ::prost::alloc::string::String,
1193    /// The attachment to create: its volume, and optionally its device name.
1194    #[prost(message, optional, tag = "2")]
1195    pub volume_attachment: ::core::option::Option<VolumeAttachment>,
1196    /// A UUID; a repeat with the same id returns the first request's
1197    /// operation instead of attaching again.
1198    #[prost(string, tag = "3")]
1199    pub request_id: ::prost::alloc::string::String,
1200}
1201/// The request for DeleteVolumeAttachment.
1202#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1203pub struct DeleteVolumeAttachmentRequest {
1204    /// The attachment to delete, detaching its volume.
1205    #[prost(string, tag = "1")]
1206    pub name: ::prost::alloc::string::String,
1207    /// A UUID; a repeat with the same id returns the first request's
1208    /// operation.
1209    #[prost(string, tag = "2")]
1210    pub request_id: ::prost::alloc::string::String,
1211}
1212impl serde::Serialize for BootVolume {
1213    #[allow(deprecated)]
1214    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1215    where
1216        S: serde::Serializer,
1217    {
1218        use serde::ser::SerializeStruct;
1219        let mut len = 0;
1220        if self.size_gib != 0 {
1221            len += 1;
1222        }
1223        if !self.storage_class.is_empty() {
1224            len += 1;
1225        }
1226        if !self.volume.is_empty() {
1227            len += 1;
1228        }
1229        let mut struct_ser = serializer
1230            .serialize_struct("origincloud.compute.v1beta1.BootVolume", len)?;
1231        if self.size_gib != 0 {
1232            struct_ser.serialize_field("sizeGib", &self.size_gib)?;
1233        }
1234        if !self.storage_class.is_empty() {
1235            struct_ser.serialize_field("storageClass", &self.storage_class)?;
1236        }
1237        if !self.volume.is_empty() {
1238            struct_ser.serialize_field("volume", &self.volume)?;
1239        }
1240        struct_ser.end()
1241    }
1242}
1243impl<'de> serde::Deserialize<'de> for BootVolume {
1244    #[allow(deprecated)]
1245    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1246    where
1247        D: serde::Deserializer<'de>,
1248    {
1249        const FIELDS: &[&str] = &[
1250            "size_gib",
1251            "sizeGib",
1252            "storage_class",
1253            "storageClass",
1254            "volume",
1255        ];
1256        #[allow(clippy::enum_variant_names)]
1257        enum GeneratedField {
1258            SizeGib,
1259            StorageClass,
1260            Volume,
1261            __SkipField__,
1262        }
1263        impl<'de> serde::Deserialize<'de> for GeneratedField {
1264            fn deserialize<D>(
1265                deserializer: D,
1266            ) -> std::result::Result<GeneratedField, D::Error>
1267            where
1268                D: serde::Deserializer<'de>,
1269            {
1270                struct GeneratedVisitor;
1271                impl serde::de::Visitor<'_> for GeneratedVisitor {
1272                    type Value = GeneratedField;
1273                    fn expecting(
1274                        &self,
1275                        formatter: &mut std::fmt::Formatter<'_>,
1276                    ) -> std::fmt::Result {
1277                        write!(formatter, "expected one of: {:?}", & FIELDS)
1278                    }
1279                    #[allow(unused_variables)]
1280                    fn visit_str<E>(
1281                        self,
1282                        value: &str,
1283                    ) -> std::result::Result<GeneratedField, E>
1284                    where
1285                        E: serde::de::Error,
1286                    {
1287                        match value {
1288                            "sizeGib" | "size_gib" => Ok(GeneratedField::SizeGib),
1289                            "storageClass" | "storage_class" => {
1290                                Ok(GeneratedField::StorageClass)
1291                            }
1292                            "volume" => Ok(GeneratedField::Volume),
1293                            _ => Ok(GeneratedField::__SkipField__),
1294                        }
1295                    }
1296                }
1297                deserializer.deserialize_identifier(GeneratedVisitor)
1298            }
1299        }
1300        struct GeneratedVisitor;
1301        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1302            type Value = BootVolume;
1303            fn expecting(
1304                &self,
1305                formatter: &mut std::fmt::Formatter<'_>,
1306            ) -> std::fmt::Result {
1307                formatter.write_str("struct origincloud.compute.v1beta1.BootVolume")
1308            }
1309            fn visit_map<V>(
1310                self,
1311                mut map_: V,
1312            ) -> std::result::Result<BootVolume, V::Error>
1313            where
1314                V: serde::de::MapAccess<'de>,
1315            {
1316                let mut size_gib__ = None;
1317                let mut storage_class__ = None;
1318                let mut volume__ = None;
1319                while let Some(k) = map_.next_key()? {
1320                    match k {
1321                        GeneratedField::SizeGib => {
1322                            if size_gib__.is_some() {
1323                                return Err(serde::de::Error::duplicate_field("sizeGib"));
1324                            }
1325                            size_gib__ = Some(
1326                                map_
1327                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
1328                                    .0,
1329                            );
1330                        }
1331                        GeneratedField::StorageClass => {
1332                            if storage_class__.is_some() {
1333                                return Err(
1334                                    serde::de::Error::duplicate_field("storageClass"),
1335                                );
1336                            }
1337                            storage_class__ = Some(map_.next_value()?);
1338                        }
1339                        GeneratedField::Volume => {
1340                            if volume__.is_some() {
1341                                return Err(serde::de::Error::duplicate_field("volume"));
1342                            }
1343                            volume__ = Some(map_.next_value()?);
1344                        }
1345                        GeneratedField::__SkipField__ => {
1346                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1347                        }
1348                    }
1349                }
1350                Ok(BootVolume {
1351                    size_gib: size_gib__.unwrap_or_default(),
1352                    storage_class: storage_class__.unwrap_or_default(),
1353                    volume: volume__.unwrap_or_default(),
1354                })
1355            }
1356        }
1357        deserializer
1358            .deserialize_struct(
1359                "origincloud.compute.v1beta1.BootVolume",
1360                FIELDS,
1361                GeneratedVisitor,
1362            )
1363    }
1364}
1365impl serde::Serialize for CreateImageRequest {
1366    #[allow(deprecated)]
1367    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1368    where
1369        S: serde::Serializer,
1370    {
1371        use serde::ser::SerializeStruct;
1372        let mut len = 0;
1373        if !self.parent.is_empty() {
1374            len += 1;
1375        }
1376        if self.image.is_some() {
1377            len += 1;
1378        }
1379        if !self.request_id.is_empty() {
1380            len += 1;
1381        }
1382        let mut struct_ser = serializer
1383            .serialize_struct("origincloud.compute.v1beta1.CreateImageRequest", len)?;
1384        if !self.parent.is_empty() {
1385            struct_ser.serialize_field("parent", &self.parent)?;
1386        }
1387        if let Some(v) = self.image.as_ref() {
1388            struct_ser.serialize_field("image", v)?;
1389        }
1390        if !self.request_id.is_empty() {
1391            struct_ser.serialize_field("requestId", &self.request_id)?;
1392        }
1393        struct_ser.end()
1394    }
1395}
1396impl<'de> serde::Deserialize<'de> for CreateImageRequest {
1397    #[allow(deprecated)]
1398    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1399    where
1400        D: serde::Deserializer<'de>,
1401    {
1402        const FIELDS: &[&str] = &["parent", "image", "request_id", "requestId"];
1403        #[allow(clippy::enum_variant_names)]
1404        enum GeneratedField {
1405            Parent,
1406            Image,
1407            RequestId,
1408            __SkipField__,
1409        }
1410        impl<'de> serde::Deserialize<'de> for GeneratedField {
1411            fn deserialize<D>(
1412                deserializer: D,
1413            ) -> std::result::Result<GeneratedField, D::Error>
1414            where
1415                D: serde::Deserializer<'de>,
1416            {
1417                struct GeneratedVisitor;
1418                impl serde::de::Visitor<'_> for GeneratedVisitor {
1419                    type Value = GeneratedField;
1420                    fn expecting(
1421                        &self,
1422                        formatter: &mut std::fmt::Formatter<'_>,
1423                    ) -> std::fmt::Result {
1424                        write!(formatter, "expected one of: {:?}", & FIELDS)
1425                    }
1426                    #[allow(unused_variables)]
1427                    fn visit_str<E>(
1428                        self,
1429                        value: &str,
1430                    ) -> std::result::Result<GeneratedField, E>
1431                    where
1432                        E: serde::de::Error,
1433                    {
1434                        match value {
1435                            "parent" => Ok(GeneratedField::Parent),
1436                            "image" => Ok(GeneratedField::Image),
1437                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1438                            _ => Ok(GeneratedField::__SkipField__),
1439                        }
1440                    }
1441                }
1442                deserializer.deserialize_identifier(GeneratedVisitor)
1443            }
1444        }
1445        struct GeneratedVisitor;
1446        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1447            type Value = CreateImageRequest;
1448            fn expecting(
1449                &self,
1450                formatter: &mut std::fmt::Formatter<'_>,
1451            ) -> std::fmt::Result {
1452                formatter
1453                    .write_str("struct origincloud.compute.v1beta1.CreateImageRequest")
1454            }
1455            fn visit_map<V>(
1456                self,
1457                mut map_: V,
1458            ) -> std::result::Result<CreateImageRequest, V::Error>
1459            where
1460                V: serde::de::MapAccess<'de>,
1461            {
1462                let mut parent__ = None;
1463                let mut image__ = None;
1464                let mut request_id__ = None;
1465                while let Some(k) = map_.next_key()? {
1466                    match k {
1467                        GeneratedField::Parent => {
1468                            if parent__.is_some() {
1469                                return Err(serde::de::Error::duplicate_field("parent"));
1470                            }
1471                            parent__ = Some(map_.next_value()?);
1472                        }
1473                        GeneratedField::Image => {
1474                            if image__.is_some() {
1475                                return Err(serde::de::Error::duplicate_field("image"));
1476                            }
1477                            image__ = map_.next_value()?;
1478                        }
1479                        GeneratedField::RequestId => {
1480                            if request_id__.is_some() {
1481                                return Err(serde::de::Error::duplicate_field("requestId"));
1482                            }
1483                            request_id__ = Some(map_.next_value()?);
1484                        }
1485                        GeneratedField::__SkipField__ => {
1486                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1487                        }
1488                    }
1489                }
1490                Ok(CreateImageRequest {
1491                    parent: parent__.unwrap_or_default(),
1492                    image: image__,
1493                    request_id: request_id__.unwrap_or_default(),
1494                })
1495            }
1496        }
1497        deserializer
1498            .deserialize_struct(
1499                "origincloud.compute.v1beta1.CreateImageRequest",
1500                FIELDS,
1501                GeneratedVisitor,
1502            )
1503    }
1504}
1505impl serde::Serialize for CreateInstanceRequest {
1506    #[allow(deprecated)]
1507    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1508    where
1509        S: serde::Serializer,
1510    {
1511        use serde::ser::SerializeStruct;
1512        let mut len = 0;
1513        if !self.parent.is_empty() {
1514            len += 1;
1515        }
1516        if self.instance.is_some() {
1517            len += 1;
1518        }
1519        if !self.request_id.is_empty() {
1520            len += 1;
1521        }
1522        let mut struct_ser = serializer
1523            .serialize_struct("origincloud.compute.v1beta1.CreateInstanceRequest", len)?;
1524        if !self.parent.is_empty() {
1525            struct_ser.serialize_field("parent", &self.parent)?;
1526        }
1527        if let Some(v) = self.instance.as_ref() {
1528            struct_ser.serialize_field("instance", v)?;
1529        }
1530        if !self.request_id.is_empty() {
1531            struct_ser.serialize_field("requestId", &self.request_id)?;
1532        }
1533        struct_ser.end()
1534    }
1535}
1536impl<'de> serde::Deserialize<'de> for CreateInstanceRequest {
1537    #[allow(deprecated)]
1538    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1539    where
1540        D: serde::Deserializer<'de>,
1541    {
1542        const FIELDS: &[&str] = &["parent", "instance", "request_id", "requestId"];
1543        #[allow(clippy::enum_variant_names)]
1544        enum GeneratedField {
1545            Parent,
1546            Instance,
1547            RequestId,
1548            __SkipField__,
1549        }
1550        impl<'de> serde::Deserialize<'de> for GeneratedField {
1551            fn deserialize<D>(
1552                deserializer: D,
1553            ) -> std::result::Result<GeneratedField, D::Error>
1554            where
1555                D: serde::Deserializer<'de>,
1556            {
1557                struct GeneratedVisitor;
1558                impl serde::de::Visitor<'_> for GeneratedVisitor {
1559                    type Value = GeneratedField;
1560                    fn expecting(
1561                        &self,
1562                        formatter: &mut std::fmt::Formatter<'_>,
1563                    ) -> std::fmt::Result {
1564                        write!(formatter, "expected one of: {:?}", & FIELDS)
1565                    }
1566                    #[allow(unused_variables)]
1567                    fn visit_str<E>(
1568                        self,
1569                        value: &str,
1570                    ) -> std::result::Result<GeneratedField, E>
1571                    where
1572                        E: serde::de::Error,
1573                    {
1574                        match value {
1575                            "parent" => Ok(GeneratedField::Parent),
1576                            "instance" => Ok(GeneratedField::Instance),
1577                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1578                            _ => Ok(GeneratedField::__SkipField__),
1579                        }
1580                    }
1581                }
1582                deserializer.deserialize_identifier(GeneratedVisitor)
1583            }
1584        }
1585        struct GeneratedVisitor;
1586        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1587            type Value = CreateInstanceRequest;
1588            fn expecting(
1589                &self,
1590                formatter: &mut std::fmt::Formatter<'_>,
1591            ) -> std::fmt::Result {
1592                formatter
1593                    .write_str(
1594                        "struct origincloud.compute.v1beta1.CreateInstanceRequest",
1595                    )
1596            }
1597            fn visit_map<V>(
1598                self,
1599                mut map_: V,
1600            ) -> std::result::Result<CreateInstanceRequest, V::Error>
1601            where
1602                V: serde::de::MapAccess<'de>,
1603            {
1604                let mut parent__ = None;
1605                let mut instance__ = None;
1606                let mut request_id__ = None;
1607                while let Some(k) = map_.next_key()? {
1608                    match k {
1609                        GeneratedField::Parent => {
1610                            if parent__.is_some() {
1611                                return Err(serde::de::Error::duplicate_field("parent"));
1612                            }
1613                            parent__ = Some(map_.next_value()?);
1614                        }
1615                        GeneratedField::Instance => {
1616                            if instance__.is_some() {
1617                                return Err(serde::de::Error::duplicate_field("instance"));
1618                            }
1619                            instance__ = map_.next_value()?;
1620                        }
1621                        GeneratedField::RequestId => {
1622                            if request_id__.is_some() {
1623                                return Err(serde::de::Error::duplicate_field("requestId"));
1624                            }
1625                            request_id__ = Some(map_.next_value()?);
1626                        }
1627                        GeneratedField::__SkipField__ => {
1628                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1629                        }
1630                    }
1631                }
1632                Ok(CreateInstanceRequest {
1633                    parent: parent__.unwrap_or_default(),
1634                    instance: instance__,
1635                    request_id: request_id__.unwrap_or_default(),
1636                })
1637            }
1638        }
1639        deserializer
1640            .deserialize_struct(
1641                "origincloud.compute.v1beta1.CreateInstanceRequest",
1642                FIELDS,
1643                GeneratedVisitor,
1644            )
1645    }
1646}
1647impl serde::Serialize for CreateKeyPairRequest {
1648    #[allow(deprecated)]
1649    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1650    where
1651        S: serde::Serializer,
1652    {
1653        use serde::ser::SerializeStruct;
1654        let mut len = 0;
1655        if !self.parent.is_empty() {
1656            len += 1;
1657        }
1658        if self.key_pair.is_some() {
1659            len += 1;
1660        }
1661        if !self.request_id.is_empty() {
1662            len += 1;
1663        }
1664        let mut struct_ser = serializer
1665            .serialize_struct("origincloud.compute.v1beta1.CreateKeyPairRequest", len)?;
1666        if !self.parent.is_empty() {
1667            struct_ser.serialize_field("parent", &self.parent)?;
1668        }
1669        if let Some(v) = self.key_pair.as_ref() {
1670            struct_ser.serialize_field("keyPair", v)?;
1671        }
1672        if !self.request_id.is_empty() {
1673            struct_ser.serialize_field("requestId", &self.request_id)?;
1674        }
1675        struct_ser.end()
1676    }
1677}
1678impl<'de> serde::Deserialize<'de> for CreateKeyPairRequest {
1679    #[allow(deprecated)]
1680    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1681    where
1682        D: serde::Deserializer<'de>,
1683    {
1684        const FIELDS: &[&str] = &[
1685            "parent",
1686            "key_pair",
1687            "keyPair",
1688            "request_id",
1689            "requestId",
1690        ];
1691        #[allow(clippy::enum_variant_names)]
1692        enum GeneratedField {
1693            Parent,
1694            KeyPair,
1695            RequestId,
1696            __SkipField__,
1697        }
1698        impl<'de> serde::Deserialize<'de> for GeneratedField {
1699            fn deserialize<D>(
1700                deserializer: D,
1701            ) -> std::result::Result<GeneratedField, D::Error>
1702            where
1703                D: serde::Deserializer<'de>,
1704            {
1705                struct GeneratedVisitor;
1706                impl serde::de::Visitor<'_> for GeneratedVisitor {
1707                    type Value = GeneratedField;
1708                    fn expecting(
1709                        &self,
1710                        formatter: &mut std::fmt::Formatter<'_>,
1711                    ) -> std::fmt::Result {
1712                        write!(formatter, "expected one of: {:?}", & FIELDS)
1713                    }
1714                    #[allow(unused_variables)]
1715                    fn visit_str<E>(
1716                        self,
1717                        value: &str,
1718                    ) -> std::result::Result<GeneratedField, E>
1719                    where
1720                        E: serde::de::Error,
1721                    {
1722                        match value {
1723                            "parent" => Ok(GeneratedField::Parent),
1724                            "keyPair" | "key_pair" => Ok(GeneratedField::KeyPair),
1725                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1726                            _ => Ok(GeneratedField::__SkipField__),
1727                        }
1728                    }
1729                }
1730                deserializer.deserialize_identifier(GeneratedVisitor)
1731            }
1732        }
1733        struct GeneratedVisitor;
1734        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1735            type Value = CreateKeyPairRequest;
1736            fn expecting(
1737                &self,
1738                formatter: &mut std::fmt::Formatter<'_>,
1739            ) -> std::fmt::Result {
1740                formatter
1741                    .write_str("struct origincloud.compute.v1beta1.CreateKeyPairRequest")
1742            }
1743            fn visit_map<V>(
1744                self,
1745                mut map_: V,
1746            ) -> std::result::Result<CreateKeyPairRequest, V::Error>
1747            where
1748                V: serde::de::MapAccess<'de>,
1749            {
1750                let mut parent__ = None;
1751                let mut key_pair__ = None;
1752                let mut request_id__ = None;
1753                while let Some(k) = map_.next_key()? {
1754                    match k {
1755                        GeneratedField::Parent => {
1756                            if parent__.is_some() {
1757                                return Err(serde::de::Error::duplicate_field("parent"));
1758                            }
1759                            parent__ = Some(map_.next_value()?);
1760                        }
1761                        GeneratedField::KeyPair => {
1762                            if key_pair__.is_some() {
1763                                return Err(serde::de::Error::duplicate_field("keyPair"));
1764                            }
1765                            key_pair__ = map_.next_value()?;
1766                        }
1767                        GeneratedField::RequestId => {
1768                            if request_id__.is_some() {
1769                                return Err(serde::de::Error::duplicate_field("requestId"));
1770                            }
1771                            request_id__ = Some(map_.next_value()?);
1772                        }
1773                        GeneratedField::__SkipField__ => {
1774                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1775                        }
1776                    }
1777                }
1778                Ok(CreateKeyPairRequest {
1779                    parent: parent__.unwrap_or_default(),
1780                    key_pair: key_pair__,
1781                    request_id: request_id__.unwrap_or_default(),
1782                })
1783            }
1784        }
1785        deserializer
1786            .deserialize_struct(
1787                "origincloud.compute.v1beta1.CreateKeyPairRequest",
1788                FIELDS,
1789                GeneratedVisitor,
1790            )
1791    }
1792}
1793impl serde::Serialize for CreateVolumeAttachmentRequest {
1794    #[allow(deprecated)]
1795    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1796    where
1797        S: serde::Serializer,
1798    {
1799        use serde::ser::SerializeStruct;
1800        let mut len = 0;
1801        if !self.parent.is_empty() {
1802            len += 1;
1803        }
1804        if self.volume_attachment.is_some() {
1805            len += 1;
1806        }
1807        if !self.request_id.is_empty() {
1808            len += 1;
1809        }
1810        let mut struct_ser = serializer
1811            .serialize_struct(
1812                "origincloud.compute.v1beta1.CreateVolumeAttachmentRequest",
1813                len,
1814            )?;
1815        if !self.parent.is_empty() {
1816            struct_ser.serialize_field("parent", &self.parent)?;
1817        }
1818        if let Some(v) = self.volume_attachment.as_ref() {
1819            struct_ser.serialize_field("volumeAttachment", v)?;
1820        }
1821        if !self.request_id.is_empty() {
1822            struct_ser.serialize_field("requestId", &self.request_id)?;
1823        }
1824        struct_ser.end()
1825    }
1826}
1827impl<'de> serde::Deserialize<'de> for CreateVolumeAttachmentRequest {
1828    #[allow(deprecated)]
1829    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1830    where
1831        D: serde::Deserializer<'de>,
1832    {
1833        const FIELDS: &[&str] = &[
1834            "parent",
1835            "volume_attachment",
1836            "volumeAttachment",
1837            "request_id",
1838            "requestId",
1839        ];
1840        #[allow(clippy::enum_variant_names)]
1841        enum GeneratedField {
1842            Parent,
1843            VolumeAttachment,
1844            RequestId,
1845            __SkipField__,
1846        }
1847        impl<'de> serde::Deserialize<'de> for GeneratedField {
1848            fn deserialize<D>(
1849                deserializer: D,
1850            ) -> std::result::Result<GeneratedField, D::Error>
1851            where
1852                D: serde::Deserializer<'de>,
1853            {
1854                struct GeneratedVisitor;
1855                impl serde::de::Visitor<'_> for GeneratedVisitor {
1856                    type Value = GeneratedField;
1857                    fn expecting(
1858                        &self,
1859                        formatter: &mut std::fmt::Formatter<'_>,
1860                    ) -> std::fmt::Result {
1861                        write!(formatter, "expected one of: {:?}", & FIELDS)
1862                    }
1863                    #[allow(unused_variables)]
1864                    fn visit_str<E>(
1865                        self,
1866                        value: &str,
1867                    ) -> std::result::Result<GeneratedField, E>
1868                    where
1869                        E: serde::de::Error,
1870                    {
1871                        match value {
1872                            "parent" => Ok(GeneratedField::Parent),
1873                            "volumeAttachment" | "volume_attachment" => {
1874                                Ok(GeneratedField::VolumeAttachment)
1875                            }
1876                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1877                            _ => Ok(GeneratedField::__SkipField__),
1878                        }
1879                    }
1880                }
1881                deserializer.deserialize_identifier(GeneratedVisitor)
1882            }
1883        }
1884        struct GeneratedVisitor;
1885        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1886            type Value = CreateVolumeAttachmentRequest;
1887            fn expecting(
1888                &self,
1889                formatter: &mut std::fmt::Formatter<'_>,
1890            ) -> std::fmt::Result {
1891                formatter
1892                    .write_str(
1893                        "struct origincloud.compute.v1beta1.CreateVolumeAttachmentRequest",
1894                    )
1895            }
1896            fn visit_map<V>(
1897                self,
1898                mut map_: V,
1899            ) -> std::result::Result<CreateVolumeAttachmentRequest, V::Error>
1900            where
1901                V: serde::de::MapAccess<'de>,
1902            {
1903                let mut parent__ = None;
1904                let mut volume_attachment__ = None;
1905                let mut request_id__ = None;
1906                while let Some(k) = map_.next_key()? {
1907                    match k {
1908                        GeneratedField::Parent => {
1909                            if parent__.is_some() {
1910                                return Err(serde::de::Error::duplicate_field("parent"));
1911                            }
1912                            parent__ = Some(map_.next_value()?);
1913                        }
1914                        GeneratedField::VolumeAttachment => {
1915                            if volume_attachment__.is_some() {
1916                                return Err(
1917                                    serde::de::Error::duplicate_field("volumeAttachment"),
1918                                );
1919                            }
1920                            volume_attachment__ = map_.next_value()?;
1921                        }
1922                        GeneratedField::RequestId => {
1923                            if request_id__.is_some() {
1924                                return Err(serde::de::Error::duplicate_field("requestId"));
1925                            }
1926                            request_id__ = Some(map_.next_value()?);
1927                        }
1928                        GeneratedField::__SkipField__ => {
1929                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1930                        }
1931                    }
1932                }
1933                Ok(CreateVolumeAttachmentRequest {
1934                    parent: parent__.unwrap_or_default(),
1935                    volume_attachment: volume_attachment__,
1936                    request_id: request_id__.unwrap_or_default(),
1937                })
1938            }
1939        }
1940        deserializer
1941            .deserialize_struct(
1942                "origincloud.compute.v1beta1.CreateVolumeAttachmentRequest",
1943                FIELDS,
1944                GeneratedVisitor,
1945            )
1946    }
1947}
1948impl serde::Serialize for DeleteImageRequest {
1949    #[allow(deprecated)]
1950    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1951    where
1952        S: serde::Serializer,
1953    {
1954        use serde::ser::SerializeStruct;
1955        let mut len = 0;
1956        if !self.name.is_empty() {
1957            len += 1;
1958        }
1959        let mut struct_ser = serializer
1960            .serialize_struct("origincloud.compute.v1beta1.DeleteImageRequest", len)?;
1961        if !self.name.is_empty() {
1962            struct_ser.serialize_field("name", &self.name)?;
1963        }
1964        struct_ser.end()
1965    }
1966}
1967impl<'de> serde::Deserialize<'de> for DeleteImageRequest {
1968    #[allow(deprecated)]
1969    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1970    where
1971        D: serde::Deserializer<'de>,
1972    {
1973        const FIELDS: &[&str] = &["name"];
1974        #[allow(clippy::enum_variant_names)]
1975        enum GeneratedField {
1976            Name,
1977            __SkipField__,
1978        }
1979        impl<'de> serde::Deserialize<'de> for GeneratedField {
1980            fn deserialize<D>(
1981                deserializer: D,
1982            ) -> std::result::Result<GeneratedField, D::Error>
1983            where
1984                D: serde::Deserializer<'de>,
1985            {
1986                struct GeneratedVisitor;
1987                impl serde::de::Visitor<'_> for GeneratedVisitor {
1988                    type Value = GeneratedField;
1989                    fn expecting(
1990                        &self,
1991                        formatter: &mut std::fmt::Formatter<'_>,
1992                    ) -> std::fmt::Result {
1993                        write!(formatter, "expected one of: {:?}", & FIELDS)
1994                    }
1995                    #[allow(unused_variables)]
1996                    fn visit_str<E>(
1997                        self,
1998                        value: &str,
1999                    ) -> std::result::Result<GeneratedField, E>
2000                    where
2001                        E: serde::de::Error,
2002                    {
2003                        match value {
2004                            "name" => Ok(GeneratedField::Name),
2005                            _ => Ok(GeneratedField::__SkipField__),
2006                        }
2007                    }
2008                }
2009                deserializer.deserialize_identifier(GeneratedVisitor)
2010            }
2011        }
2012        struct GeneratedVisitor;
2013        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2014            type Value = DeleteImageRequest;
2015            fn expecting(
2016                &self,
2017                formatter: &mut std::fmt::Formatter<'_>,
2018            ) -> std::fmt::Result {
2019                formatter
2020                    .write_str("struct origincloud.compute.v1beta1.DeleteImageRequest")
2021            }
2022            fn visit_map<V>(
2023                self,
2024                mut map_: V,
2025            ) -> std::result::Result<DeleteImageRequest, V::Error>
2026            where
2027                V: serde::de::MapAccess<'de>,
2028            {
2029                let mut name__ = None;
2030                while let Some(k) = map_.next_key()? {
2031                    match k {
2032                        GeneratedField::Name => {
2033                            if name__.is_some() {
2034                                return Err(serde::de::Error::duplicate_field("name"));
2035                            }
2036                            name__ = Some(map_.next_value()?);
2037                        }
2038                        GeneratedField::__SkipField__ => {
2039                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2040                        }
2041                    }
2042                }
2043                Ok(DeleteImageRequest {
2044                    name: name__.unwrap_or_default(),
2045                })
2046            }
2047        }
2048        deserializer
2049            .deserialize_struct(
2050                "origincloud.compute.v1beta1.DeleteImageRequest",
2051                FIELDS,
2052                GeneratedVisitor,
2053            )
2054    }
2055}
2056impl serde::Serialize for DeleteInstanceRequest {
2057    #[allow(deprecated)]
2058    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2059    where
2060        S: serde::Serializer,
2061    {
2062        use serde::ser::SerializeStruct;
2063        let mut len = 0;
2064        if !self.name.is_empty() {
2065            len += 1;
2066        }
2067        if !self.request_id.is_empty() {
2068            len += 1;
2069        }
2070        let mut struct_ser = serializer
2071            .serialize_struct("origincloud.compute.v1beta1.DeleteInstanceRequest", len)?;
2072        if !self.name.is_empty() {
2073            struct_ser.serialize_field("name", &self.name)?;
2074        }
2075        if !self.request_id.is_empty() {
2076            struct_ser.serialize_field("requestId", &self.request_id)?;
2077        }
2078        struct_ser.end()
2079    }
2080}
2081impl<'de> serde::Deserialize<'de> for DeleteInstanceRequest {
2082    #[allow(deprecated)]
2083    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2084    where
2085        D: serde::Deserializer<'de>,
2086    {
2087        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
2088        #[allow(clippy::enum_variant_names)]
2089        enum GeneratedField {
2090            Name,
2091            RequestId,
2092            __SkipField__,
2093        }
2094        impl<'de> serde::Deserialize<'de> for GeneratedField {
2095            fn deserialize<D>(
2096                deserializer: D,
2097            ) -> std::result::Result<GeneratedField, D::Error>
2098            where
2099                D: serde::Deserializer<'de>,
2100            {
2101                struct GeneratedVisitor;
2102                impl serde::de::Visitor<'_> for GeneratedVisitor {
2103                    type Value = GeneratedField;
2104                    fn expecting(
2105                        &self,
2106                        formatter: &mut std::fmt::Formatter<'_>,
2107                    ) -> std::fmt::Result {
2108                        write!(formatter, "expected one of: {:?}", & FIELDS)
2109                    }
2110                    #[allow(unused_variables)]
2111                    fn visit_str<E>(
2112                        self,
2113                        value: &str,
2114                    ) -> std::result::Result<GeneratedField, E>
2115                    where
2116                        E: serde::de::Error,
2117                    {
2118                        match value {
2119                            "name" => Ok(GeneratedField::Name),
2120                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
2121                            _ => Ok(GeneratedField::__SkipField__),
2122                        }
2123                    }
2124                }
2125                deserializer.deserialize_identifier(GeneratedVisitor)
2126            }
2127        }
2128        struct GeneratedVisitor;
2129        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2130            type Value = DeleteInstanceRequest;
2131            fn expecting(
2132                &self,
2133                formatter: &mut std::fmt::Formatter<'_>,
2134            ) -> std::fmt::Result {
2135                formatter
2136                    .write_str(
2137                        "struct origincloud.compute.v1beta1.DeleteInstanceRequest",
2138                    )
2139            }
2140            fn visit_map<V>(
2141                self,
2142                mut map_: V,
2143            ) -> std::result::Result<DeleteInstanceRequest, V::Error>
2144            where
2145                V: serde::de::MapAccess<'de>,
2146            {
2147                let mut name__ = None;
2148                let mut request_id__ = None;
2149                while let Some(k) = map_.next_key()? {
2150                    match k {
2151                        GeneratedField::Name => {
2152                            if name__.is_some() {
2153                                return Err(serde::de::Error::duplicate_field("name"));
2154                            }
2155                            name__ = Some(map_.next_value()?);
2156                        }
2157                        GeneratedField::RequestId => {
2158                            if request_id__.is_some() {
2159                                return Err(serde::de::Error::duplicate_field("requestId"));
2160                            }
2161                            request_id__ = Some(map_.next_value()?);
2162                        }
2163                        GeneratedField::__SkipField__ => {
2164                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2165                        }
2166                    }
2167                }
2168                Ok(DeleteInstanceRequest {
2169                    name: name__.unwrap_or_default(),
2170                    request_id: request_id__.unwrap_or_default(),
2171                })
2172            }
2173        }
2174        deserializer
2175            .deserialize_struct(
2176                "origincloud.compute.v1beta1.DeleteInstanceRequest",
2177                FIELDS,
2178                GeneratedVisitor,
2179            )
2180    }
2181}
2182impl serde::Serialize for DeleteKeyPairRequest {
2183    #[allow(deprecated)]
2184    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2185    where
2186        S: serde::Serializer,
2187    {
2188        use serde::ser::SerializeStruct;
2189        let mut len = 0;
2190        if !self.name.is_empty() {
2191            len += 1;
2192        }
2193        let mut struct_ser = serializer
2194            .serialize_struct("origincloud.compute.v1beta1.DeleteKeyPairRequest", len)?;
2195        if !self.name.is_empty() {
2196            struct_ser.serialize_field("name", &self.name)?;
2197        }
2198        struct_ser.end()
2199    }
2200}
2201impl<'de> serde::Deserialize<'de> for DeleteKeyPairRequest {
2202    #[allow(deprecated)]
2203    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2204    where
2205        D: serde::Deserializer<'de>,
2206    {
2207        const FIELDS: &[&str] = &["name"];
2208        #[allow(clippy::enum_variant_names)]
2209        enum GeneratedField {
2210            Name,
2211            __SkipField__,
2212        }
2213        impl<'de> serde::Deserialize<'de> for GeneratedField {
2214            fn deserialize<D>(
2215                deserializer: D,
2216            ) -> std::result::Result<GeneratedField, D::Error>
2217            where
2218                D: serde::Deserializer<'de>,
2219            {
2220                struct GeneratedVisitor;
2221                impl serde::de::Visitor<'_> for GeneratedVisitor {
2222                    type Value = GeneratedField;
2223                    fn expecting(
2224                        &self,
2225                        formatter: &mut std::fmt::Formatter<'_>,
2226                    ) -> std::fmt::Result {
2227                        write!(formatter, "expected one of: {:?}", & FIELDS)
2228                    }
2229                    #[allow(unused_variables)]
2230                    fn visit_str<E>(
2231                        self,
2232                        value: &str,
2233                    ) -> std::result::Result<GeneratedField, E>
2234                    where
2235                        E: serde::de::Error,
2236                    {
2237                        match value {
2238                            "name" => Ok(GeneratedField::Name),
2239                            _ => Ok(GeneratedField::__SkipField__),
2240                        }
2241                    }
2242                }
2243                deserializer.deserialize_identifier(GeneratedVisitor)
2244            }
2245        }
2246        struct GeneratedVisitor;
2247        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2248            type Value = DeleteKeyPairRequest;
2249            fn expecting(
2250                &self,
2251                formatter: &mut std::fmt::Formatter<'_>,
2252            ) -> std::fmt::Result {
2253                formatter
2254                    .write_str("struct origincloud.compute.v1beta1.DeleteKeyPairRequest")
2255            }
2256            fn visit_map<V>(
2257                self,
2258                mut map_: V,
2259            ) -> std::result::Result<DeleteKeyPairRequest, V::Error>
2260            where
2261                V: serde::de::MapAccess<'de>,
2262            {
2263                let mut name__ = None;
2264                while let Some(k) = map_.next_key()? {
2265                    match k {
2266                        GeneratedField::Name => {
2267                            if name__.is_some() {
2268                                return Err(serde::de::Error::duplicate_field("name"));
2269                            }
2270                            name__ = Some(map_.next_value()?);
2271                        }
2272                        GeneratedField::__SkipField__ => {
2273                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2274                        }
2275                    }
2276                }
2277                Ok(DeleteKeyPairRequest {
2278                    name: name__.unwrap_or_default(),
2279                })
2280            }
2281        }
2282        deserializer
2283            .deserialize_struct(
2284                "origincloud.compute.v1beta1.DeleteKeyPairRequest",
2285                FIELDS,
2286                GeneratedVisitor,
2287            )
2288    }
2289}
2290impl serde::Serialize for DeleteVolumeAttachmentRequest {
2291    #[allow(deprecated)]
2292    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2293    where
2294        S: serde::Serializer,
2295    {
2296        use serde::ser::SerializeStruct;
2297        let mut len = 0;
2298        if !self.name.is_empty() {
2299            len += 1;
2300        }
2301        if !self.request_id.is_empty() {
2302            len += 1;
2303        }
2304        let mut struct_ser = serializer
2305            .serialize_struct(
2306                "origincloud.compute.v1beta1.DeleteVolumeAttachmentRequest",
2307                len,
2308            )?;
2309        if !self.name.is_empty() {
2310            struct_ser.serialize_field("name", &self.name)?;
2311        }
2312        if !self.request_id.is_empty() {
2313            struct_ser.serialize_field("requestId", &self.request_id)?;
2314        }
2315        struct_ser.end()
2316    }
2317}
2318impl<'de> serde::Deserialize<'de> for DeleteVolumeAttachmentRequest {
2319    #[allow(deprecated)]
2320    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2321    where
2322        D: serde::Deserializer<'de>,
2323    {
2324        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
2325        #[allow(clippy::enum_variant_names)]
2326        enum GeneratedField {
2327            Name,
2328            RequestId,
2329            __SkipField__,
2330        }
2331        impl<'de> serde::Deserialize<'de> for GeneratedField {
2332            fn deserialize<D>(
2333                deserializer: D,
2334            ) -> std::result::Result<GeneratedField, D::Error>
2335            where
2336                D: serde::Deserializer<'de>,
2337            {
2338                struct GeneratedVisitor;
2339                impl serde::de::Visitor<'_> for GeneratedVisitor {
2340                    type Value = GeneratedField;
2341                    fn expecting(
2342                        &self,
2343                        formatter: &mut std::fmt::Formatter<'_>,
2344                    ) -> std::fmt::Result {
2345                        write!(formatter, "expected one of: {:?}", & FIELDS)
2346                    }
2347                    #[allow(unused_variables)]
2348                    fn visit_str<E>(
2349                        self,
2350                        value: &str,
2351                    ) -> std::result::Result<GeneratedField, E>
2352                    where
2353                        E: serde::de::Error,
2354                    {
2355                        match value {
2356                            "name" => Ok(GeneratedField::Name),
2357                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
2358                            _ => Ok(GeneratedField::__SkipField__),
2359                        }
2360                    }
2361                }
2362                deserializer.deserialize_identifier(GeneratedVisitor)
2363            }
2364        }
2365        struct GeneratedVisitor;
2366        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2367            type Value = DeleteVolumeAttachmentRequest;
2368            fn expecting(
2369                &self,
2370                formatter: &mut std::fmt::Formatter<'_>,
2371            ) -> std::fmt::Result {
2372                formatter
2373                    .write_str(
2374                        "struct origincloud.compute.v1beta1.DeleteVolumeAttachmentRequest",
2375                    )
2376            }
2377            fn visit_map<V>(
2378                self,
2379                mut map_: V,
2380            ) -> std::result::Result<DeleteVolumeAttachmentRequest, V::Error>
2381            where
2382                V: serde::de::MapAccess<'de>,
2383            {
2384                let mut name__ = None;
2385                let mut request_id__ = None;
2386                while let Some(k) = map_.next_key()? {
2387                    match k {
2388                        GeneratedField::Name => {
2389                            if name__.is_some() {
2390                                return Err(serde::de::Error::duplicate_field("name"));
2391                            }
2392                            name__ = Some(map_.next_value()?);
2393                        }
2394                        GeneratedField::RequestId => {
2395                            if request_id__.is_some() {
2396                                return Err(serde::de::Error::duplicate_field("requestId"));
2397                            }
2398                            request_id__ = Some(map_.next_value()?);
2399                        }
2400                        GeneratedField::__SkipField__ => {
2401                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2402                        }
2403                    }
2404                }
2405                Ok(DeleteVolumeAttachmentRequest {
2406                    name: name__.unwrap_or_default(),
2407                    request_id: request_id__.unwrap_or_default(),
2408                })
2409            }
2410        }
2411        deserializer
2412            .deserialize_struct(
2413                "origincloud.compute.v1beta1.DeleteVolumeAttachmentRequest",
2414                FIELDS,
2415                GeneratedVisitor,
2416            )
2417    }
2418}
2419impl serde::Serialize for GetImageFamilyRequest {
2420    #[allow(deprecated)]
2421    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2422    where
2423        S: serde::Serializer,
2424    {
2425        use serde::ser::SerializeStruct;
2426        let mut len = 0;
2427        if !self.name.is_empty() {
2428            len += 1;
2429        }
2430        let mut struct_ser = serializer
2431            .serialize_struct("origincloud.compute.v1beta1.GetImageFamilyRequest", len)?;
2432        if !self.name.is_empty() {
2433            struct_ser.serialize_field("name", &self.name)?;
2434        }
2435        struct_ser.end()
2436    }
2437}
2438impl<'de> serde::Deserialize<'de> for GetImageFamilyRequest {
2439    #[allow(deprecated)]
2440    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2441    where
2442        D: serde::Deserializer<'de>,
2443    {
2444        const FIELDS: &[&str] = &["name"];
2445        #[allow(clippy::enum_variant_names)]
2446        enum GeneratedField {
2447            Name,
2448            __SkipField__,
2449        }
2450        impl<'de> serde::Deserialize<'de> for GeneratedField {
2451            fn deserialize<D>(
2452                deserializer: D,
2453            ) -> std::result::Result<GeneratedField, D::Error>
2454            where
2455                D: serde::Deserializer<'de>,
2456            {
2457                struct GeneratedVisitor;
2458                impl serde::de::Visitor<'_> for GeneratedVisitor {
2459                    type Value = GeneratedField;
2460                    fn expecting(
2461                        &self,
2462                        formatter: &mut std::fmt::Formatter<'_>,
2463                    ) -> std::fmt::Result {
2464                        write!(formatter, "expected one of: {:?}", & FIELDS)
2465                    }
2466                    #[allow(unused_variables)]
2467                    fn visit_str<E>(
2468                        self,
2469                        value: &str,
2470                    ) -> std::result::Result<GeneratedField, E>
2471                    where
2472                        E: serde::de::Error,
2473                    {
2474                        match value {
2475                            "name" => Ok(GeneratedField::Name),
2476                            _ => Ok(GeneratedField::__SkipField__),
2477                        }
2478                    }
2479                }
2480                deserializer.deserialize_identifier(GeneratedVisitor)
2481            }
2482        }
2483        struct GeneratedVisitor;
2484        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2485            type Value = GetImageFamilyRequest;
2486            fn expecting(
2487                &self,
2488                formatter: &mut std::fmt::Formatter<'_>,
2489            ) -> std::fmt::Result {
2490                formatter
2491                    .write_str(
2492                        "struct origincloud.compute.v1beta1.GetImageFamilyRequest",
2493                    )
2494            }
2495            fn visit_map<V>(
2496                self,
2497                mut map_: V,
2498            ) -> std::result::Result<GetImageFamilyRequest, V::Error>
2499            where
2500                V: serde::de::MapAccess<'de>,
2501            {
2502                let mut name__ = None;
2503                while let Some(k) = map_.next_key()? {
2504                    match k {
2505                        GeneratedField::Name => {
2506                            if name__.is_some() {
2507                                return Err(serde::de::Error::duplicate_field("name"));
2508                            }
2509                            name__ = Some(map_.next_value()?);
2510                        }
2511                        GeneratedField::__SkipField__ => {
2512                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2513                        }
2514                    }
2515                }
2516                Ok(GetImageFamilyRequest {
2517                    name: name__.unwrap_or_default(),
2518                })
2519            }
2520        }
2521        deserializer
2522            .deserialize_struct(
2523                "origincloud.compute.v1beta1.GetImageFamilyRequest",
2524                FIELDS,
2525                GeneratedVisitor,
2526            )
2527    }
2528}
2529impl serde::Serialize for GetImageRequest {
2530    #[allow(deprecated)]
2531    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2532    where
2533        S: serde::Serializer,
2534    {
2535        use serde::ser::SerializeStruct;
2536        let mut len = 0;
2537        if !self.name.is_empty() {
2538            len += 1;
2539        }
2540        let mut struct_ser = serializer
2541            .serialize_struct("origincloud.compute.v1beta1.GetImageRequest", len)?;
2542        if !self.name.is_empty() {
2543            struct_ser.serialize_field("name", &self.name)?;
2544        }
2545        struct_ser.end()
2546    }
2547}
2548impl<'de> serde::Deserialize<'de> for GetImageRequest {
2549    #[allow(deprecated)]
2550    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2551    where
2552        D: serde::Deserializer<'de>,
2553    {
2554        const FIELDS: &[&str] = &["name"];
2555        #[allow(clippy::enum_variant_names)]
2556        enum GeneratedField {
2557            Name,
2558            __SkipField__,
2559        }
2560        impl<'de> serde::Deserialize<'de> for GeneratedField {
2561            fn deserialize<D>(
2562                deserializer: D,
2563            ) -> std::result::Result<GeneratedField, D::Error>
2564            where
2565                D: serde::Deserializer<'de>,
2566            {
2567                struct GeneratedVisitor;
2568                impl serde::de::Visitor<'_> for GeneratedVisitor {
2569                    type Value = GeneratedField;
2570                    fn expecting(
2571                        &self,
2572                        formatter: &mut std::fmt::Formatter<'_>,
2573                    ) -> std::fmt::Result {
2574                        write!(formatter, "expected one of: {:?}", & FIELDS)
2575                    }
2576                    #[allow(unused_variables)]
2577                    fn visit_str<E>(
2578                        self,
2579                        value: &str,
2580                    ) -> std::result::Result<GeneratedField, E>
2581                    where
2582                        E: serde::de::Error,
2583                    {
2584                        match value {
2585                            "name" => Ok(GeneratedField::Name),
2586                            _ => Ok(GeneratedField::__SkipField__),
2587                        }
2588                    }
2589                }
2590                deserializer.deserialize_identifier(GeneratedVisitor)
2591            }
2592        }
2593        struct GeneratedVisitor;
2594        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2595            type Value = GetImageRequest;
2596            fn expecting(
2597                &self,
2598                formatter: &mut std::fmt::Formatter<'_>,
2599            ) -> std::fmt::Result {
2600                formatter.write_str("struct origincloud.compute.v1beta1.GetImageRequest")
2601            }
2602            fn visit_map<V>(
2603                self,
2604                mut map_: V,
2605            ) -> std::result::Result<GetImageRequest, V::Error>
2606            where
2607                V: serde::de::MapAccess<'de>,
2608            {
2609                let mut name__ = None;
2610                while let Some(k) = map_.next_key()? {
2611                    match k {
2612                        GeneratedField::Name => {
2613                            if name__.is_some() {
2614                                return Err(serde::de::Error::duplicate_field("name"));
2615                            }
2616                            name__ = Some(map_.next_value()?);
2617                        }
2618                        GeneratedField::__SkipField__ => {
2619                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2620                        }
2621                    }
2622                }
2623                Ok(GetImageRequest {
2624                    name: name__.unwrap_or_default(),
2625                })
2626            }
2627        }
2628        deserializer
2629            .deserialize_struct(
2630                "origincloud.compute.v1beta1.GetImageRequest",
2631                FIELDS,
2632                GeneratedVisitor,
2633            )
2634    }
2635}
2636impl serde::Serialize for GetInstanceRequest {
2637    #[allow(deprecated)]
2638    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2639    where
2640        S: serde::Serializer,
2641    {
2642        use serde::ser::SerializeStruct;
2643        let mut len = 0;
2644        if !self.name.is_empty() {
2645            len += 1;
2646        }
2647        let mut struct_ser = serializer
2648            .serialize_struct("origincloud.compute.v1beta1.GetInstanceRequest", len)?;
2649        if !self.name.is_empty() {
2650            struct_ser.serialize_field("name", &self.name)?;
2651        }
2652        struct_ser.end()
2653    }
2654}
2655impl<'de> serde::Deserialize<'de> for GetInstanceRequest {
2656    #[allow(deprecated)]
2657    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2658    where
2659        D: serde::Deserializer<'de>,
2660    {
2661        const FIELDS: &[&str] = &["name"];
2662        #[allow(clippy::enum_variant_names)]
2663        enum GeneratedField {
2664            Name,
2665            __SkipField__,
2666        }
2667        impl<'de> serde::Deserialize<'de> for GeneratedField {
2668            fn deserialize<D>(
2669                deserializer: D,
2670            ) -> std::result::Result<GeneratedField, D::Error>
2671            where
2672                D: serde::Deserializer<'de>,
2673            {
2674                struct GeneratedVisitor;
2675                impl serde::de::Visitor<'_> for GeneratedVisitor {
2676                    type Value = GeneratedField;
2677                    fn expecting(
2678                        &self,
2679                        formatter: &mut std::fmt::Formatter<'_>,
2680                    ) -> std::fmt::Result {
2681                        write!(formatter, "expected one of: {:?}", & FIELDS)
2682                    }
2683                    #[allow(unused_variables)]
2684                    fn visit_str<E>(
2685                        self,
2686                        value: &str,
2687                    ) -> std::result::Result<GeneratedField, E>
2688                    where
2689                        E: serde::de::Error,
2690                    {
2691                        match value {
2692                            "name" => Ok(GeneratedField::Name),
2693                            _ => Ok(GeneratedField::__SkipField__),
2694                        }
2695                    }
2696                }
2697                deserializer.deserialize_identifier(GeneratedVisitor)
2698            }
2699        }
2700        struct GeneratedVisitor;
2701        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2702            type Value = GetInstanceRequest;
2703            fn expecting(
2704                &self,
2705                formatter: &mut std::fmt::Formatter<'_>,
2706            ) -> std::fmt::Result {
2707                formatter
2708                    .write_str("struct origincloud.compute.v1beta1.GetInstanceRequest")
2709            }
2710            fn visit_map<V>(
2711                self,
2712                mut map_: V,
2713            ) -> std::result::Result<GetInstanceRequest, V::Error>
2714            where
2715                V: serde::de::MapAccess<'de>,
2716            {
2717                let mut name__ = None;
2718                while let Some(k) = map_.next_key()? {
2719                    match k {
2720                        GeneratedField::Name => {
2721                            if name__.is_some() {
2722                                return Err(serde::de::Error::duplicate_field("name"));
2723                            }
2724                            name__ = Some(map_.next_value()?);
2725                        }
2726                        GeneratedField::__SkipField__ => {
2727                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2728                        }
2729                    }
2730                }
2731                Ok(GetInstanceRequest {
2732                    name: name__.unwrap_or_default(),
2733                })
2734            }
2735        }
2736        deserializer
2737            .deserialize_struct(
2738                "origincloud.compute.v1beta1.GetInstanceRequest",
2739                FIELDS,
2740                GeneratedVisitor,
2741            )
2742    }
2743}
2744impl serde::Serialize for GetInstanceTypeRequest {
2745    #[allow(deprecated)]
2746    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2747    where
2748        S: serde::Serializer,
2749    {
2750        use serde::ser::SerializeStruct;
2751        let mut len = 0;
2752        if !self.name.is_empty() {
2753            len += 1;
2754        }
2755        let mut struct_ser = serializer
2756            .serialize_struct(
2757                "origincloud.compute.v1beta1.GetInstanceTypeRequest",
2758                len,
2759            )?;
2760        if !self.name.is_empty() {
2761            struct_ser.serialize_field("name", &self.name)?;
2762        }
2763        struct_ser.end()
2764    }
2765}
2766impl<'de> serde::Deserialize<'de> for GetInstanceTypeRequest {
2767    #[allow(deprecated)]
2768    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2769    where
2770        D: serde::Deserializer<'de>,
2771    {
2772        const FIELDS: &[&str] = &["name"];
2773        #[allow(clippy::enum_variant_names)]
2774        enum GeneratedField {
2775            Name,
2776            __SkipField__,
2777        }
2778        impl<'de> serde::Deserialize<'de> for GeneratedField {
2779            fn deserialize<D>(
2780                deserializer: D,
2781            ) -> std::result::Result<GeneratedField, D::Error>
2782            where
2783                D: serde::Deserializer<'de>,
2784            {
2785                struct GeneratedVisitor;
2786                impl serde::de::Visitor<'_> for GeneratedVisitor {
2787                    type Value = GeneratedField;
2788                    fn expecting(
2789                        &self,
2790                        formatter: &mut std::fmt::Formatter<'_>,
2791                    ) -> std::fmt::Result {
2792                        write!(formatter, "expected one of: {:?}", & FIELDS)
2793                    }
2794                    #[allow(unused_variables)]
2795                    fn visit_str<E>(
2796                        self,
2797                        value: &str,
2798                    ) -> std::result::Result<GeneratedField, E>
2799                    where
2800                        E: serde::de::Error,
2801                    {
2802                        match value {
2803                            "name" => Ok(GeneratedField::Name),
2804                            _ => Ok(GeneratedField::__SkipField__),
2805                        }
2806                    }
2807                }
2808                deserializer.deserialize_identifier(GeneratedVisitor)
2809            }
2810        }
2811        struct GeneratedVisitor;
2812        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2813            type Value = GetInstanceTypeRequest;
2814            fn expecting(
2815                &self,
2816                formatter: &mut std::fmt::Formatter<'_>,
2817            ) -> std::fmt::Result {
2818                formatter
2819                    .write_str(
2820                        "struct origincloud.compute.v1beta1.GetInstanceTypeRequest",
2821                    )
2822            }
2823            fn visit_map<V>(
2824                self,
2825                mut map_: V,
2826            ) -> std::result::Result<GetInstanceTypeRequest, V::Error>
2827            where
2828                V: serde::de::MapAccess<'de>,
2829            {
2830                let mut name__ = None;
2831                while let Some(k) = map_.next_key()? {
2832                    match k {
2833                        GeneratedField::Name => {
2834                            if name__.is_some() {
2835                                return Err(serde::de::Error::duplicate_field("name"));
2836                            }
2837                            name__ = Some(map_.next_value()?);
2838                        }
2839                        GeneratedField::__SkipField__ => {
2840                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2841                        }
2842                    }
2843                }
2844                Ok(GetInstanceTypeRequest {
2845                    name: name__.unwrap_or_default(),
2846                })
2847            }
2848        }
2849        deserializer
2850            .deserialize_struct(
2851                "origincloud.compute.v1beta1.GetInstanceTypeRequest",
2852                FIELDS,
2853                GeneratedVisitor,
2854            )
2855    }
2856}
2857impl serde::Serialize for GetKeyPairRequest {
2858    #[allow(deprecated)]
2859    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2860    where
2861        S: serde::Serializer,
2862    {
2863        use serde::ser::SerializeStruct;
2864        let mut len = 0;
2865        if !self.name.is_empty() {
2866            len += 1;
2867        }
2868        let mut struct_ser = serializer
2869            .serialize_struct("origincloud.compute.v1beta1.GetKeyPairRequest", len)?;
2870        if !self.name.is_empty() {
2871            struct_ser.serialize_field("name", &self.name)?;
2872        }
2873        struct_ser.end()
2874    }
2875}
2876impl<'de> serde::Deserialize<'de> for GetKeyPairRequest {
2877    #[allow(deprecated)]
2878    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2879    where
2880        D: serde::Deserializer<'de>,
2881    {
2882        const FIELDS: &[&str] = &["name"];
2883        #[allow(clippy::enum_variant_names)]
2884        enum GeneratedField {
2885            Name,
2886            __SkipField__,
2887        }
2888        impl<'de> serde::Deserialize<'de> for GeneratedField {
2889            fn deserialize<D>(
2890                deserializer: D,
2891            ) -> std::result::Result<GeneratedField, D::Error>
2892            where
2893                D: serde::Deserializer<'de>,
2894            {
2895                struct GeneratedVisitor;
2896                impl serde::de::Visitor<'_> for GeneratedVisitor {
2897                    type Value = GeneratedField;
2898                    fn expecting(
2899                        &self,
2900                        formatter: &mut std::fmt::Formatter<'_>,
2901                    ) -> std::fmt::Result {
2902                        write!(formatter, "expected one of: {:?}", & FIELDS)
2903                    }
2904                    #[allow(unused_variables)]
2905                    fn visit_str<E>(
2906                        self,
2907                        value: &str,
2908                    ) -> std::result::Result<GeneratedField, E>
2909                    where
2910                        E: serde::de::Error,
2911                    {
2912                        match value {
2913                            "name" => Ok(GeneratedField::Name),
2914                            _ => Ok(GeneratedField::__SkipField__),
2915                        }
2916                    }
2917                }
2918                deserializer.deserialize_identifier(GeneratedVisitor)
2919            }
2920        }
2921        struct GeneratedVisitor;
2922        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2923            type Value = GetKeyPairRequest;
2924            fn expecting(
2925                &self,
2926                formatter: &mut std::fmt::Formatter<'_>,
2927            ) -> std::fmt::Result {
2928                formatter
2929                    .write_str("struct origincloud.compute.v1beta1.GetKeyPairRequest")
2930            }
2931            fn visit_map<V>(
2932                self,
2933                mut map_: V,
2934            ) -> std::result::Result<GetKeyPairRequest, V::Error>
2935            where
2936                V: serde::de::MapAccess<'de>,
2937            {
2938                let mut name__ = None;
2939                while let Some(k) = map_.next_key()? {
2940                    match k {
2941                        GeneratedField::Name => {
2942                            if name__.is_some() {
2943                                return Err(serde::de::Error::duplicate_field("name"));
2944                            }
2945                            name__ = Some(map_.next_value()?);
2946                        }
2947                        GeneratedField::__SkipField__ => {
2948                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2949                        }
2950                    }
2951                }
2952                Ok(GetKeyPairRequest {
2953                    name: name__.unwrap_or_default(),
2954                })
2955            }
2956        }
2957        deserializer
2958            .deserialize_struct(
2959                "origincloud.compute.v1beta1.GetKeyPairRequest",
2960                FIELDS,
2961                GeneratedVisitor,
2962            )
2963    }
2964}
2965impl serde::Serialize for GetPublicImageRequest {
2966    #[allow(deprecated)]
2967    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2968    where
2969        S: serde::Serializer,
2970    {
2971        use serde::ser::SerializeStruct;
2972        let mut len = 0;
2973        if !self.name.is_empty() {
2974            len += 1;
2975        }
2976        let mut struct_ser = serializer
2977            .serialize_struct("origincloud.compute.v1beta1.GetPublicImageRequest", len)?;
2978        if !self.name.is_empty() {
2979            struct_ser.serialize_field("name", &self.name)?;
2980        }
2981        struct_ser.end()
2982    }
2983}
2984impl<'de> serde::Deserialize<'de> for GetPublicImageRequest {
2985    #[allow(deprecated)]
2986    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2987    where
2988        D: serde::Deserializer<'de>,
2989    {
2990        const FIELDS: &[&str] = &["name"];
2991        #[allow(clippy::enum_variant_names)]
2992        enum GeneratedField {
2993            Name,
2994            __SkipField__,
2995        }
2996        impl<'de> serde::Deserialize<'de> for GeneratedField {
2997            fn deserialize<D>(
2998                deserializer: D,
2999            ) -> std::result::Result<GeneratedField, D::Error>
3000            where
3001                D: serde::Deserializer<'de>,
3002            {
3003                struct GeneratedVisitor;
3004                impl serde::de::Visitor<'_> for GeneratedVisitor {
3005                    type Value = GeneratedField;
3006                    fn expecting(
3007                        &self,
3008                        formatter: &mut std::fmt::Formatter<'_>,
3009                    ) -> std::fmt::Result {
3010                        write!(formatter, "expected one of: {:?}", & FIELDS)
3011                    }
3012                    #[allow(unused_variables)]
3013                    fn visit_str<E>(
3014                        self,
3015                        value: &str,
3016                    ) -> std::result::Result<GeneratedField, E>
3017                    where
3018                        E: serde::de::Error,
3019                    {
3020                        match value {
3021                            "name" => Ok(GeneratedField::Name),
3022                            _ => Ok(GeneratedField::__SkipField__),
3023                        }
3024                    }
3025                }
3026                deserializer.deserialize_identifier(GeneratedVisitor)
3027            }
3028        }
3029        struct GeneratedVisitor;
3030        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3031            type Value = GetPublicImageRequest;
3032            fn expecting(
3033                &self,
3034                formatter: &mut std::fmt::Formatter<'_>,
3035            ) -> std::fmt::Result {
3036                formatter
3037                    .write_str(
3038                        "struct origincloud.compute.v1beta1.GetPublicImageRequest",
3039                    )
3040            }
3041            fn visit_map<V>(
3042                self,
3043                mut map_: V,
3044            ) -> std::result::Result<GetPublicImageRequest, V::Error>
3045            where
3046                V: serde::de::MapAccess<'de>,
3047            {
3048                let mut name__ = None;
3049                while let Some(k) = map_.next_key()? {
3050                    match k {
3051                        GeneratedField::Name => {
3052                            if name__.is_some() {
3053                                return Err(serde::de::Error::duplicate_field("name"));
3054                            }
3055                            name__ = Some(map_.next_value()?);
3056                        }
3057                        GeneratedField::__SkipField__ => {
3058                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3059                        }
3060                    }
3061                }
3062                Ok(GetPublicImageRequest {
3063                    name: name__.unwrap_or_default(),
3064                })
3065            }
3066        }
3067        deserializer
3068            .deserialize_struct(
3069                "origincloud.compute.v1beta1.GetPublicImageRequest",
3070                FIELDS,
3071                GeneratedVisitor,
3072            )
3073    }
3074}
3075impl serde::Serialize for GetVolumeAttachmentRequest {
3076    #[allow(deprecated)]
3077    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3078    where
3079        S: serde::Serializer,
3080    {
3081        use serde::ser::SerializeStruct;
3082        let mut len = 0;
3083        if !self.name.is_empty() {
3084            len += 1;
3085        }
3086        let mut struct_ser = serializer
3087            .serialize_struct(
3088                "origincloud.compute.v1beta1.GetVolumeAttachmentRequest",
3089                len,
3090            )?;
3091        if !self.name.is_empty() {
3092            struct_ser.serialize_field("name", &self.name)?;
3093        }
3094        struct_ser.end()
3095    }
3096}
3097impl<'de> serde::Deserialize<'de> for GetVolumeAttachmentRequest {
3098    #[allow(deprecated)]
3099    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3100    where
3101        D: serde::Deserializer<'de>,
3102    {
3103        const FIELDS: &[&str] = &["name"];
3104        #[allow(clippy::enum_variant_names)]
3105        enum GeneratedField {
3106            Name,
3107            __SkipField__,
3108        }
3109        impl<'de> serde::Deserialize<'de> for GeneratedField {
3110            fn deserialize<D>(
3111                deserializer: D,
3112            ) -> std::result::Result<GeneratedField, D::Error>
3113            where
3114                D: serde::Deserializer<'de>,
3115            {
3116                struct GeneratedVisitor;
3117                impl serde::de::Visitor<'_> for GeneratedVisitor {
3118                    type Value = GeneratedField;
3119                    fn expecting(
3120                        &self,
3121                        formatter: &mut std::fmt::Formatter<'_>,
3122                    ) -> std::fmt::Result {
3123                        write!(formatter, "expected one of: {:?}", & FIELDS)
3124                    }
3125                    #[allow(unused_variables)]
3126                    fn visit_str<E>(
3127                        self,
3128                        value: &str,
3129                    ) -> std::result::Result<GeneratedField, E>
3130                    where
3131                        E: serde::de::Error,
3132                    {
3133                        match value {
3134                            "name" => Ok(GeneratedField::Name),
3135                            _ => Ok(GeneratedField::__SkipField__),
3136                        }
3137                    }
3138                }
3139                deserializer.deserialize_identifier(GeneratedVisitor)
3140            }
3141        }
3142        struct GeneratedVisitor;
3143        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3144            type Value = GetVolumeAttachmentRequest;
3145            fn expecting(
3146                &self,
3147                formatter: &mut std::fmt::Formatter<'_>,
3148            ) -> std::fmt::Result {
3149                formatter
3150                    .write_str(
3151                        "struct origincloud.compute.v1beta1.GetVolumeAttachmentRequest",
3152                    )
3153            }
3154            fn visit_map<V>(
3155                self,
3156                mut map_: V,
3157            ) -> std::result::Result<GetVolumeAttachmentRequest, V::Error>
3158            where
3159                V: serde::de::MapAccess<'de>,
3160            {
3161                let mut name__ = None;
3162                while let Some(k) = map_.next_key()? {
3163                    match k {
3164                        GeneratedField::Name => {
3165                            if name__.is_some() {
3166                                return Err(serde::de::Error::duplicate_field("name"));
3167                            }
3168                            name__ = Some(map_.next_value()?);
3169                        }
3170                        GeneratedField::__SkipField__ => {
3171                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3172                        }
3173                    }
3174                }
3175                Ok(GetVolumeAttachmentRequest {
3176                    name: name__.unwrap_or_default(),
3177                })
3178            }
3179        }
3180        deserializer
3181            .deserialize_struct(
3182                "origincloud.compute.v1beta1.GetVolumeAttachmentRequest",
3183                FIELDS,
3184                GeneratedVisitor,
3185            )
3186    }
3187}
3188impl serde::Serialize for HealthCheck {
3189    #[allow(deprecated)]
3190    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3191    where
3192        S: serde::Serializer,
3193    {
3194        use serde::ser::SerializeStruct;
3195        let mut len = 0;
3196        if self.kind != 0 {
3197            len += 1;
3198        }
3199        if self.category != 0 {
3200            len += 1;
3201        }
3202        if self.outcome != 0 {
3203            len += 1;
3204        }
3205        if self.change_time.is_some() {
3206            len += 1;
3207        }
3208        let mut struct_ser = serializer
3209            .serialize_struct("origincloud.compute.v1beta1.HealthCheck", len)?;
3210        if self.kind != 0 {
3211            let v = health_check::Kind::try_from(self.kind)
3212                .map_err(|_| serde::ser::Error::custom(
3213                    format!("Invalid variant {}", self.kind),
3214                ))?;
3215            struct_ser.serialize_field("kind", &v)?;
3216        }
3217        if self.category != 0 {
3218            let v = health_check::Category::try_from(self.category)
3219                .map_err(|_| serde::ser::Error::custom(
3220                    format!("Invalid variant {}", self.category),
3221                ))?;
3222            struct_ser.serialize_field("category", &v)?;
3223        }
3224        if self.outcome != 0 {
3225            let v = health_check::Outcome::try_from(self.outcome)
3226                .map_err(|_| serde::ser::Error::custom(
3227                    format!("Invalid variant {}", self.outcome),
3228                ))?;
3229            struct_ser.serialize_field("outcome", &v)?;
3230        }
3231        if let Some(v) = self.change_time.as_ref() {
3232            struct_ser.serialize_field("changeTime", v)?;
3233        }
3234        struct_ser.end()
3235    }
3236}
3237impl<'de> serde::Deserialize<'de> for HealthCheck {
3238    #[allow(deprecated)]
3239    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3240    where
3241        D: serde::Deserializer<'de>,
3242    {
3243        const FIELDS: &[&str] = &[
3244            "kind",
3245            "category",
3246            "outcome",
3247            "change_time",
3248            "changeTime",
3249        ];
3250        #[allow(clippy::enum_variant_names)]
3251        enum GeneratedField {
3252            Kind,
3253            Category,
3254            Outcome,
3255            ChangeTime,
3256            __SkipField__,
3257        }
3258        impl<'de> serde::Deserialize<'de> for GeneratedField {
3259            fn deserialize<D>(
3260                deserializer: D,
3261            ) -> std::result::Result<GeneratedField, D::Error>
3262            where
3263                D: serde::Deserializer<'de>,
3264            {
3265                struct GeneratedVisitor;
3266                impl serde::de::Visitor<'_> for GeneratedVisitor {
3267                    type Value = GeneratedField;
3268                    fn expecting(
3269                        &self,
3270                        formatter: &mut std::fmt::Formatter<'_>,
3271                    ) -> std::fmt::Result {
3272                        write!(formatter, "expected one of: {:?}", & FIELDS)
3273                    }
3274                    #[allow(unused_variables)]
3275                    fn visit_str<E>(
3276                        self,
3277                        value: &str,
3278                    ) -> std::result::Result<GeneratedField, E>
3279                    where
3280                        E: serde::de::Error,
3281                    {
3282                        match value {
3283                            "kind" => Ok(GeneratedField::Kind),
3284                            "category" => Ok(GeneratedField::Category),
3285                            "outcome" => Ok(GeneratedField::Outcome),
3286                            "changeTime" | "change_time" => {
3287                                Ok(GeneratedField::ChangeTime)
3288                            }
3289                            _ => Ok(GeneratedField::__SkipField__),
3290                        }
3291                    }
3292                }
3293                deserializer.deserialize_identifier(GeneratedVisitor)
3294            }
3295        }
3296        struct GeneratedVisitor;
3297        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3298            type Value = HealthCheck;
3299            fn expecting(
3300                &self,
3301                formatter: &mut std::fmt::Formatter<'_>,
3302            ) -> std::fmt::Result {
3303                formatter.write_str("struct origincloud.compute.v1beta1.HealthCheck")
3304            }
3305            fn visit_map<V>(
3306                self,
3307                mut map_: V,
3308            ) -> std::result::Result<HealthCheck, V::Error>
3309            where
3310                V: serde::de::MapAccess<'de>,
3311            {
3312                let mut kind__ = None;
3313                let mut category__ = None;
3314                let mut outcome__ = None;
3315                let mut change_time__ = None;
3316                while let Some(k) = map_.next_key()? {
3317                    match k {
3318                        GeneratedField::Kind => {
3319                            if kind__.is_some() {
3320                                return Err(serde::de::Error::duplicate_field("kind"));
3321                            }
3322                            kind__ = Some(
3323                                map_.next_value::<health_check::Kind>()? as i32,
3324                            );
3325                        }
3326                        GeneratedField::Category => {
3327                            if category__.is_some() {
3328                                return Err(serde::de::Error::duplicate_field("category"));
3329                            }
3330                            category__ = Some(
3331                                map_.next_value::<health_check::Category>()? as i32,
3332                            );
3333                        }
3334                        GeneratedField::Outcome => {
3335                            if outcome__.is_some() {
3336                                return Err(serde::de::Error::duplicate_field("outcome"));
3337                            }
3338                            outcome__ = Some(
3339                                map_.next_value::<health_check::Outcome>()? as i32,
3340                            );
3341                        }
3342                        GeneratedField::ChangeTime => {
3343                            if change_time__.is_some() {
3344                                return Err(serde::de::Error::duplicate_field("changeTime"));
3345                            }
3346                            change_time__ = map_.next_value()?;
3347                        }
3348                        GeneratedField::__SkipField__ => {
3349                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3350                        }
3351                    }
3352                }
3353                Ok(HealthCheck {
3354                    kind: kind__.unwrap_or_default(),
3355                    category: category__.unwrap_or_default(),
3356                    outcome: outcome__.unwrap_or_default(),
3357                    change_time: change_time__,
3358                })
3359            }
3360        }
3361        deserializer
3362            .deserialize_struct(
3363                "origincloud.compute.v1beta1.HealthCheck",
3364                FIELDS,
3365                GeneratedVisitor,
3366            )
3367    }
3368}
3369impl serde::Serialize for health_check::Category {
3370    #[allow(deprecated)]
3371    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3372    where
3373        S: serde::Serializer,
3374    {
3375        let variant = match self {
3376            Self::Unspecified => "CATEGORY_UNSPECIFIED",
3377            Self::System => "SYSTEM",
3378            Self::Instance => "INSTANCE",
3379        };
3380        serializer.serialize_str(variant)
3381    }
3382}
3383impl<'de> serde::Deserialize<'de> for health_check::Category {
3384    #[allow(deprecated)]
3385    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3386    where
3387        D: serde::Deserializer<'de>,
3388    {
3389        const FIELDS: &[&str] = &["CATEGORY_UNSPECIFIED", "SYSTEM", "INSTANCE"];
3390        struct GeneratedVisitor;
3391        impl serde::de::Visitor<'_> for GeneratedVisitor {
3392            type Value = health_check::Category;
3393            fn expecting(
3394                &self,
3395                formatter: &mut std::fmt::Formatter<'_>,
3396            ) -> std::fmt::Result {
3397                write!(formatter, "expected one of: {:?}", & FIELDS)
3398            }
3399            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3400            where
3401                E: serde::de::Error,
3402            {
3403                i32::try_from(v)
3404                    .ok()
3405                    .and_then(|x| {
3406                        x
3407                            .try_into()
3408                            .ok()
3409                            .or_else(|| Some(health_check::Category::default()))
3410                    })
3411                    .ok_or_else(|| {
3412                        serde::de::Error::invalid_value(
3413                            serde::de::Unexpected::Signed(v),
3414                            &self,
3415                        )
3416                    })
3417            }
3418            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3419            where
3420                E: serde::de::Error,
3421            {
3422                i32::try_from(v)
3423                    .ok()
3424                    .and_then(|x| {
3425                        x
3426                            .try_into()
3427                            .ok()
3428                            .or_else(|| Some(health_check::Category::default()))
3429                    })
3430                    .ok_or_else(|| {
3431                        serde::de::Error::invalid_value(
3432                            serde::de::Unexpected::Unsigned(v),
3433                            &self,
3434                        )
3435                    })
3436            }
3437            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3438            where
3439                E: serde::de::Error,
3440            {
3441                match value {
3442                    "CATEGORY_UNSPECIFIED" => Ok(health_check::Category::Unspecified),
3443                    "SYSTEM" => Ok(health_check::Category::System),
3444                    "INSTANCE" => Ok(health_check::Category::Instance),
3445                    _ => Ok(health_check::Category::default()),
3446                }
3447            }
3448        }
3449        deserializer.deserialize_any(GeneratedVisitor)
3450    }
3451}
3452impl serde::Serialize for health_check::Kind {
3453    #[allow(deprecated)]
3454    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3455    where
3456        S: serde::Serializer,
3457    {
3458        let variant = match self {
3459            Self::Unspecified => "KIND_UNSPECIFIED",
3460            Self::HostReachable => "HOST_REACHABLE",
3461            Self::DomainState => "DOMAIN_STATE",
3462            Self::NetworkReachable => "NETWORK_REACHABLE",
3463            Self::GuestAgent => "GUEST_AGENT",
3464            Self::GuestPresent => "GUEST_PRESENT",
3465        };
3466        serializer.serialize_str(variant)
3467    }
3468}
3469impl<'de> serde::Deserialize<'de> for health_check::Kind {
3470    #[allow(deprecated)]
3471    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3472    where
3473        D: serde::Deserializer<'de>,
3474    {
3475        const FIELDS: &[&str] = &[
3476            "KIND_UNSPECIFIED",
3477            "HOST_REACHABLE",
3478            "DOMAIN_STATE",
3479            "NETWORK_REACHABLE",
3480            "GUEST_AGENT",
3481            "GUEST_PRESENT",
3482        ];
3483        struct GeneratedVisitor;
3484        impl serde::de::Visitor<'_> for GeneratedVisitor {
3485            type Value = health_check::Kind;
3486            fn expecting(
3487                &self,
3488                formatter: &mut std::fmt::Formatter<'_>,
3489            ) -> std::fmt::Result {
3490                write!(formatter, "expected one of: {:?}", & FIELDS)
3491            }
3492            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3493            where
3494                E: serde::de::Error,
3495            {
3496                i32::try_from(v)
3497                    .ok()
3498                    .and_then(|x| {
3499                        x.try_into().ok().or_else(|| Some(health_check::Kind::default()))
3500                    })
3501                    .ok_or_else(|| {
3502                        serde::de::Error::invalid_value(
3503                            serde::de::Unexpected::Signed(v),
3504                            &self,
3505                        )
3506                    })
3507            }
3508            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3509            where
3510                E: serde::de::Error,
3511            {
3512                i32::try_from(v)
3513                    .ok()
3514                    .and_then(|x| {
3515                        x.try_into().ok().or_else(|| Some(health_check::Kind::default()))
3516                    })
3517                    .ok_or_else(|| {
3518                        serde::de::Error::invalid_value(
3519                            serde::de::Unexpected::Unsigned(v),
3520                            &self,
3521                        )
3522                    })
3523            }
3524            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3525            where
3526                E: serde::de::Error,
3527            {
3528                match value {
3529                    "KIND_UNSPECIFIED" => Ok(health_check::Kind::Unspecified),
3530                    "HOST_REACHABLE" => Ok(health_check::Kind::HostReachable),
3531                    "DOMAIN_STATE" => Ok(health_check::Kind::DomainState),
3532                    "NETWORK_REACHABLE" => Ok(health_check::Kind::NetworkReachable),
3533                    "GUEST_AGENT" => Ok(health_check::Kind::GuestAgent),
3534                    "GUEST_PRESENT" => Ok(health_check::Kind::GuestPresent),
3535                    _ => Ok(health_check::Kind::default()),
3536                }
3537            }
3538        }
3539        deserializer.deserialize_any(GeneratedVisitor)
3540    }
3541}
3542impl serde::Serialize for health_check::Outcome {
3543    #[allow(deprecated)]
3544    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3545    where
3546        S: serde::Serializer,
3547    {
3548        let variant = match self {
3549            Self::Unspecified => "OUTCOME_UNSPECIFIED",
3550            Self::Ok => "OK",
3551            Self::Impaired => "IMPAIRED",
3552            Self::InsufficientData => "INSUFFICIENT_DATA",
3553            Self::NotApplicable => "NOT_APPLICABLE",
3554        };
3555        serializer.serialize_str(variant)
3556    }
3557}
3558impl<'de> serde::Deserialize<'de> for health_check::Outcome {
3559    #[allow(deprecated)]
3560    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3561    where
3562        D: serde::Deserializer<'de>,
3563    {
3564        const FIELDS: &[&str] = &[
3565            "OUTCOME_UNSPECIFIED",
3566            "OK",
3567            "IMPAIRED",
3568            "INSUFFICIENT_DATA",
3569            "NOT_APPLICABLE",
3570        ];
3571        struct GeneratedVisitor;
3572        impl serde::de::Visitor<'_> for GeneratedVisitor {
3573            type Value = health_check::Outcome;
3574            fn expecting(
3575                &self,
3576                formatter: &mut std::fmt::Formatter<'_>,
3577            ) -> std::fmt::Result {
3578                write!(formatter, "expected one of: {:?}", & FIELDS)
3579            }
3580            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3581            where
3582                E: serde::de::Error,
3583            {
3584                i32::try_from(v)
3585                    .ok()
3586                    .and_then(|x| {
3587                        x
3588                            .try_into()
3589                            .ok()
3590                            .or_else(|| Some(health_check::Outcome::default()))
3591                    })
3592                    .ok_or_else(|| {
3593                        serde::de::Error::invalid_value(
3594                            serde::de::Unexpected::Signed(v),
3595                            &self,
3596                        )
3597                    })
3598            }
3599            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3600            where
3601                E: serde::de::Error,
3602            {
3603                i32::try_from(v)
3604                    .ok()
3605                    .and_then(|x| {
3606                        x
3607                            .try_into()
3608                            .ok()
3609                            .or_else(|| Some(health_check::Outcome::default()))
3610                    })
3611                    .ok_or_else(|| {
3612                        serde::de::Error::invalid_value(
3613                            serde::de::Unexpected::Unsigned(v),
3614                            &self,
3615                        )
3616                    })
3617            }
3618            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3619            where
3620                E: serde::de::Error,
3621            {
3622                match value {
3623                    "OUTCOME_UNSPECIFIED" => Ok(health_check::Outcome::Unspecified),
3624                    "OK" => Ok(health_check::Outcome::Ok),
3625                    "IMPAIRED" => Ok(health_check::Outcome::Impaired),
3626                    "INSUFFICIENT_DATA" => Ok(health_check::Outcome::InsufficientData),
3627                    "NOT_APPLICABLE" => Ok(health_check::Outcome::NotApplicable),
3628                    _ => Ok(health_check::Outcome::default()),
3629                }
3630            }
3631        }
3632        deserializer.deserialize_any(GeneratedVisitor)
3633    }
3634}
3635impl serde::Serialize for Image {
3636    #[allow(deprecated)]
3637    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3638    where
3639        S: serde::Serializer,
3640    {
3641        use serde::ser::SerializeStruct;
3642        let mut len = 0;
3643        if !self.name.is_empty() {
3644            len += 1;
3645        }
3646        if !self.urn.is_empty() {
3647            len += 1;
3648        }
3649        if !self.description.is_empty() {
3650            len += 1;
3651        }
3652        if !self.default_user.is_empty() {
3653            len += 1;
3654        }
3655        if !self.root_device.is_empty() {
3656            len += 1;
3657        }
3658        if !self.block_devices.is_empty() {
3659            len += 1;
3660        }
3661        if self.architecture != 0 {
3662            len += 1;
3663        }
3664        if self.platform != 0 {
3665            len += 1;
3666        }
3667        if self.state != 0 {
3668            len += 1;
3669        }
3670        if !self.creator.is_empty() {
3671            len += 1;
3672        }
3673        if !self.tags.is_empty() {
3674            len += 1;
3675        }
3676        let mut struct_ser = serializer
3677            .serialize_struct("origincloud.compute.v1beta1.Image", len)?;
3678        if !self.name.is_empty() {
3679            struct_ser.serialize_field("name", &self.name)?;
3680        }
3681        if !self.urn.is_empty() {
3682            struct_ser.serialize_field("urn", &self.urn)?;
3683        }
3684        if !self.description.is_empty() {
3685            struct_ser.serialize_field("description", &self.description)?;
3686        }
3687        if !self.default_user.is_empty() {
3688            struct_ser.serialize_field("defaultUser", &self.default_user)?;
3689        }
3690        if !self.root_device.is_empty() {
3691            struct_ser.serialize_field("rootDevice", &self.root_device)?;
3692        }
3693        if !self.block_devices.is_empty() {
3694            struct_ser.serialize_field("blockDevices", &self.block_devices)?;
3695        }
3696        if self.architecture != 0 {
3697            let v = image::Architecture::try_from(self.architecture)
3698                .map_err(|_| serde::ser::Error::custom(
3699                    format!("Invalid variant {}", self.architecture),
3700                ))?;
3701            struct_ser.serialize_field("architecture", &v)?;
3702        }
3703        if self.platform != 0 {
3704            let v = image::Platform::try_from(self.platform)
3705                .map_err(|_| serde::ser::Error::custom(
3706                    format!("Invalid variant {}", self.platform),
3707                ))?;
3708            struct_ser.serialize_field("platform", &v)?;
3709        }
3710        if self.state != 0 {
3711            let v = image::State::try_from(self.state)
3712                .map_err(|_| serde::ser::Error::custom(
3713                    format!("Invalid variant {}", self.state),
3714                ))?;
3715            struct_ser.serialize_field("state", &v)?;
3716        }
3717        if !self.creator.is_empty() {
3718            struct_ser.serialize_field("creator", &self.creator)?;
3719        }
3720        if !self.tags.is_empty() {
3721            struct_ser.serialize_field("tags", &self.tags)?;
3722        }
3723        struct_ser.end()
3724    }
3725}
3726impl<'de> serde::Deserialize<'de> for Image {
3727    #[allow(deprecated)]
3728    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3729    where
3730        D: serde::Deserializer<'de>,
3731    {
3732        const FIELDS: &[&str] = &[
3733            "name",
3734            "urn",
3735            "description",
3736            "default_user",
3737            "defaultUser",
3738            "root_device",
3739            "rootDevice",
3740            "block_devices",
3741            "blockDevices",
3742            "architecture",
3743            "platform",
3744            "state",
3745            "creator",
3746            "tags",
3747        ];
3748        #[allow(clippy::enum_variant_names)]
3749        enum GeneratedField {
3750            Name,
3751            Urn,
3752            Description,
3753            DefaultUser,
3754            RootDevice,
3755            BlockDevices,
3756            Architecture,
3757            Platform,
3758            State,
3759            Creator,
3760            Tags,
3761            __SkipField__,
3762        }
3763        impl<'de> serde::Deserialize<'de> for GeneratedField {
3764            fn deserialize<D>(
3765                deserializer: D,
3766            ) -> std::result::Result<GeneratedField, D::Error>
3767            where
3768                D: serde::Deserializer<'de>,
3769            {
3770                struct GeneratedVisitor;
3771                impl serde::de::Visitor<'_> for GeneratedVisitor {
3772                    type Value = GeneratedField;
3773                    fn expecting(
3774                        &self,
3775                        formatter: &mut std::fmt::Formatter<'_>,
3776                    ) -> std::fmt::Result {
3777                        write!(formatter, "expected one of: {:?}", & FIELDS)
3778                    }
3779                    #[allow(unused_variables)]
3780                    fn visit_str<E>(
3781                        self,
3782                        value: &str,
3783                    ) -> std::result::Result<GeneratedField, E>
3784                    where
3785                        E: serde::de::Error,
3786                    {
3787                        match value {
3788                            "name" => Ok(GeneratedField::Name),
3789                            "urn" => Ok(GeneratedField::Urn),
3790                            "description" => Ok(GeneratedField::Description),
3791                            "defaultUser" | "default_user" => {
3792                                Ok(GeneratedField::DefaultUser)
3793                            }
3794                            "rootDevice" | "root_device" => {
3795                                Ok(GeneratedField::RootDevice)
3796                            }
3797                            "blockDevices" | "block_devices" => {
3798                                Ok(GeneratedField::BlockDevices)
3799                            }
3800                            "architecture" => Ok(GeneratedField::Architecture),
3801                            "platform" => Ok(GeneratedField::Platform),
3802                            "state" => Ok(GeneratedField::State),
3803                            "creator" => Ok(GeneratedField::Creator),
3804                            "tags" => Ok(GeneratedField::Tags),
3805                            _ => Ok(GeneratedField::__SkipField__),
3806                        }
3807                    }
3808                }
3809                deserializer.deserialize_identifier(GeneratedVisitor)
3810            }
3811        }
3812        struct GeneratedVisitor;
3813        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3814            type Value = Image;
3815            fn expecting(
3816                &self,
3817                formatter: &mut std::fmt::Formatter<'_>,
3818            ) -> std::fmt::Result {
3819                formatter.write_str("struct origincloud.compute.v1beta1.Image")
3820            }
3821            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Image, V::Error>
3822            where
3823                V: serde::de::MapAccess<'de>,
3824            {
3825                let mut name__ = None;
3826                let mut urn__ = None;
3827                let mut description__ = None;
3828                let mut default_user__ = None;
3829                let mut root_device__ = None;
3830                let mut block_devices__ = None;
3831                let mut architecture__ = None;
3832                let mut platform__ = None;
3833                let mut state__ = None;
3834                let mut creator__ = None;
3835                let mut tags__ = None;
3836                while let Some(k) = map_.next_key()? {
3837                    match k {
3838                        GeneratedField::Name => {
3839                            if name__.is_some() {
3840                                return Err(serde::de::Error::duplicate_field("name"));
3841                            }
3842                            name__ = Some(map_.next_value()?);
3843                        }
3844                        GeneratedField::Urn => {
3845                            if urn__.is_some() {
3846                                return Err(serde::de::Error::duplicate_field("urn"));
3847                            }
3848                            urn__ = Some(map_.next_value()?);
3849                        }
3850                        GeneratedField::Description => {
3851                            if description__.is_some() {
3852                                return Err(
3853                                    serde::de::Error::duplicate_field("description"),
3854                                );
3855                            }
3856                            description__ = Some(map_.next_value()?);
3857                        }
3858                        GeneratedField::DefaultUser => {
3859                            if default_user__.is_some() {
3860                                return Err(
3861                                    serde::de::Error::duplicate_field("defaultUser"),
3862                                );
3863                            }
3864                            default_user__ = Some(map_.next_value()?);
3865                        }
3866                        GeneratedField::RootDevice => {
3867                            if root_device__.is_some() {
3868                                return Err(serde::de::Error::duplicate_field("rootDevice"));
3869                            }
3870                            root_device__ = Some(map_.next_value()?);
3871                        }
3872                        GeneratedField::BlockDevices => {
3873                            if block_devices__.is_some() {
3874                                return Err(
3875                                    serde::de::Error::duplicate_field("blockDevices"),
3876                                );
3877                            }
3878                            block_devices__ = Some(map_.next_value()?);
3879                        }
3880                        GeneratedField::Architecture => {
3881                            if architecture__.is_some() {
3882                                return Err(
3883                                    serde::de::Error::duplicate_field("architecture"),
3884                                );
3885                            }
3886                            architecture__ = Some(
3887                                map_.next_value::<image::Architecture>()? as i32,
3888                            );
3889                        }
3890                        GeneratedField::Platform => {
3891                            if platform__.is_some() {
3892                                return Err(serde::de::Error::duplicate_field("platform"));
3893                            }
3894                            platform__ = Some(
3895                                map_.next_value::<image::Platform>()? as i32,
3896                            );
3897                        }
3898                        GeneratedField::State => {
3899                            if state__.is_some() {
3900                                return Err(serde::de::Error::duplicate_field("state"));
3901                            }
3902                            state__ = Some(map_.next_value::<image::State>()? as i32);
3903                        }
3904                        GeneratedField::Creator => {
3905                            if creator__.is_some() {
3906                                return Err(serde::de::Error::duplicate_field("creator"));
3907                            }
3908                            creator__ = Some(map_.next_value()?);
3909                        }
3910                        GeneratedField::Tags => {
3911                            if tags__.is_some() {
3912                                return Err(serde::de::Error::duplicate_field("tags"));
3913                            }
3914                            tags__ = Some(
3915                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
3916                            );
3917                        }
3918                        GeneratedField::__SkipField__ => {
3919                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3920                        }
3921                    }
3922                }
3923                Ok(Image {
3924                    name: name__.unwrap_or_default(),
3925                    urn: urn__.unwrap_or_default(),
3926                    description: description__.unwrap_or_default(),
3927                    default_user: default_user__.unwrap_or_default(),
3928                    root_device: root_device__.unwrap_or_default(),
3929                    block_devices: block_devices__.unwrap_or_default(),
3930                    architecture: architecture__.unwrap_or_default(),
3931                    platform: platform__.unwrap_or_default(),
3932                    state: state__.unwrap_or_default(),
3933                    creator: creator__.unwrap_or_default(),
3934                    tags: tags__.unwrap_or_default(),
3935                })
3936            }
3937        }
3938        deserializer
3939            .deserialize_struct(
3940                "origincloud.compute.v1beta1.Image",
3941                FIELDS,
3942                GeneratedVisitor,
3943            )
3944    }
3945}
3946impl serde::Serialize for image::Architecture {
3947    #[allow(deprecated)]
3948    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3949    where
3950        S: serde::Serializer,
3951    {
3952        let variant = match self {
3953            Self::Unspecified => "ARCHITECTURE_UNSPECIFIED",
3954            Self::X8664 => "X86_64",
3955        };
3956        serializer.serialize_str(variant)
3957    }
3958}
3959impl<'de> serde::Deserialize<'de> for image::Architecture {
3960    #[allow(deprecated)]
3961    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3962    where
3963        D: serde::Deserializer<'de>,
3964    {
3965        const FIELDS: &[&str] = &["ARCHITECTURE_UNSPECIFIED", "X86_64"];
3966        struct GeneratedVisitor;
3967        impl serde::de::Visitor<'_> for GeneratedVisitor {
3968            type Value = image::Architecture;
3969            fn expecting(
3970                &self,
3971                formatter: &mut std::fmt::Formatter<'_>,
3972            ) -> std::fmt::Result {
3973                write!(formatter, "expected one of: {:?}", & FIELDS)
3974            }
3975            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3976            where
3977                E: serde::de::Error,
3978            {
3979                i32::try_from(v)
3980                    .ok()
3981                    .and_then(|x| {
3982                        x
3983                            .try_into()
3984                            .ok()
3985                            .or_else(|| Some(image::Architecture::default()))
3986                    })
3987                    .ok_or_else(|| {
3988                        serde::de::Error::invalid_value(
3989                            serde::de::Unexpected::Signed(v),
3990                            &self,
3991                        )
3992                    })
3993            }
3994            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3995            where
3996                E: serde::de::Error,
3997            {
3998                i32::try_from(v)
3999                    .ok()
4000                    .and_then(|x| {
4001                        x
4002                            .try_into()
4003                            .ok()
4004                            .or_else(|| Some(image::Architecture::default()))
4005                    })
4006                    .ok_or_else(|| {
4007                        serde::de::Error::invalid_value(
4008                            serde::de::Unexpected::Unsigned(v),
4009                            &self,
4010                        )
4011                    })
4012            }
4013            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4014            where
4015                E: serde::de::Error,
4016            {
4017                match value {
4018                    "ARCHITECTURE_UNSPECIFIED" => Ok(image::Architecture::Unspecified),
4019                    "X86_64" => Ok(image::Architecture::X8664),
4020                    _ => Ok(image::Architecture::default()),
4021                }
4022            }
4023        }
4024        deserializer.deserialize_any(GeneratedVisitor)
4025    }
4026}
4027impl serde::Serialize for image::Platform {
4028    #[allow(deprecated)]
4029    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4030    where
4031        S: serde::Serializer,
4032    {
4033        let variant = match self {
4034            Self::Unspecified => "PLATFORM_UNSPECIFIED",
4035            Self::LinuxUnix => "LINUX_UNIX",
4036        };
4037        serializer.serialize_str(variant)
4038    }
4039}
4040impl<'de> serde::Deserialize<'de> for image::Platform {
4041    #[allow(deprecated)]
4042    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4043    where
4044        D: serde::Deserializer<'de>,
4045    {
4046        const FIELDS: &[&str] = &["PLATFORM_UNSPECIFIED", "LINUX_UNIX"];
4047        struct GeneratedVisitor;
4048        impl serde::de::Visitor<'_> for GeneratedVisitor {
4049            type Value = image::Platform;
4050            fn expecting(
4051                &self,
4052                formatter: &mut std::fmt::Formatter<'_>,
4053            ) -> std::fmt::Result {
4054                write!(formatter, "expected one of: {:?}", & FIELDS)
4055            }
4056            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4057            where
4058                E: serde::de::Error,
4059            {
4060                i32::try_from(v)
4061                    .ok()
4062                    .and_then(|x| {
4063                        x.try_into().ok().or_else(|| Some(image::Platform::default()))
4064                    })
4065                    .ok_or_else(|| {
4066                        serde::de::Error::invalid_value(
4067                            serde::de::Unexpected::Signed(v),
4068                            &self,
4069                        )
4070                    })
4071            }
4072            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4073            where
4074                E: serde::de::Error,
4075            {
4076                i32::try_from(v)
4077                    .ok()
4078                    .and_then(|x| {
4079                        x.try_into().ok().or_else(|| Some(image::Platform::default()))
4080                    })
4081                    .ok_or_else(|| {
4082                        serde::de::Error::invalid_value(
4083                            serde::de::Unexpected::Unsigned(v),
4084                            &self,
4085                        )
4086                    })
4087            }
4088            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4089            where
4090                E: serde::de::Error,
4091            {
4092                match value {
4093                    "PLATFORM_UNSPECIFIED" => Ok(image::Platform::Unspecified),
4094                    "LINUX_UNIX" => Ok(image::Platform::LinuxUnix),
4095                    _ => Ok(image::Platform::default()),
4096                }
4097            }
4098        }
4099        deserializer.deserialize_any(GeneratedVisitor)
4100    }
4101}
4102impl serde::Serialize for image::State {
4103    #[allow(deprecated)]
4104    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4105    where
4106        S: serde::Serializer,
4107    {
4108        let variant = match self {
4109            Self::Unspecified => "STATE_UNSPECIFIED",
4110            Self::Available => "AVAILABLE",
4111        };
4112        serializer.serialize_str(variant)
4113    }
4114}
4115impl<'de> serde::Deserialize<'de> for image::State {
4116    #[allow(deprecated)]
4117    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4118    where
4119        D: serde::Deserializer<'de>,
4120    {
4121        const FIELDS: &[&str] = &["STATE_UNSPECIFIED", "AVAILABLE"];
4122        struct GeneratedVisitor;
4123        impl serde::de::Visitor<'_> for GeneratedVisitor {
4124            type Value = image::State;
4125            fn expecting(
4126                &self,
4127                formatter: &mut std::fmt::Formatter<'_>,
4128            ) -> std::fmt::Result {
4129                write!(formatter, "expected one of: {:?}", & FIELDS)
4130            }
4131            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4132            where
4133                E: serde::de::Error,
4134            {
4135                i32::try_from(v)
4136                    .ok()
4137                    .and_then(|x| {
4138                        x.try_into().ok().or_else(|| Some(image::State::default()))
4139                    })
4140                    .ok_or_else(|| {
4141                        serde::de::Error::invalid_value(
4142                            serde::de::Unexpected::Signed(v),
4143                            &self,
4144                        )
4145                    })
4146            }
4147            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4148            where
4149                E: serde::de::Error,
4150            {
4151                i32::try_from(v)
4152                    .ok()
4153                    .and_then(|x| {
4154                        x.try_into().ok().or_else(|| Some(image::State::default()))
4155                    })
4156                    .ok_or_else(|| {
4157                        serde::de::Error::invalid_value(
4158                            serde::de::Unexpected::Unsigned(v),
4159                            &self,
4160                        )
4161                    })
4162            }
4163            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4164            where
4165                E: serde::de::Error,
4166            {
4167                match value {
4168                    "STATE_UNSPECIFIED" => Ok(image::State::Unspecified),
4169                    "AVAILABLE" => Ok(image::State::Available),
4170                    _ => Ok(image::State::default()),
4171                }
4172            }
4173        }
4174        deserializer.deserialize_any(GeneratedVisitor)
4175    }
4176}
4177impl serde::Serialize for ImageBlockDevice {
4178    #[allow(deprecated)]
4179    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4180    where
4181        S: serde::Serializer,
4182    {
4183        use serde::ser::SerializeStruct;
4184        let mut len = 0;
4185        if !self.device.is_empty() {
4186            len += 1;
4187        }
4188        if self.size_gib != 0 {
4189            len += 1;
4190        }
4191        if !self.source_snapshot.is_empty() {
4192            len += 1;
4193        }
4194        let mut struct_ser = serializer
4195            .serialize_struct("origincloud.compute.v1beta1.ImageBlockDevice", len)?;
4196        if !self.device.is_empty() {
4197            struct_ser.serialize_field("device", &self.device)?;
4198        }
4199        if self.size_gib != 0 {
4200            struct_ser.serialize_field("sizeGib", &self.size_gib)?;
4201        }
4202        if !self.source_snapshot.is_empty() {
4203            struct_ser.serialize_field("sourceSnapshot", &self.source_snapshot)?;
4204        }
4205        struct_ser.end()
4206    }
4207}
4208impl<'de> serde::Deserialize<'de> for ImageBlockDevice {
4209    #[allow(deprecated)]
4210    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4211    where
4212        D: serde::Deserializer<'de>,
4213    {
4214        const FIELDS: &[&str] = &[
4215            "device",
4216            "size_gib",
4217            "sizeGib",
4218            "source_snapshot",
4219            "sourceSnapshot",
4220        ];
4221        #[allow(clippy::enum_variant_names)]
4222        enum GeneratedField {
4223            Device,
4224            SizeGib,
4225            SourceSnapshot,
4226            __SkipField__,
4227        }
4228        impl<'de> serde::Deserialize<'de> for GeneratedField {
4229            fn deserialize<D>(
4230                deserializer: D,
4231            ) -> std::result::Result<GeneratedField, D::Error>
4232            where
4233                D: serde::Deserializer<'de>,
4234            {
4235                struct GeneratedVisitor;
4236                impl serde::de::Visitor<'_> for GeneratedVisitor {
4237                    type Value = GeneratedField;
4238                    fn expecting(
4239                        &self,
4240                        formatter: &mut std::fmt::Formatter<'_>,
4241                    ) -> std::fmt::Result {
4242                        write!(formatter, "expected one of: {:?}", & FIELDS)
4243                    }
4244                    #[allow(unused_variables)]
4245                    fn visit_str<E>(
4246                        self,
4247                        value: &str,
4248                    ) -> std::result::Result<GeneratedField, E>
4249                    where
4250                        E: serde::de::Error,
4251                    {
4252                        match value {
4253                            "device" => Ok(GeneratedField::Device),
4254                            "sizeGib" | "size_gib" => Ok(GeneratedField::SizeGib),
4255                            "sourceSnapshot" | "source_snapshot" => {
4256                                Ok(GeneratedField::SourceSnapshot)
4257                            }
4258                            _ => Ok(GeneratedField::__SkipField__),
4259                        }
4260                    }
4261                }
4262                deserializer.deserialize_identifier(GeneratedVisitor)
4263            }
4264        }
4265        struct GeneratedVisitor;
4266        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4267            type Value = ImageBlockDevice;
4268            fn expecting(
4269                &self,
4270                formatter: &mut std::fmt::Formatter<'_>,
4271            ) -> std::fmt::Result {
4272                formatter
4273                    .write_str("struct origincloud.compute.v1beta1.ImageBlockDevice")
4274            }
4275            fn visit_map<V>(
4276                self,
4277                mut map_: V,
4278            ) -> std::result::Result<ImageBlockDevice, V::Error>
4279            where
4280                V: serde::de::MapAccess<'de>,
4281            {
4282                let mut device__ = None;
4283                let mut size_gib__ = None;
4284                let mut source_snapshot__ = None;
4285                while let Some(k) = map_.next_key()? {
4286                    match k {
4287                        GeneratedField::Device => {
4288                            if device__.is_some() {
4289                                return Err(serde::de::Error::duplicate_field("device"));
4290                            }
4291                            device__ = Some(map_.next_value()?);
4292                        }
4293                        GeneratedField::SizeGib => {
4294                            if size_gib__.is_some() {
4295                                return Err(serde::de::Error::duplicate_field("sizeGib"));
4296                            }
4297                            size_gib__ = Some(
4298                                map_
4299                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
4300                                    .0,
4301                            );
4302                        }
4303                        GeneratedField::SourceSnapshot => {
4304                            if source_snapshot__.is_some() {
4305                                return Err(
4306                                    serde::de::Error::duplicate_field("sourceSnapshot"),
4307                                );
4308                            }
4309                            source_snapshot__ = Some(map_.next_value()?);
4310                        }
4311                        GeneratedField::__SkipField__ => {
4312                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4313                        }
4314                    }
4315                }
4316                Ok(ImageBlockDevice {
4317                    device: device__.unwrap_or_default(),
4318                    size_gib: size_gib__.unwrap_or_default(),
4319                    source_snapshot: source_snapshot__.unwrap_or_default(),
4320                })
4321            }
4322        }
4323        deserializer
4324            .deserialize_struct(
4325                "origincloud.compute.v1beta1.ImageBlockDevice",
4326                FIELDS,
4327                GeneratedVisitor,
4328            )
4329    }
4330}
4331impl serde::Serialize for ImageFamily {
4332    #[allow(deprecated)]
4333    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4334    where
4335        S: serde::Serializer,
4336    {
4337        use serde::ser::SerializeStruct;
4338        let mut len = 0;
4339        if !self.name.is_empty() {
4340            len += 1;
4341        }
4342        if !self.display_name.is_empty() {
4343            len += 1;
4344        }
4345        if !self.description.is_empty() {
4346            len += 1;
4347        }
4348        if !self.vendor.is_empty() {
4349            len += 1;
4350        }
4351        if !self.os.is_empty() {
4352            len += 1;
4353        }
4354        if !self.os_version.is_empty() {
4355            len += 1;
4356        }
4357        if self.support_end_time.is_some() {
4358            len += 1;
4359        }
4360        if self.available {
4361            len += 1;
4362        }
4363        let mut struct_ser = serializer
4364            .serialize_struct("origincloud.compute.v1beta1.ImageFamily", len)?;
4365        if !self.name.is_empty() {
4366            struct_ser.serialize_field("name", &self.name)?;
4367        }
4368        if !self.display_name.is_empty() {
4369            struct_ser.serialize_field("displayName", &self.display_name)?;
4370        }
4371        if !self.description.is_empty() {
4372            struct_ser.serialize_field("description", &self.description)?;
4373        }
4374        if !self.vendor.is_empty() {
4375            struct_ser.serialize_field("vendor", &self.vendor)?;
4376        }
4377        if !self.os.is_empty() {
4378            struct_ser.serialize_field("os", &self.os)?;
4379        }
4380        if !self.os_version.is_empty() {
4381            struct_ser.serialize_field("osVersion", &self.os_version)?;
4382        }
4383        if let Some(v) = self.support_end_time.as_ref() {
4384            struct_ser.serialize_field("supportEndTime", v)?;
4385        }
4386        if self.available {
4387            struct_ser.serialize_field("available", &self.available)?;
4388        }
4389        struct_ser.end()
4390    }
4391}
4392impl<'de> serde::Deserialize<'de> for ImageFamily {
4393    #[allow(deprecated)]
4394    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4395    where
4396        D: serde::Deserializer<'de>,
4397    {
4398        const FIELDS: &[&str] = &[
4399            "name",
4400            "display_name",
4401            "displayName",
4402            "description",
4403            "vendor",
4404            "os",
4405            "os_version",
4406            "osVersion",
4407            "support_end_time",
4408            "supportEndTime",
4409            "available",
4410        ];
4411        #[allow(clippy::enum_variant_names)]
4412        enum GeneratedField {
4413            Name,
4414            DisplayName,
4415            Description,
4416            Vendor,
4417            Os,
4418            OsVersion,
4419            SupportEndTime,
4420            Available,
4421            __SkipField__,
4422        }
4423        impl<'de> serde::Deserialize<'de> for GeneratedField {
4424            fn deserialize<D>(
4425                deserializer: D,
4426            ) -> std::result::Result<GeneratedField, D::Error>
4427            where
4428                D: serde::Deserializer<'de>,
4429            {
4430                struct GeneratedVisitor;
4431                impl serde::de::Visitor<'_> for GeneratedVisitor {
4432                    type Value = GeneratedField;
4433                    fn expecting(
4434                        &self,
4435                        formatter: &mut std::fmt::Formatter<'_>,
4436                    ) -> std::fmt::Result {
4437                        write!(formatter, "expected one of: {:?}", & FIELDS)
4438                    }
4439                    #[allow(unused_variables)]
4440                    fn visit_str<E>(
4441                        self,
4442                        value: &str,
4443                    ) -> std::result::Result<GeneratedField, E>
4444                    where
4445                        E: serde::de::Error,
4446                    {
4447                        match value {
4448                            "name" => Ok(GeneratedField::Name),
4449                            "displayName" | "display_name" => {
4450                                Ok(GeneratedField::DisplayName)
4451                            }
4452                            "description" => Ok(GeneratedField::Description),
4453                            "vendor" => Ok(GeneratedField::Vendor),
4454                            "os" => Ok(GeneratedField::Os),
4455                            "osVersion" | "os_version" => Ok(GeneratedField::OsVersion),
4456                            "supportEndTime" | "support_end_time" => {
4457                                Ok(GeneratedField::SupportEndTime)
4458                            }
4459                            "available" => Ok(GeneratedField::Available),
4460                            _ => Ok(GeneratedField::__SkipField__),
4461                        }
4462                    }
4463                }
4464                deserializer.deserialize_identifier(GeneratedVisitor)
4465            }
4466        }
4467        struct GeneratedVisitor;
4468        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4469            type Value = ImageFamily;
4470            fn expecting(
4471                &self,
4472                formatter: &mut std::fmt::Formatter<'_>,
4473            ) -> std::fmt::Result {
4474                formatter.write_str("struct origincloud.compute.v1beta1.ImageFamily")
4475            }
4476            fn visit_map<V>(
4477                self,
4478                mut map_: V,
4479            ) -> std::result::Result<ImageFamily, V::Error>
4480            where
4481                V: serde::de::MapAccess<'de>,
4482            {
4483                let mut name__ = None;
4484                let mut display_name__ = None;
4485                let mut description__ = None;
4486                let mut vendor__ = None;
4487                let mut os__ = None;
4488                let mut os_version__ = None;
4489                let mut support_end_time__ = None;
4490                let mut available__ = None;
4491                while let Some(k) = map_.next_key()? {
4492                    match k {
4493                        GeneratedField::Name => {
4494                            if name__.is_some() {
4495                                return Err(serde::de::Error::duplicate_field("name"));
4496                            }
4497                            name__ = Some(map_.next_value()?);
4498                        }
4499                        GeneratedField::DisplayName => {
4500                            if display_name__.is_some() {
4501                                return Err(
4502                                    serde::de::Error::duplicate_field("displayName"),
4503                                );
4504                            }
4505                            display_name__ = Some(map_.next_value()?);
4506                        }
4507                        GeneratedField::Description => {
4508                            if description__.is_some() {
4509                                return Err(
4510                                    serde::de::Error::duplicate_field("description"),
4511                                );
4512                            }
4513                            description__ = Some(map_.next_value()?);
4514                        }
4515                        GeneratedField::Vendor => {
4516                            if vendor__.is_some() {
4517                                return Err(serde::de::Error::duplicate_field("vendor"));
4518                            }
4519                            vendor__ = Some(map_.next_value()?);
4520                        }
4521                        GeneratedField::Os => {
4522                            if os__.is_some() {
4523                                return Err(serde::de::Error::duplicate_field("os"));
4524                            }
4525                            os__ = Some(map_.next_value()?);
4526                        }
4527                        GeneratedField::OsVersion => {
4528                            if os_version__.is_some() {
4529                                return Err(serde::de::Error::duplicate_field("osVersion"));
4530                            }
4531                            os_version__ = Some(map_.next_value()?);
4532                        }
4533                        GeneratedField::SupportEndTime => {
4534                            if support_end_time__.is_some() {
4535                                return Err(
4536                                    serde::de::Error::duplicate_field("supportEndTime"),
4537                                );
4538                            }
4539                            support_end_time__ = map_.next_value()?;
4540                        }
4541                        GeneratedField::Available => {
4542                            if available__.is_some() {
4543                                return Err(serde::de::Error::duplicate_field("available"));
4544                            }
4545                            available__ = Some(map_.next_value()?);
4546                        }
4547                        GeneratedField::__SkipField__ => {
4548                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4549                        }
4550                    }
4551                }
4552                Ok(ImageFamily {
4553                    name: name__.unwrap_or_default(),
4554                    display_name: display_name__.unwrap_or_default(),
4555                    description: description__.unwrap_or_default(),
4556                    vendor: vendor__.unwrap_or_default(),
4557                    os: os__.unwrap_or_default(),
4558                    os_version: os_version__.unwrap_or_default(),
4559                    support_end_time: support_end_time__,
4560                    available: available__.unwrap_or_default(),
4561                })
4562            }
4563        }
4564        deserializer
4565            .deserialize_struct(
4566                "origincloud.compute.v1beta1.ImageFamily",
4567                FIELDS,
4568                GeneratedVisitor,
4569            )
4570    }
4571}
4572impl serde::Serialize for Instance {
4573    #[allow(deprecated)]
4574    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4575    where
4576        S: serde::Serializer,
4577    {
4578        use serde::ser::SerializeStruct;
4579        let mut len = 0;
4580        if !self.name.is_empty() {
4581            len += 1;
4582        }
4583        if !self.urn.is_empty() {
4584            len += 1;
4585        }
4586        if !self.instance_type.is_empty() {
4587            len += 1;
4588        }
4589        if !self.image.is_empty() {
4590            len += 1;
4591        }
4592        if !self.image_family.is_empty() {
4593            len += 1;
4594        }
4595        if !self.key_pair.is_empty() {
4596            len += 1;
4597        }
4598        if !self.login_user.is_empty() {
4599            len += 1;
4600        }
4601        if self.boot_volume.is_some() {
4602            len += 1;
4603        }
4604        if !self.network_interfaces.is_empty() {
4605            len += 1;
4606        }
4607        if self.state != 0 {
4608            len += 1;
4609        }
4610        if !self.state_reason.is_empty() {
4611            len += 1;
4612        }
4613        if self.health.is_some() {
4614            len += 1;
4615        }
4616        if self.create_time.is_some() {
4617            len += 1;
4618        }
4619        if !self.creator.is_empty() {
4620            len += 1;
4621        }
4622        if !self.tags.is_empty() {
4623            len += 1;
4624        }
4625        if !self.interface_addresses.is_empty() {
4626            len += 1;
4627        }
4628        if !self.service_account.is_empty() {
4629            len += 1;
4630        }
4631        let mut struct_ser = serializer
4632            .serialize_struct("origincloud.compute.v1beta1.Instance", len)?;
4633        if !self.name.is_empty() {
4634            struct_ser.serialize_field("name", &self.name)?;
4635        }
4636        if !self.urn.is_empty() {
4637            struct_ser.serialize_field("urn", &self.urn)?;
4638        }
4639        if !self.instance_type.is_empty() {
4640            struct_ser.serialize_field("instanceType", &self.instance_type)?;
4641        }
4642        if !self.image.is_empty() {
4643            struct_ser.serialize_field("image", &self.image)?;
4644        }
4645        if !self.image_family.is_empty() {
4646            struct_ser.serialize_field("imageFamily", &self.image_family)?;
4647        }
4648        if !self.key_pair.is_empty() {
4649            struct_ser.serialize_field("keyPair", &self.key_pair)?;
4650        }
4651        if !self.login_user.is_empty() {
4652            struct_ser.serialize_field("loginUser", &self.login_user)?;
4653        }
4654        if let Some(v) = self.boot_volume.as_ref() {
4655            struct_ser.serialize_field("bootVolume", v)?;
4656        }
4657        if !self.network_interfaces.is_empty() {
4658            struct_ser.serialize_field("networkInterfaces", &self.network_interfaces)?;
4659        }
4660        if self.state != 0 {
4661            let v = instance::State::try_from(self.state)
4662                .map_err(|_| serde::ser::Error::custom(
4663                    format!("Invalid variant {}", self.state),
4664                ))?;
4665            struct_ser.serialize_field("state", &v)?;
4666        }
4667        if !self.state_reason.is_empty() {
4668            struct_ser.serialize_field("stateReason", &self.state_reason)?;
4669        }
4670        if let Some(v) = self.health.as_ref() {
4671            struct_ser.serialize_field("health", v)?;
4672        }
4673        if let Some(v) = self.create_time.as_ref() {
4674            struct_ser.serialize_field("createTime", v)?;
4675        }
4676        if !self.creator.is_empty() {
4677            struct_ser.serialize_field("creator", &self.creator)?;
4678        }
4679        if !self.tags.is_empty() {
4680            struct_ser.serialize_field("tags", &self.tags)?;
4681        }
4682        if !self.interface_addresses.is_empty() {
4683            struct_ser.serialize_field("interfaceAddresses", &self.interface_addresses)?;
4684        }
4685        if !self.service_account.is_empty() {
4686            struct_ser.serialize_field("serviceAccount", &self.service_account)?;
4687        }
4688        struct_ser.end()
4689    }
4690}
4691impl<'de> serde::Deserialize<'de> for Instance {
4692    #[allow(deprecated)]
4693    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4694    where
4695        D: serde::Deserializer<'de>,
4696    {
4697        const FIELDS: &[&str] = &[
4698            "name",
4699            "urn",
4700            "instance_type",
4701            "instanceType",
4702            "image",
4703            "image_family",
4704            "imageFamily",
4705            "key_pair",
4706            "keyPair",
4707            "login_user",
4708            "loginUser",
4709            "boot_volume",
4710            "bootVolume",
4711            "network_interfaces",
4712            "networkInterfaces",
4713            "state",
4714            "state_reason",
4715            "stateReason",
4716            "health",
4717            "create_time",
4718            "createTime",
4719            "creator",
4720            "tags",
4721            "interface_addresses",
4722            "interfaceAddresses",
4723            "service_account",
4724            "serviceAccount",
4725        ];
4726        #[allow(clippy::enum_variant_names)]
4727        enum GeneratedField {
4728            Name,
4729            Urn,
4730            InstanceType,
4731            Image,
4732            ImageFamily,
4733            KeyPair,
4734            LoginUser,
4735            BootVolume,
4736            NetworkInterfaces,
4737            State,
4738            StateReason,
4739            Health,
4740            CreateTime,
4741            Creator,
4742            Tags,
4743            InterfaceAddresses,
4744            ServiceAccount,
4745            __SkipField__,
4746        }
4747        impl<'de> serde::Deserialize<'de> for GeneratedField {
4748            fn deserialize<D>(
4749                deserializer: D,
4750            ) -> std::result::Result<GeneratedField, D::Error>
4751            where
4752                D: serde::Deserializer<'de>,
4753            {
4754                struct GeneratedVisitor;
4755                impl serde::de::Visitor<'_> for GeneratedVisitor {
4756                    type Value = GeneratedField;
4757                    fn expecting(
4758                        &self,
4759                        formatter: &mut std::fmt::Formatter<'_>,
4760                    ) -> std::fmt::Result {
4761                        write!(formatter, "expected one of: {:?}", & FIELDS)
4762                    }
4763                    #[allow(unused_variables)]
4764                    fn visit_str<E>(
4765                        self,
4766                        value: &str,
4767                    ) -> std::result::Result<GeneratedField, E>
4768                    where
4769                        E: serde::de::Error,
4770                    {
4771                        match value {
4772                            "name" => Ok(GeneratedField::Name),
4773                            "urn" => Ok(GeneratedField::Urn),
4774                            "instanceType" | "instance_type" => {
4775                                Ok(GeneratedField::InstanceType)
4776                            }
4777                            "image" => Ok(GeneratedField::Image),
4778                            "imageFamily" | "image_family" => {
4779                                Ok(GeneratedField::ImageFamily)
4780                            }
4781                            "keyPair" | "key_pair" => Ok(GeneratedField::KeyPair),
4782                            "loginUser" | "login_user" => Ok(GeneratedField::LoginUser),
4783                            "bootVolume" | "boot_volume" => {
4784                                Ok(GeneratedField::BootVolume)
4785                            }
4786                            "networkInterfaces" | "network_interfaces" => {
4787                                Ok(GeneratedField::NetworkInterfaces)
4788                            }
4789                            "state" => Ok(GeneratedField::State),
4790                            "stateReason" | "state_reason" => {
4791                                Ok(GeneratedField::StateReason)
4792                            }
4793                            "health" => Ok(GeneratedField::Health),
4794                            "createTime" | "create_time" => {
4795                                Ok(GeneratedField::CreateTime)
4796                            }
4797                            "creator" => Ok(GeneratedField::Creator),
4798                            "tags" => Ok(GeneratedField::Tags),
4799                            "interfaceAddresses" | "interface_addresses" => {
4800                                Ok(GeneratedField::InterfaceAddresses)
4801                            }
4802                            "serviceAccount" | "service_account" => {
4803                                Ok(GeneratedField::ServiceAccount)
4804                            }
4805                            _ => Ok(GeneratedField::__SkipField__),
4806                        }
4807                    }
4808                }
4809                deserializer.deserialize_identifier(GeneratedVisitor)
4810            }
4811        }
4812        struct GeneratedVisitor;
4813        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4814            type Value = Instance;
4815            fn expecting(
4816                &self,
4817                formatter: &mut std::fmt::Formatter<'_>,
4818            ) -> std::fmt::Result {
4819                formatter.write_str("struct origincloud.compute.v1beta1.Instance")
4820            }
4821            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Instance, V::Error>
4822            where
4823                V: serde::de::MapAccess<'de>,
4824            {
4825                let mut name__ = None;
4826                let mut urn__ = None;
4827                let mut instance_type__ = None;
4828                let mut image__ = None;
4829                let mut image_family__ = None;
4830                let mut key_pair__ = None;
4831                let mut login_user__ = None;
4832                let mut boot_volume__ = None;
4833                let mut network_interfaces__ = None;
4834                let mut state__ = None;
4835                let mut state_reason__ = None;
4836                let mut health__ = None;
4837                let mut create_time__ = None;
4838                let mut creator__ = None;
4839                let mut tags__ = None;
4840                let mut interface_addresses__ = None;
4841                let mut service_account__ = None;
4842                while let Some(k) = map_.next_key()? {
4843                    match k {
4844                        GeneratedField::Name => {
4845                            if name__.is_some() {
4846                                return Err(serde::de::Error::duplicate_field("name"));
4847                            }
4848                            name__ = Some(map_.next_value()?);
4849                        }
4850                        GeneratedField::Urn => {
4851                            if urn__.is_some() {
4852                                return Err(serde::de::Error::duplicate_field("urn"));
4853                            }
4854                            urn__ = Some(map_.next_value()?);
4855                        }
4856                        GeneratedField::InstanceType => {
4857                            if instance_type__.is_some() {
4858                                return Err(
4859                                    serde::de::Error::duplicate_field("instanceType"),
4860                                );
4861                            }
4862                            instance_type__ = Some(map_.next_value()?);
4863                        }
4864                        GeneratedField::Image => {
4865                            if image__.is_some() {
4866                                return Err(serde::de::Error::duplicate_field("image"));
4867                            }
4868                            image__ = Some(map_.next_value()?);
4869                        }
4870                        GeneratedField::ImageFamily => {
4871                            if image_family__.is_some() {
4872                                return Err(
4873                                    serde::de::Error::duplicate_field("imageFamily"),
4874                                );
4875                            }
4876                            image_family__ = Some(map_.next_value()?);
4877                        }
4878                        GeneratedField::KeyPair => {
4879                            if key_pair__.is_some() {
4880                                return Err(serde::de::Error::duplicate_field("keyPair"));
4881                            }
4882                            key_pair__ = Some(map_.next_value()?);
4883                        }
4884                        GeneratedField::LoginUser => {
4885                            if login_user__.is_some() {
4886                                return Err(serde::de::Error::duplicate_field("loginUser"));
4887                            }
4888                            login_user__ = Some(map_.next_value()?);
4889                        }
4890                        GeneratedField::BootVolume => {
4891                            if boot_volume__.is_some() {
4892                                return Err(serde::de::Error::duplicate_field("bootVolume"));
4893                            }
4894                            boot_volume__ = map_.next_value()?;
4895                        }
4896                        GeneratedField::NetworkInterfaces => {
4897                            if network_interfaces__.is_some() {
4898                                return Err(
4899                                    serde::de::Error::duplicate_field("networkInterfaces"),
4900                                );
4901                            }
4902                            network_interfaces__ = Some(map_.next_value()?);
4903                        }
4904                        GeneratedField::State => {
4905                            if state__.is_some() {
4906                                return Err(serde::de::Error::duplicate_field("state"));
4907                            }
4908                            state__ = Some(map_.next_value::<instance::State>()? as i32);
4909                        }
4910                        GeneratedField::StateReason => {
4911                            if state_reason__.is_some() {
4912                                return Err(
4913                                    serde::de::Error::duplicate_field("stateReason"),
4914                                );
4915                            }
4916                            state_reason__ = Some(map_.next_value()?);
4917                        }
4918                        GeneratedField::Health => {
4919                            if health__.is_some() {
4920                                return Err(serde::de::Error::duplicate_field("health"));
4921                            }
4922                            health__ = map_.next_value()?;
4923                        }
4924                        GeneratedField::CreateTime => {
4925                            if create_time__.is_some() {
4926                                return Err(serde::de::Error::duplicate_field("createTime"));
4927                            }
4928                            create_time__ = map_.next_value()?;
4929                        }
4930                        GeneratedField::Creator => {
4931                            if creator__.is_some() {
4932                                return Err(serde::de::Error::duplicate_field("creator"));
4933                            }
4934                            creator__ = Some(map_.next_value()?);
4935                        }
4936                        GeneratedField::Tags => {
4937                            if tags__.is_some() {
4938                                return Err(serde::de::Error::duplicate_field("tags"));
4939                            }
4940                            tags__ = Some(
4941                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
4942                            );
4943                        }
4944                        GeneratedField::InterfaceAddresses => {
4945                            if interface_addresses__.is_some() {
4946                                return Err(
4947                                    serde::de::Error::duplicate_field("interfaceAddresses"),
4948                                );
4949                            }
4950                            interface_addresses__ = Some(map_.next_value()?);
4951                        }
4952                        GeneratedField::ServiceAccount => {
4953                            if service_account__.is_some() {
4954                                return Err(
4955                                    serde::de::Error::duplicate_field("serviceAccount"),
4956                                );
4957                            }
4958                            service_account__ = Some(map_.next_value()?);
4959                        }
4960                        GeneratedField::__SkipField__ => {
4961                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4962                        }
4963                    }
4964                }
4965                Ok(Instance {
4966                    name: name__.unwrap_or_default(),
4967                    urn: urn__.unwrap_or_default(),
4968                    instance_type: instance_type__.unwrap_or_default(),
4969                    image: image__.unwrap_or_default(),
4970                    image_family: image_family__.unwrap_or_default(),
4971                    key_pair: key_pair__.unwrap_or_default(),
4972                    login_user: login_user__.unwrap_or_default(),
4973                    boot_volume: boot_volume__,
4974                    network_interfaces: network_interfaces__.unwrap_or_default(),
4975                    state: state__.unwrap_or_default(),
4976                    state_reason: state_reason__.unwrap_or_default(),
4977                    health: health__,
4978                    create_time: create_time__,
4979                    creator: creator__.unwrap_or_default(),
4980                    tags: tags__.unwrap_or_default(),
4981                    interface_addresses: interface_addresses__.unwrap_or_default(),
4982                    service_account: service_account__.unwrap_or_default(),
4983                })
4984            }
4985        }
4986        deserializer
4987            .deserialize_struct(
4988                "origincloud.compute.v1beta1.Instance",
4989                FIELDS,
4990                GeneratedVisitor,
4991            )
4992    }
4993}
4994impl serde::Serialize for instance::State {
4995    #[allow(deprecated)]
4996    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4997    where
4998        S: serde::Serializer,
4999    {
5000        let variant = match self {
5001            Self::Unspecified => "STATE_UNSPECIFIED",
5002            Self::Initializing => "INITIALIZING",
5003            Self::Pending => "PENDING",
5004            Self::Running => "RUNNING",
5005            Self::Stopping => "STOPPING",
5006            Self::Stopped => "STOPPED",
5007            Self::ShuttingDown => "SHUTTING_DOWN",
5008            Self::Terminated => "TERMINATED",
5009            Self::Failed => "FAILED",
5010        };
5011        serializer.serialize_str(variant)
5012    }
5013}
5014impl<'de> serde::Deserialize<'de> for instance::State {
5015    #[allow(deprecated)]
5016    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5017    where
5018        D: serde::Deserializer<'de>,
5019    {
5020        const FIELDS: &[&str] = &[
5021            "STATE_UNSPECIFIED",
5022            "INITIALIZING",
5023            "PENDING",
5024            "RUNNING",
5025            "STOPPING",
5026            "STOPPED",
5027            "SHUTTING_DOWN",
5028            "TERMINATED",
5029            "FAILED",
5030        ];
5031        struct GeneratedVisitor;
5032        impl serde::de::Visitor<'_> for GeneratedVisitor {
5033            type Value = instance::State;
5034            fn expecting(
5035                &self,
5036                formatter: &mut std::fmt::Formatter<'_>,
5037            ) -> std::fmt::Result {
5038                write!(formatter, "expected one of: {:?}", & FIELDS)
5039            }
5040            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
5041            where
5042                E: serde::de::Error,
5043            {
5044                i32::try_from(v)
5045                    .ok()
5046                    .and_then(|x| {
5047                        x.try_into().ok().or_else(|| Some(instance::State::default()))
5048                    })
5049                    .ok_or_else(|| {
5050                        serde::de::Error::invalid_value(
5051                            serde::de::Unexpected::Signed(v),
5052                            &self,
5053                        )
5054                    })
5055            }
5056            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
5057            where
5058                E: serde::de::Error,
5059            {
5060                i32::try_from(v)
5061                    .ok()
5062                    .and_then(|x| {
5063                        x.try_into().ok().or_else(|| Some(instance::State::default()))
5064                    })
5065                    .ok_or_else(|| {
5066                        serde::de::Error::invalid_value(
5067                            serde::de::Unexpected::Unsigned(v),
5068                            &self,
5069                        )
5070                    })
5071            }
5072            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5073            where
5074                E: serde::de::Error,
5075            {
5076                match value {
5077                    "STATE_UNSPECIFIED" => Ok(instance::State::Unspecified),
5078                    "INITIALIZING" => Ok(instance::State::Initializing),
5079                    "PENDING" => Ok(instance::State::Pending),
5080                    "RUNNING" => Ok(instance::State::Running),
5081                    "STOPPING" => Ok(instance::State::Stopping),
5082                    "STOPPED" => Ok(instance::State::Stopped),
5083                    "SHUTTING_DOWN" => Ok(instance::State::ShuttingDown),
5084                    "TERMINATED" => Ok(instance::State::Terminated),
5085                    "FAILED" => Ok(instance::State::Failed),
5086                    _ => Ok(instance::State::default()),
5087                }
5088            }
5089        }
5090        deserializer.deserialize_any(GeneratedVisitor)
5091    }
5092}
5093impl serde::Serialize for InstanceHealth {
5094    #[allow(deprecated)]
5095    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5096    where
5097        S: serde::Serializer,
5098    {
5099        use serde::ser::SerializeStruct;
5100        let mut len = 0;
5101        if self.availability != 0 {
5102            len += 1;
5103        }
5104        if !self.checks.is_empty() {
5105            len += 1;
5106        }
5107        let mut struct_ser = serializer
5108            .serialize_struct("origincloud.compute.v1beta1.InstanceHealth", len)?;
5109        if self.availability != 0 {
5110            let v = instance_health::Availability::try_from(self.availability)
5111                .map_err(|_| serde::ser::Error::custom(
5112                    format!("Invalid variant {}", self.availability),
5113                ))?;
5114            struct_ser.serialize_field("availability", &v)?;
5115        }
5116        if !self.checks.is_empty() {
5117            struct_ser.serialize_field("checks", &self.checks)?;
5118        }
5119        struct_ser.end()
5120    }
5121}
5122impl<'de> serde::Deserialize<'de> for InstanceHealth {
5123    #[allow(deprecated)]
5124    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5125    where
5126        D: serde::Deserializer<'de>,
5127    {
5128        const FIELDS: &[&str] = &["availability", "checks"];
5129        #[allow(clippy::enum_variant_names)]
5130        enum GeneratedField {
5131            Availability,
5132            Checks,
5133            __SkipField__,
5134        }
5135        impl<'de> serde::Deserialize<'de> for GeneratedField {
5136            fn deserialize<D>(
5137                deserializer: D,
5138            ) -> std::result::Result<GeneratedField, D::Error>
5139            where
5140                D: serde::Deserializer<'de>,
5141            {
5142                struct GeneratedVisitor;
5143                impl serde::de::Visitor<'_> for GeneratedVisitor {
5144                    type Value = GeneratedField;
5145                    fn expecting(
5146                        &self,
5147                        formatter: &mut std::fmt::Formatter<'_>,
5148                    ) -> std::fmt::Result {
5149                        write!(formatter, "expected one of: {:?}", & FIELDS)
5150                    }
5151                    #[allow(unused_variables)]
5152                    fn visit_str<E>(
5153                        self,
5154                        value: &str,
5155                    ) -> std::result::Result<GeneratedField, E>
5156                    where
5157                        E: serde::de::Error,
5158                    {
5159                        match value {
5160                            "availability" => Ok(GeneratedField::Availability),
5161                            "checks" => Ok(GeneratedField::Checks),
5162                            _ => Ok(GeneratedField::__SkipField__),
5163                        }
5164                    }
5165                }
5166                deserializer.deserialize_identifier(GeneratedVisitor)
5167            }
5168        }
5169        struct GeneratedVisitor;
5170        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5171            type Value = InstanceHealth;
5172            fn expecting(
5173                &self,
5174                formatter: &mut std::fmt::Formatter<'_>,
5175            ) -> std::fmt::Result {
5176                formatter.write_str("struct origincloud.compute.v1beta1.InstanceHealth")
5177            }
5178            fn visit_map<V>(
5179                self,
5180                mut map_: V,
5181            ) -> std::result::Result<InstanceHealth, V::Error>
5182            where
5183                V: serde::de::MapAccess<'de>,
5184            {
5185                let mut availability__ = None;
5186                let mut checks__ = None;
5187                while let Some(k) = map_.next_key()? {
5188                    match k {
5189                        GeneratedField::Availability => {
5190                            if availability__.is_some() {
5191                                return Err(
5192                                    serde::de::Error::duplicate_field("availability"),
5193                                );
5194                            }
5195                            availability__ = Some(
5196                                map_.next_value::<instance_health::Availability>()? as i32,
5197                            );
5198                        }
5199                        GeneratedField::Checks => {
5200                            if checks__.is_some() {
5201                                return Err(serde::de::Error::duplicate_field("checks"));
5202                            }
5203                            checks__ = Some(map_.next_value()?);
5204                        }
5205                        GeneratedField::__SkipField__ => {
5206                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5207                        }
5208                    }
5209                }
5210                Ok(InstanceHealth {
5211                    availability: availability__.unwrap_or_default(),
5212                    checks: checks__.unwrap_or_default(),
5213                })
5214            }
5215        }
5216        deserializer
5217            .deserialize_struct(
5218                "origincloud.compute.v1beta1.InstanceHealth",
5219                FIELDS,
5220                GeneratedVisitor,
5221            )
5222    }
5223}
5224impl serde::Serialize for instance_health::Availability {
5225    #[allow(deprecated)]
5226    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5227    where
5228        S: serde::Serializer,
5229    {
5230        let variant = match self {
5231            Self::Unspecified => "AVAILABILITY_UNSPECIFIED",
5232            Self::Available => "AVAILABLE",
5233            Self::Impaired => "IMPAIRED",
5234            Self::Unknown => "UNKNOWN",
5235            Self::NotApplicable => "NOT_APPLICABLE",
5236        };
5237        serializer.serialize_str(variant)
5238    }
5239}
5240impl<'de> serde::Deserialize<'de> for instance_health::Availability {
5241    #[allow(deprecated)]
5242    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5243    where
5244        D: serde::Deserializer<'de>,
5245    {
5246        const FIELDS: &[&str] = &[
5247            "AVAILABILITY_UNSPECIFIED",
5248            "AVAILABLE",
5249            "IMPAIRED",
5250            "UNKNOWN",
5251            "NOT_APPLICABLE",
5252        ];
5253        struct GeneratedVisitor;
5254        impl serde::de::Visitor<'_> for GeneratedVisitor {
5255            type Value = instance_health::Availability;
5256            fn expecting(
5257                &self,
5258                formatter: &mut std::fmt::Formatter<'_>,
5259            ) -> std::fmt::Result {
5260                write!(formatter, "expected one of: {:?}", & FIELDS)
5261            }
5262            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
5263            where
5264                E: serde::de::Error,
5265            {
5266                i32::try_from(v)
5267                    .ok()
5268                    .and_then(|x| {
5269                        x
5270                            .try_into()
5271                            .ok()
5272                            .or_else(|| Some(instance_health::Availability::default()))
5273                    })
5274                    .ok_or_else(|| {
5275                        serde::de::Error::invalid_value(
5276                            serde::de::Unexpected::Signed(v),
5277                            &self,
5278                        )
5279                    })
5280            }
5281            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
5282            where
5283                E: serde::de::Error,
5284            {
5285                i32::try_from(v)
5286                    .ok()
5287                    .and_then(|x| {
5288                        x
5289                            .try_into()
5290                            .ok()
5291                            .or_else(|| Some(instance_health::Availability::default()))
5292                    })
5293                    .ok_or_else(|| {
5294                        serde::de::Error::invalid_value(
5295                            serde::de::Unexpected::Unsigned(v),
5296                            &self,
5297                        )
5298                    })
5299            }
5300            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5301            where
5302                E: serde::de::Error,
5303            {
5304                match value {
5305                    "AVAILABILITY_UNSPECIFIED" => {
5306                        Ok(instance_health::Availability::Unspecified)
5307                    }
5308                    "AVAILABLE" => Ok(instance_health::Availability::Available),
5309                    "IMPAIRED" => Ok(instance_health::Availability::Impaired),
5310                    "UNKNOWN" => Ok(instance_health::Availability::Unknown),
5311                    "NOT_APPLICABLE" => Ok(instance_health::Availability::NotApplicable),
5312                    _ => Ok(instance_health::Availability::default()),
5313                }
5314            }
5315        }
5316        deserializer.deserialize_any(GeneratedVisitor)
5317    }
5318}
5319impl serde::Serialize for InstanceType {
5320    #[allow(deprecated)]
5321    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5322    where
5323        S: serde::Serializer,
5324    {
5325        use serde::ser::SerializeStruct;
5326        let mut len = 0;
5327        if !self.name.is_empty() {
5328            len += 1;
5329        }
5330        if !self.display_name.is_empty() {
5331            len += 1;
5332        }
5333        if !self.kind.is_empty() {
5334            len += 1;
5335        }
5336        if !self.cpu_allocation_mode.is_empty() {
5337            len += 1;
5338        }
5339        if self.vcpu != 0 {
5340            len += 1;
5341        }
5342        if self.memory_mib != 0 {
5343            len += 1;
5344        }
5345        if self.storage_bandwidth_mbit != 0 {
5346            len += 1;
5347        }
5348        if self.storage_burst_bandwidth_mbit != 0 {
5349            len += 1;
5350        }
5351        if self.available {
5352            len += 1;
5353        }
5354        let mut struct_ser = serializer
5355            .serialize_struct("origincloud.compute.v1beta1.InstanceType", len)?;
5356        if !self.name.is_empty() {
5357            struct_ser.serialize_field("name", &self.name)?;
5358        }
5359        if !self.display_name.is_empty() {
5360            struct_ser.serialize_field("displayName", &self.display_name)?;
5361        }
5362        if !self.kind.is_empty() {
5363            struct_ser.serialize_field("kind", &self.kind)?;
5364        }
5365        if !self.cpu_allocation_mode.is_empty() {
5366            struct_ser.serialize_field("cpuAllocationMode", &self.cpu_allocation_mode)?;
5367        }
5368        if self.vcpu != 0 {
5369            struct_ser.serialize_field("vcpu", &self.vcpu)?;
5370        }
5371        if self.memory_mib != 0 {
5372            struct_ser.serialize_field("memoryMib", &self.memory_mib)?;
5373        }
5374        if self.storage_bandwidth_mbit != 0 {
5375            struct_ser
5376                .serialize_field("storageBandwidthMbit", &self.storage_bandwidth_mbit)?;
5377        }
5378        if self.storage_burst_bandwidth_mbit != 0 {
5379            struct_ser
5380                .serialize_field(
5381                    "storageBurstBandwidthMbit",
5382                    &self.storage_burst_bandwidth_mbit,
5383                )?;
5384        }
5385        if self.available {
5386            struct_ser.serialize_field("available", &self.available)?;
5387        }
5388        struct_ser.end()
5389    }
5390}
5391impl<'de> serde::Deserialize<'de> for InstanceType {
5392    #[allow(deprecated)]
5393    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5394    where
5395        D: serde::Deserializer<'de>,
5396    {
5397        const FIELDS: &[&str] = &[
5398            "name",
5399            "display_name",
5400            "displayName",
5401            "kind",
5402            "cpu_allocation_mode",
5403            "cpuAllocationMode",
5404            "vcpu",
5405            "memory_mib",
5406            "memoryMib",
5407            "storage_bandwidth_mbit",
5408            "storageBandwidthMbit",
5409            "storage_burst_bandwidth_mbit",
5410            "storageBurstBandwidthMbit",
5411            "available",
5412        ];
5413        #[allow(clippy::enum_variant_names)]
5414        enum GeneratedField {
5415            Name,
5416            DisplayName,
5417            Kind,
5418            CpuAllocationMode,
5419            Vcpu,
5420            MemoryMib,
5421            StorageBandwidthMbit,
5422            StorageBurstBandwidthMbit,
5423            Available,
5424            __SkipField__,
5425        }
5426        impl<'de> serde::Deserialize<'de> for GeneratedField {
5427            fn deserialize<D>(
5428                deserializer: D,
5429            ) -> std::result::Result<GeneratedField, D::Error>
5430            where
5431                D: serde::Deserializer<'de>,
5432            {
5433                struct GeneratedVisitor;
5434                impl serde::de::Visitor<'_> for GeneratedVisitor {
5435                    type Value = GeneratedField;
5436                    fn expecting(
5437                        &self,
5438                        formatter: &mut std::fmt::Formatter<'_>,
5439                    ) -> std::fmt::Result {
5440                        write!(formatter, "expected one of: {:?}", & FIELDS)
5441                    }
5442                    #[allow(unused_variables)]
5443                    fn visit_str<E>(
5444                        self,
5445                        value: &str,
5446                    ) -> std::result::Result<GeneratedField, E>
5447                    where
5448                        E: serde::de::Error,
5449                    {
5450                        match value {
5451                            "name" => Ok(GeneratedField::Name),
5452                            "displayName" | "display_name" => {
5453                                Ok(GeneratedField::DisplayName)
5454                            }
5455                            "kind" => Ok(GeneratedField::Kind),
5456                            "cpuAllocationMode" | "cpu_allocation_mode" => {
5457                                Ok(GeneratedField::CpuAllocationMode)
5458                            }
5459                            "vcpu" => Ok(GeneratedField::Vcpu),
5460                            "memoryMib" | "memory_mib" => Ok(GeneratedField::MemoryMib),
5461                            "storageBandwidthMbit" | "storage_bandwidth_mbit" => {
5462                                Ok(GeneratedField::StorageBandwidthMbit)
5463                            }
5464                            "storageBurstBandwidthMbit"
5465                            | "storage_burst_bandwidth_mbit" => {
5466                                Ok(GeneratedField::StorageBurstBandwidthMbit)
5467                            }
5468                            "available" => Ok(GeneratedField::Available),
5469                            _ => Ok(GeneratedField::__SkipField__),
5470                        }
5471                    }
5472                }
5473                deserializer.deserialize_identifier(GeneratedVisitor)
5474            }
5475        }
5476        struct GeneratedVisitor;
5477        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5478            type Value = InstanceType;
5479            fn expecting(
5480                &self,
5481                formatter: &mut std::fmt::Formatter<'_>,
5482            ) -> std::fmt::Result {
5483                formatter.write_str("struct origincloud.compute.v1beta1.InstanceType")
5484            }
5485            fn visit_map<V>(
5486                self,
5487                mut map_: V,
5488            ) -> std::result::Result<InstanceType, V::Error>
5489            where
5490                V: serde::de::MapAccess<'de>,
5491            {
5492                let mut name__ = None;
5493                let mut display_name__ = None;
5494                let mut kind__ = None;
5495                let mut cpu_allocation_mode__ = None;
5496                let mut vcpu__ = None;
5497                let mut memory_mib__ = None;
5498                let mut storage_bandwidth_mbit__ = None;
5499                let mut storage_burst_bandwidth_mbit__ = None;
5500                let mut available__ = None;
5501                while let Some(k) = map_.next_key()? {
5502                    match k {
5503                        GeneratedField::Name => {
5504                            if name__.is_some() {
5505                                return Err(serde::de::Error::duplicate_field("name"));
5506                            }
5507                            name__ = Some(map_.next_value()?);
5508                        }
5509                        GeneratedField::DisplayName => {
5510                            if display_name__.is_some() {
5511                                return Err(
5512                                    serde::de::Error::duplicate_field("displayName"),
5513                                );
5514                            }
5515                            display_name__ = Some(map_.next_value()?);
5516                        }
5517                        GeneratedField::Kind => {
5518                            if kind__.is_some() {
5519                                return Err(serde::de::Error::duplicate_field("kind"));
5520                            }
5521                            kind__ = Some(map_.next_value()?);
5522                        }
5523                        GeneratedField::CpuAllocationMode => {
5524                            if cpu_allocation_mode__.is_some() {
5525                                return Err(
5526                                    serde::de::Error::duplicate_field("cpuAllocationMode"),
5527                                );
5528                            }
5529                            cpu_allocation_mode__ = Some(map_.next_value()?);
5530                        }
5531                        GeneratedField::Vcpu => {
5532                            if vcpu__.is_some() {
5533                                return Err(serde::de::Error::duplicate_field("vcpu"));
5534                            }
5535                            vcpu__ = Some(
5536                                map_
5537                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5538                                    .0,
5539                            );
5540                        }
5541                        GeneratedField::MemoryMib => {
5542                            if memory_mib__.is_some() {
5543                                return Err(serde::de::Error::duplicate_field("memoryMib"));
5544                            }
5545                            memory_mib__ = Some(
5546                                map_
5547                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5548                                    .0,
5549                            );
5550                        }
5551                        GeneratedField::StorageBandwidthMbit => {
5552                            if storage_bandwidth_mbit__.is_some() {
5553                                return Err(
5554                                    serde::de::Error::duplicate_field("storageBandwidthMbit"),
5555                                );
5556                            }
5557                            storage_bandwidth_mbit__ = Some(
5558                                map_
5559                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5560                                    .0,
5561                            );
5562                        }
5563                        GeneratedField::StorageBurstBandwidthMbit => {
5564                            if storage_burst_bandwidth_mbit__.is_some() {
5565                                return Err(
5566                                    serde::de::Error::duplicate_field(
5567                                        "storageBurstBandwidthMbit",
5568                                    ),
5569                                );
5570                            }
5571                            storage_burst_bandwidth_mbit__ = Some(
5572                                map_
5573                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5574                                    .0,
5575                            );
5576                        }
5577                        GeneratedField::Available => {
5578                            if available__.is_some() {
5579                                return Err(serde::de::Error::duplicate_field("available"));
5580                            }
5581                            available__ = Some(map_.next_value()?);
5582                        }
5583                        GeneratedField::__SkipField__ => {
5584                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5585                        }
5586                    }
5587                }
5588                Ok(InstanceType {
5589                    name: name__.unwrap_or_default(),
5590                    display_name: display_name__.unwrap_or_default(),
5591                    kind: kind__.unwrap_or_default(),
5592                    cpu_allocation_mode: cpu_allocation_mode__.unwrap_or_default(),
5593                    vcpu: vcpu__.unwrap_or_default(),
5594                    memory_mib: memory_mib__.unwrap_or_default(),
5595                    storage_bandwidth_mbit: storage_bandwidth_mbit__.unwrap_or_default(),
5596                    storage_burst_bandwidth_mbit: storage_burst_bandwidth_mbit__
5597                        .unwrap_or_default(),
5598                    available: available__.unwrap_or_default(),
5599                })
5600            }
5601        }
5602        deserializer
5603            .deserialize_struct(
5604                "origincloud.compute.v1beta1.InstanceType",
5605                FIELDS,
5606                GeneratedVisitor,
5607            )
5608    }
5609}
5610impl serde::Serialize for InterfaceAddresses {
5611    #[allow(deprecated)]
5612    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5613    where
5614        S: serde::Serializer,
5615    {
5616        use serde::ser::SerializeStruct;
5617        let mut len = 0;
5618        if !self.network_interface.is_empty() {
5619            len += 1;
5620        }
5621        if !self.ipv4_address.is_empty() {
5622            len += 1;
5623        }
5624        if !self.ipv6_address.is_empty() {
5625            len += 1;
5626        }
5627        let mut struct_ser = serializer
5628            .serialize_struct("origincloud.compute.v1beta1.InterfaceAddresses", len)?;
5629        if !self.network_interface.is_empty() {
5630            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
5631        }
5632        if !self.ipv4_address.is_empty() {
5633            struct_ser.serialize_field("ipv4Address", &self.ipv4_address)?;
5634        }
5635        if !self.ipv6_address.is_empty() {
5636            struct_ser.serialize_field("ipv6Address", &self.ipv6_address)?;
5637        }
5638        struct_ser.end()
5639    }
5640}
5641impl<'de> serde::Deserialize<'de> for InterfaceAddresses {
5642    #[allow(deprecated)]
5643    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5644    where
5645        D: serde::Deserializer<'de>,
5646    {
5647        const FIELDS: &[&str] = &[
5648            "network_interface",
5649            "networkInterface",
5650            "ipv4_address",
5651            "ipv4Address",
5652            "ipv6_address",
5653            "ipv6Address",
5654        ];
5655        #[allow(clippy::enum_variant_names)]
5656        enum GeneratedField {
5657            NetworkInterface,
5658            Ipv4Address,
5659            Ipv6Address,
5660            __SkipField__,
5661        }
5662        impl<'de> serde::Deserialize<'de> for GeneratedField {
5663            fn deserialize<D>(
5664                deserializer: D,
5665            ) -> std::result::Result<GeneratedField, D::Error>
5666            where
5667                D: serde::Deserializer<'de>,
5668            {
5669                struct GeneratedVisitor;
5670                impl serde::de::Visitor<'_> for GeneratedVisitor {
5671                    type Value = GeneratedField;
5672                    fn expecting(
5673                        &self,
5674                        formatter: &mut std::fmt::Formatter<'_>,
5675                    ) -> std::fmt::Result {
5676                        write!(formatter, "expected one of: {:?}", & FIELDS)
5677                    }
5678                    #[allow(unused_variables)]
5679                    fn visit_str<E>(
5680                        self,
5681                        value: &str,
5682                    ) -> std::result::Result<GeneratedField, E>
5683                    where
5684                        E: serde::de::Error,
5685                    {
5686                        match value {
5687                            "networkInterface" | "network_interface" => {
5688                                Ok(GeneratedField::NetworkInterface)
5689                            }
5690                            "ipv4Address" | "ipv4_address" => {
5691                                Ok(GeneratedField::Ipv4Address)
5692                            }
5693                            "ipv6Address" | "ipv6_address" => {
5694                                Ok(GeneratedField::Ipv6Address)
5695                            }
5696                            _ => Ok(GeneratedField::__SkipField__),
5697                        }
5698                    }
5699                }
5700                deserializer.deserialize_identifier(GeneratedVisitor)
5701            }
5702        }
5703        struct GeneratedVisitor;
5704        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5705            type Value = InterfaceAddresses;
5706            fn expecting(
5707                &self,
5708                formatter: &mut std::fmt::Formatter<'_>,
5709            ) -> std::fmt::Result {
5710                formatter
5711                    .write_str("struct origincloud.compute.v1beta1.InterfaceAddresses")
5712            }
5713            fn visit_map<V>(
5714                self,
5715                mut map_: V,
5716            ) -> std::result::Result<InterfaceAddresses, V::Error>
5717            where
5718                V: serde::de::MapAccess<'de>,
5719            {
5720                let mut network_interface__ = None;
5721                let mut ipv4_address__ = None;
5722                let mut ipv6_address__ = None;
5723                while let Some(k) = map_.next_key()? {
5724                    match k {
5725                        GeneratedField::NetworkInterface => {
5726                            if network_interface__.is_some() {
5727                                return Err(
5728                                    serde::de::Error::duplicate_field("networkInterface"),
5729                                );
5730                            }
5731                            network_interface__ = Some(map_.next_value()?);
5732                        }
5733                        GeneratedField::Ipv4Address => {
5734                            if ipv4_address__.is_some() {
5735                                return Err(
5736                                    serde::de::Error::duplicate_field("ipv4Address"),
5737                                );
5738                            }
5739                            ipv4_address__ = Some(map_.next_value()?);
5740                        }
5741                        GeneratedField::Ipv6Address => {
5742                            if ipv6_address__.is_some() {
5743                                return Err(
5744                                    serde::de::Error::duplicate_field("ipv6Address"),
5745                                );
5746                            }
5747                            ipv6_address__ = Some(map_.next_value()?);
5748                        }
5749                        GeneratedField::__SkipField__ => {
5750                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5751                        }
5752                    }
5753                }
5754                Ok(InterfaceAddresses {
5755                    network_interface: network_interface__.unwrap_or_default(),
5756                    ipv4_address: ipv4_address__.unwrap_or_default(),
5757                    ipv6_address: ipv6_address__.unwrap_or_default(),
5758                })
5759            }
5760        }
5761        deserializer
5762            .deserialize_struct(
5763                "origincloud.compute.v1beta1.InterfaceAddresses",
5764                FIELDS,
5765                GeneratedVisitor,
5766            )
5767    }
5768}
5769impl serde::Serialize for KeyPair {
5770    #[allow(deprecated)]
5771    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5772    where
5773        S: serde::Serializer,
5774    {
5775        use serde::ser::SerializeStruct;
5776        let mut len = 0;
5777        if !self.name.is_empty() {
5778            len += 1;
5779        }
5780        if !self.urn.is_empty() {
5781            len += 1;
5782        }
5783        if !self.public_key.is_empty() {
5784            len += 1;
5785        }
5786        if !self.private_key.is_empty() {
5787            len += 1;
5788        }
5789        if !self.creator.is_empty() {
5790            len += 1;
5791        }
5792        if !self.tags.is_empty() {
5793            len += 1;
5794        }
5795        let mut struct_ser = serializer
5796            .serialize_struct("origincloud.compute.v1beta1.KeyPair", len)?;
5797        if !self.name.is_empty() {
5798            struct_ser.serialize_field("name", &self.name)?;
5799        }
5800        if !self.urn.is_empty() {
5801            struct_ser.serialize_field("urn", &self.urn)?;
5802        }
5803        if !self.public_key.is_empty() {
5804            struct_ser.serialize_field("publicKey", &self.public_key)?;
5805        }
5806        if !self.private_key.is_empty() {
5807            struct_ser.serialize_field("privateKey", &self.private_key)?;
5808        }
5809        if !self.creator.is_empty() {
5810            struct_ser.serialize_field("creator", &self.creator)?;
5811        }
5812        if !self.tags.is_empty() {
5813            struct_ser.serialize_field("tags", &self.tags)?;
5814        }
5815        struct_ser.end()
5816    }
5817}
5818impl<'de> serde::Deserialize<'de> for KeyPair {
5819    #[allow(deprecated)]
5820    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5821    where
5822        D: serde::Deserializer<'de>,
5823    {
5824        const FIELDS: &[&str] = &[
5825            "name",
5826            "urn",
5827            "public_key",
5828            "publicKey",
5829            "private_key",
5830            "privateKey",
5831            "creator",
5832            "tags",
5833        ];
5834        #[allow(clippy::enum_variant_names)]
5835        enum GeneratedField {
5836            Name,
5837            Urn,
5838            PublicKey,
5839            PrivateKey,
5840            Creator,
5841            Tags,
5842            __SkipField__,
5843        }
5844        impl<'de> serde::Deserialize<'de> for GeneratedField {
5845            fn deserialize<D>(
5846                deserializer: D,
5847            ) -> std::result::Result<GeneratedField, D::Error>
5848            where
5849                D: serde::Deserializer<'de>,
5850            {
5851                struct GeneratedVisitor;
5852                impl serde::de::Visitor<'_> for GeneratedVisitor {
5853                    type Value = GeneratedField;
5854                    fn expecting(
5855                        &self,
5856                        formatter: &mut std::fmt::Formatter<'_>,
5857                    ) -> std::fmt::Result {
5858                        write!(formatter, "expected one of: {:?}", & FIELDS)
5859                    }
5860                    #[allow(unused_variables)]
5861                    fn visit_str<E>(
5862                        self,
5863                        value: &str,
5864                    ) -> std::result::Result<GeneratedField, E>
5865                    where
5866                        E: serde::de::Error,
5867                    {
5868                        match value {
5869                            "name" => Ok(GeneratedField::Name),
5870                            "urn" => Ok(GeneratedField::Urn),
5871                            "publicKey" | "public_key" => Ok(GeneratedField::PublicKey),
5872                            "privateKey" | "private_key" => {
5873                                Ok(GeneratedField::PrivateKey)
5874                            }
5875                            "creator" => Ok(GeneratedField::Creator),
5876                            "tags" => Ok(GeneratedField::Tags),
5877                            _ => Ok(GeneratedField::__SkipField__),
5878                        }
5879                    }
5880                }
5881                deserializer.deserialize_identifier(GeneratedVisitor)
5882            }
5883        }
5884        struct GeneratedVisitor;
5885        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5886            type Value = KeyPair;
5887            fn expecting(
5888                &self,
5889                formatter: &mut std::fmt::Formatter<'_>,
5890            ) -> std::fmt::Result {
5891                formatter.write_str("struct origincloud.compute.v1beta1.KeyPair")
5892            }
5893            fn visit_map<V>(self, mut map_: V) -> std::result::Result<KeyPair, V::Error>
5894            where
5895                V: serde::de::MapAccess<'de>,
5896            {
5897                let mut name__ = None;
5898                let mut urn__ = None;
5899                let mut public_key__ = None;
5900                let mut private_key__ = None;
5901                let mut creator__ = None;
5902                let mut tags__ = None;
5903                while let Some(k) = map_.next_key()? {
5904                    match k {
5905                        GeneratedField::Name => {
5906                            if name__.is_some() {
5907                                return Err(serde::de::Error::duplicate_field("name"));
5908                            }
5909                            name__ = Some(map_.next_value()?);
5910                        }
5911                        GeneratedField::Urn => {
5912                            if urn__.is_some() {
5913                                return Err(serde::de::Error::duplicate_field("urn"));
5914                            }
5915                            urn__ = Some(map_.next_value()?);
5916                        }
5917                        GeneratedField::PublicKey => {
5918                            if public_key__.is_some() {
5919                                return Err(serde::de::Error::duplicate_field("publicKey"));
5920                            }
5921                            public_key__ = Some(map_.next_value()?);
5922                        }
5923                        GeneratedField::PrivateKey => {
5924                            if private_key__.is_some() {
5925                                return Err(serde::de::Error::duplicate_field("privateKey"));
5926                            }
5927                            private_key__ = Some(map_.next_value()?);
5928                        }
5929                        GeneratedField::Creator => {
5930                            if creator__.is_some() {
5931                                return Err(serde::de::Error::duplicate_field("creator"));
5932                            }
5933                            creator__ = Some(map_.next_value()?);
5934                        }
5935                        GeneratedField::Tags => {
5936                            if tags__.is_some() {
5937                                return Err(serde::de::Error::duplicate_field("tags"));
5938                            }
5939                            tags__ = Some(
5940                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
5941                            );
5942                        }
5943                        GeneratedField::__SkipField__ => {
5944                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5945                        }
5946                    }
5947                }
5948                Ok(KeyPair {
5949                    name: name__.unwrap_or_default(),
5950                    urn: urn__.unwrap_or_default(),
5951                    public_key: public_key__.unwrap_or_default(),
5952                    private_key: private_key__.unwrap_or_default(),
5953                    creator: creator__.unwrap_or_default(),
5954                    tags: tags__.unwrap_or_default(),
5955                })
5956            }
5957        }
5958        deserializer
5959            .deserialize_struct(
5960                "origincloud.compute.v1beta1.KeyPair",
5961                FIELDS,
5962                GeneratedVisitor,
5963            )
5964    }
5965}
5966impl serde::Serialize for ListImageFamiliesRequest {
5967    #[allow(deprecated)]
5968    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5969    where
5970        S: serde::Serializer,
5971    {
5972        use serde::ser::SerializeStruct;
5973        let len = 0;
5974        let struct_ser = serializer
5975            .serialize_struct(
5976                "origincloud.compute.v1beta1.ListImageFamiliesRequest",
5977                len,
5978            )?;
5979        struct_ser.end()
5980    }
5981}
5982impl<'de> serde::Deserialize<'de> for ListImageFamiliesRequest {
5983    #[allow(deprecated)]
5984    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5985    where
5986        D: serde::Deserializer<'de>,
5987    {
5988        const FIELDS: &[&str] = &[];
5989        #[allow(clippy::enum_variant_names)]
5990        enum GeneratedField {
5991            __SkipField__,
5992        }
5993        impl<'de> serde::Deserialize<'de> for GeneratedField {
5994            fn deserialize<D>(
5995                deserializer: D,
5996            ) -> std::result::Result<GeneratedField, D::Error>
5997            where
5998                D: serde::Deserializer<'de>,
5999            {
6000                struct GeneratedVisitor;
6001                impl serde::de::Visitor<'_> for GeneratedVisitor {
6002                    type Value = GeneratedField;
6003                    fn expecting(
6004                        &self,
6005                        formatter: &mut std::fmt::Formatter<'_>,
6006                    ) -> std::fmt::Result {
6007                        write!(formatter, "expected one of: {:?}", & FIELDS)
6008                    }
6009                    #[allow(unused_variables)]
6010                    fn visit_str<E>(
6011                        self,
6012                        value: &str,
6013                    ) -> std::result::Result<GeneratedField, E>
6014                    where
6015                        E: serde::de::Error,
6016                    {
6017                        Ok(GeneratedField::__SkipField__)
6018                    }
6019                }
6020                deserializer.deserialize_identifier(GeneratedVisitor)
6021            }
6022        }
6023        struct GeneratedVisitor;
6024        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6025            type Value = ListImageFamiliesRequest;
6026            fn expecting(
6027                &self,
6028                formatter: &mut std::fmt::Formatter<'_>,
6029            ) -> std::fmt::Result {
6030                formatter
6031                    .write_str(
6032                        "struct origincloud.compute.v1beta1.ListImageFamiliesRequest",
6033                    )
6034            }
6035            fn visit_map<V>(
6036                self,
6037                mut map_: V,
6038            ) -> std::result::Result<ListImageFamiliesRequest, V::Error>
6039            where
6040                V: serde::de::MapAccess<'de>,
6041            {
6042                while map_.next_key::<GeneratedField>()?.is_some() {
6043                    let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6044                }
6045                Ok(ListImageFamiliesRequest {})
6046            }
6047        }
6048        deserializer
6049            .deserialize_struct(
6050                "origincloud.compute.v1beta1.ListImageFamiliesRequest",
6051                FIELDS,
6052                GeneratedVisitor,
6053            )
6054    }
6055}
6056impl serde::Serialize for ListImageFamiliesResponse {
6057    #[allow(deprecated)]
6058    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6059    where
6060        S: serde::Serializer,
6061    {
6062        use serde::ser::SerializeStruct;
6063        let mut len = 0;
6064        if !self.image_families.is_empty() {
6065            len += 1;
6066        }
6067        let mut struct_ser = serializer
6068            .serialize_struct(
6069                "origincloud.compute.v1beta1.ListImageFamiliesResponse",
6070                len,
6071            )?;
6072        if !self.image_families.is_empty() {
6073            struct_ser.serialize_field("imageFamilies", &self.image_families)?;
6074        }
6075        struct_ser.end()
6076    }
6077}
6078impl<'de> serde::Deserialize<'de> for ListImageFamiliesResponse {
6079    #[allow(deprecated)]
6080    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6081    where
6082        D: serde::Deserializer<'de>,
6083    {
6084        const FIELDS: &[&str] = &["image_families", "imageFamilies"];
6085        #[allow(clippy::enum_variant_names)]
6086        enum GeneratedField {
6087            ImageFamilies,
6088            __SkipField__,
6089        }
6090        impl<'de> serde::Deserialize<'de> for GeneratedField {
6091            fn deserialize<D>(
6092                deserializer: D,
6093            ) -> std::result::Result<GeneratedField, D::Error>
6094            where
6095                D: serde::Deserializer<'de>,
6096            {
6097                struct GeneratedVisitor;
6098                impl serde::de::Visitor<'_> for GeneratedVisitor {
6099                    type Value = GeneratedField;
6100                    fn expecting(
6101                        &self,
6102                        formatter: &mut std::fmt::Formatter<'_>,
6103                    ) -> std::fmt::Result {
6104                        write!(formatter, "expected one of: {:?}", & FIELDS)
6105                    }
6106                    #[allow(unused_variables)]
6107                    fn visit_str<E>(
6108                        self,
6109                        value: &str,
6110                    ) -> std::result::Result<GeneratedField, E>
6111                    where
6112                        E: serde::de::Error,
6113                    {
6114                        match value {
6115                            "imageFamilies" | "image_families" => {
6116                                Ok(GeneratedField::ImageFamilies)
6117                            }
6118                            _ => Ok(GeneratedField::__SkipField__),
6119                        }
6120                    }
6121                }
6122                deserializer.deserialize_identifier(GeneratedVisitor)
6123            }
6124        }
6125        struct GeneratedVisitor;
6126        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6127            type Value = ListImageFamiliesResponse;
6128            fn expecting(
6129                &self,
6130                formatter: &mut std::fmt::Formatter<'_>,
6131            ) -> std::fmt::Result {
6132                formatter
6133                    .write_str(
6134                        "struct origincloud.compute.v1beta1.ListImageFamiliesResponse",
6135                    )
6136            }
6137            fn visit_map<V>(
6138                self,
6139                mut map_: V,
6140            ) -> std::result::Result<ListImageFamiliesResponse, V::Error>
6141            where
6142                V: serde::de::MapAccess<'de>,
6143            {
6144                let mut image_families__ = None;
6145                while let Some(k) = map_.next_key()? {
6146                    match k {
6147                        GeneratedField::ImageFamilies => {
6148                            if image_families__.is_some() {
6149                                return Err(
6150                                    serde::de::Error::duplicate_field("imageFamilies"),
6151                                );
6152                            }
6153                            image_families__ = Some(map_.next_value()?);
6154                        }
6155                        GeneratedField::__SkipField__ => {
6156                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6157                        }
6158                    }
6159                }
6160                Ok(ListImageFamiliesResponse {
6161                    image_families: image_families__.unwrap_or_default(),
6162                })
6163            }
6164        }
6165        deserializer
6166            .deserialize_struct(
6167                "origincloud.compute.v1beta1.ListImageFamiliesResponse",
6168                FIELDS,
6169                GeneratedVisitor,
6170            )
6171    }
6172}
6173impl serde::Serialize for ListImagesRequest {
6174    #[allow(deprecated)]
6175    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6176    where
6177        S: serde::Serializer,
6178    {
6179        use serde::ser::SerializeStruct;
6180        let mut len = 0;
6181        if !self.parent.is_empty() {
6182            len += 1;
6183        }
6184        if self.page_size != 0 {
6185            len += 1;
6186        }
6187        if !self.page_token.is_empty() {
6188            len += 1;
6189        }
6190        let mut struct_ser = serializer
6191            .serialize_struct("origincloud.compute.v1beta1.ListImagesRequest", len)?;
6192        if !self.parent.is_empty() {
6193            struct_ser.serialize_field("parent", &self.parent)?;
6194        }
6195        if self.page_size != 0 {
6196            struct_ser.serialize_field("pageSize", &self.page_size)?;
6197        }
6198        if !self.page_token.is_empty() {
6199            struct_ser.serialize_field("pageToken", &self.page_token)?;
6200        }
6201        struct_ser.end()
6202    }
6203}
6204impl<'de> serde::Deserialize<'de> for ListImagesRequest {
6205    #[allow(deprecated)]
6206    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6207    where
6208        D: serde::Deserializer<'de>,
6209    {
6210        const FIELDS: &[&str] = &[
6211            "parent",
6212            "page_size",
6213            "pageSize",
6214            "page_token",
6215            "pageToken",
6216        ];
6217        #[allow(clippy::enum_variant_names)]
6218        enum GeneratedField {
6219            Parent,
6220            PageSize,
6221            PageToken,
6222            __SkipField__,
6223        }
6224        impl<'de> serde::Deserialize<'de> for GeneratedField {
6225            fn deserialize<D>(
6226                deserializer: D,
6227            ) -> std::result::Result<GeneratedField, D::Error>
6228            where
6229                D: serde::Deserializer<'de>,
6230            {
6231                struct GeneratedVisitor;
6232                impl serde::de::Visitor<'_> for GeneratedVisitor {
6233                    type Value = GeneratedField;
6234                    fn expecting(
6235                        &self,
6236                        formatter: &mut std::fmt::Formatter<'_>,
6237                    ) -> std::fmt::Result {
6238                        write!(formatter, "expected one of: {:?}", & FIELDS)
6239                    }
6240                    #[allow(unused_variables)]
6241                    fn visit_str<E>(
6242                        self,
6243                        value: &str,
6244                    ) -> std::result::Result<GeneratedField, E>
6245                    where
6246                        E: serde::de::Error,
6247                    {
6248                        match value {
6249                            "parent" => Ok(GeneratedField::Parent),
6250                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
6251                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
6252                            _ => Ok(GeneratedField::__SkipField__),
6253                        }
6254                    }
6255                }
6256                deserializer.deserialize_identifier(GeneratedVisitor)
6257            }
6258        }
6259        struct GeneratedVisitor;
6260        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6261            type Value = ListImagesRequest;
6262            fn expecting(
6263                &self,
6264                formatter: &mut std::fmt::Formatter<'_>,
6265            ) -> std::fmt::Result {
6266                formatter
6267                    .write_str("struct origincloud.compute.v1beta1.ListImagesRequest")
6268            }
6269            fn visit_map<V>(
6270                self,
6271                mut map_: V,
6272            ) -> std::result::Result<ListImagesRequest, V::Error>
6273            where
6274                V: serde::de::MapAccess<'de>,
6275            {
6276                let mut parent__ = None;
6277                let mut page_size__ = None;
6278                let mut page_token__ = None;
6279                while let Some(k) = map_.next_key()? {
6280                    match k {
6281                        GeneratedField::Parent => {
6282                            if parent__.is_some() {
6283                                return Err(serde::de::Error::duplicate_field("parent"));
6284                            }
6285                            parent__ = Some(map_.next_value()?);
6286                        }
6287                        GeneratedField::PageSize => {
6288                            if page_size__.is_some() {
6289                                return Err(serde::de::Error::duplicate_field("pageSize"));
6290                            }
6291                            page_size__ = Some(
6292                                map_
6293                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
6294                                    .0,
6295                            );
6296                        }
6297                        GeneratedField::PageToken => {
6298                            if page_token__.is_some() {
6299                                return Err(serde::de::Error::duplicate_field("pageToken"));
6300                            }
6301                            page_token__ = Some(map_.next_value()?);
6302                        }
6303                        GeneratedField::__SkipField__ => {
6304                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6305                        }
6306                    }
6307                }
6308                Ok(ListImagesRequest {
6309                    parent: parent__.unwrap_or_default(),
6310                    page_size: page_size__.unwrap_or_default(),
6311                    page_token: page_token__.unwrap_or_default(),
6312                })
6313            }
6314        }
6315        deserializer
6316            .deserialize_struct(
6317                "origincloud.compute.v1beta1.ListImagesRequest",
6318                FIELDS,
6319                GeneratedVisitor,
6320            )
6321    }
6322}
6323impl serde::Serialize for ListImagesResponse {
6324    #[allow(deprecated)]
6325    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6326    where
6327        S: serde::Serializer,
6328    {
6329        use serde::ser::SerializeStruct;
6330        let mut len = 0;
6331        if !self.images.is_empty() {
6332            len += 1;
6333        }
6334        if !self.next_page_token.is_empty() {
6335            len += 1;
6336        }
6337        let mut struct_ser = serializer
6338            .serialize_struct("origincloud.compute.v1beta1.ListImagesResponse", len)?;
6339        if !self.images.is_empty() {
6340            struct_ser.serialize_field("images", &self.images)?;
6341        }
6342        if !self.next_page_token.is_empty() {
6343            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
6344        }
6345        struct_ser.end()
6346    }
6347}
6348impl<'de> serde::Deserialize<'de> for ListImagesResponse {
6349    #[allow(deprecated)]
6350    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6351    where
6352        D: serde::Deserializer<'de>,
6353    {
6354        const FIELDS: &[&str] = &["images", "next_page_token", "nextPageToken"];
6355        #[allow(clippy::enum_variant_names)]
6356        enum GeneratedField {
6357            Images,
6358            NextPageToken,
6359            __SkipField__,
6360        }
6361        impl<'de> serde::Deserialize<'de> for GeneratedField {
6362            fn deserialize<D>(
6363                deserializer: D,
6364            ) -> std::result::Result<GeneratedField, D::Error>
6365            where
6366                D: serde::Deserializer<'de>,
6367            {
6368                struct GeneratedVisitor;
6369                impl serde::de::Visitor<'_> for GeneratedVisitor {
6370                    type Value = GeneratedField;
6371                    fn expecting(
6372                        &self,
6373                        formatter: &mut std::fmt::Formatter<'_>,
6374                    ) -> std::fmt::Result {
6375                        write!(formatter, "expected one of: {:?}", & FIELDS)
6376                    }
6377                    #[allow(unused_variables)]
6378                    fn visit_str<E>(
6379                        self,
6380                        value: &str,
6381                    ) -> std::result::Result<GeneratedField, E>
6382                    where
6383                        E: serde::de::Error,
6384                    {
6385                        match value {
6386                            "images" => Ok(GeneratedField::Images),
6387                            "nextPageToken" | "next_page_token" => {
6388                                Ok(GeneratedField::NextPageToken)
6389                            }
6390                            _ => Ok(GeneratedField::__SkipField__),
6391                        }
6392                    }
6393                }
6394                deserializer.deserialize_identifier(GeneratedVisitor)
6395            }
6396        }
6397        struct GeneratedVisitor;
6398        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6399            type Value = ListImagesResponse;
6400            fn expecting(
6401                &self,
6402                formatter: &mut std::fmt::Formatter<'_>,
6403            ) -> std::fmt::Result {
6404                formatter
6405                    .write_str("struct origincloud.compute.v1beta1.ListImagesResponse")
6406            }
6407            fn visit_map<V>(
6408                self,
6409                mut map_: V,
6410            ) -> std::result::Result<ListImagesResponse, V::Error>
6411            where
6412                V: serde::de::MapAccess<'de>,
6413            {
6414                let mut images__ = None;
6415                let mut next_page_token__ = None;
6416                while let Some(k) = map_.next_key()? {
6417                    match k {
6418                        GeneratedField::Images => {
6419                            if images__.is_some() {
6420                                return Err(serde::de::Error::duplicate_field("images"));
6421                            }
6422                            images__ = Some(map_.next_value()?);
6423                        }
6424                        GeneratedField::NextPageToken => {
6425                            if next_page_token__.is_some() {
6426                                return Err(
6427                                    serde::de::Error::duplicate_field("nextPageToken"),
6428                                );
6429                            }
6430                            next_page_token__ = Some(map_.next_value()?);
6431                        }
6432                        GeneratedField::__SkipField__ => {
6433                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6434                        }
6435                    }
6436                }
6437                Ok(ListImagesResponse {
6438                    images: images__.unwrap_or_default(),
6439                    next_page_token: next_page_token__.unwrap_or_default(),
6440                })
6441            }
6442        }
6443        deserializer
6444            .deserialize_struct(
6445                "origincloud.compute.v1beta1.ListImagesResponse",
6446                FIELDS,
6447                GeneratedVisitor,
6448            )
6449    }
6450}
6451impl serde::Serialize for ListInstanceTypesRequest {
6452    #[allow(deprecated)]
6453    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6454    where
6455        S: serde::Serializer,
6456    {
6457        use serde::ser::SerializeStruct;
6458        let len = 0;
6459        let struct_ser = serializer
6460            .serialize_struct(
6461                "origincloud.compute.v1beta1.ListInstanceTypesRequest",
6462                len,
6463            )?;
6464        struct_ser.end()
6465    }
6466}
6467impl<'de> serde::Deserialize<'de> for ListInstanceTypesRequest {
6468    #[allow(deprecated)]
6469    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6470    where
6471        D: serde::Deserializer<'de>,
6472    {
6473        const FIELDS: &[&str] = &[];
6474        #[allow(clippy::enum_variant_names)]
6475        enum GeneratedField {
6476            __SkipField__,
6477        }
6478        impl<'de> serde::Deserialize<'de> for GeneratedField {
6479            fn deserialize<D>(
6480                deserializer: D,
6481            ) -> std::result::Result<GeneratedField, D::Error>
6482            where
6483                D: serde::Deserializer<'de>,
6484            {
6485                struct GeneratedVisitor;
6486                impl serde::de::Visitor<'_> for GeneratedVisitor {
6487                    type Value = GeneratedField;
6488                    fn expecting(
6489                        &self,
6490                        formatter: &mut std::fmt::Formatter<'_>,
6491                    ) -> std::fmt::Result {
6492                        write!(formatter, "expected one of: {:?}", & FIELDS)
6493                    }
6494                    #[allow(unused_variables)]
6495                    fn visit_str<E>(
6496                        self,
6497                        value: &str,
6498                    ) -> std::result::Result<GeneratedField, E>
6499                    where
6500                        E: serde::de::Error,
6501                    {
6502                        Ok(GeneratedField::__SkipField__)
6503                    }
6504                }
6505                deserializer.deserialize_identifier(GeneratedVisitor)
6506            }
6507        }
6508        struct GeneratedVisitor;
6509        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6510            type Value = ListInstanceTypesRequest;
6511            fn expecting(
6512                &self,
6513                formatter: &mut std::fmt::Formatter<'_>,
6514            ) -> std::fmt::Result {
6515                formatter
6516                    .write_str(
6517                        "struct origincloud.compute.v1beta1.ListInstanceTypesRequest",
6518                    )
6519            }
6520            fn visit_map<V>(
6521                self,
6522                mut map_: V,
6523            ) -> std::result::Result<ListInstanceTypesRequest, V::Error>
6524            where
6525                V: serde::de::MapAccess<'de>,
6526            {
6527                while map_.next_key::<GeneratedField>()?.is_some() {
6528                    let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6529                }
6530                Ok(ListInstanceTypesRequest {})
6531            }
6532        }
6533        deserializer
6534            .deserialize_struct(
6535                "origincloud.compute.v1beta1.ListInstanceTypesRequest",
6536                FIELDS,
6537                GeneratedVisitor,
6538            )
6539    }
6540}
6541impl serde::Serialize for ListInstanceTypesResponse {
6542    #[allow(deprecated)]
6543    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6544    where
6545        S: serde::Serializer,
6546    {
6547        use serde::ser::SerializeStruct;
6548        let mut len = 0;
6549        if !self.instance_types.is_empty() {
6550            len += 1;
6551        }
6552        let mut struct_ser = serializer
6553            .serialize_struct(
6554                "origincloud.compute.v1beta1.ListInstanceTypesResponse",
6555                len,
6556            )?;
6557        if !self.instance_types.is_empty() {
6558            struct_ser.serialize_field("instanceTypes", &self.instance_types)?;
6559        }
6560        struct_ser.end()
6561    }
6562}
6563impl<'de> serde::Deserialize<'de> for ListInstanceTypesResponse {
6564    #[allow(deprecated)]
6565    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6566    where
6567        D: serde::Deserializer<'de>,
6568    {
6569        const FIELDS: &[&str] = &["instance_types", "instanceTypes"];
6570        #[allow(clippy::enum_variant_names)]
6571        enum GeneratedField {
6572            InstanceTypes,
6573            __SkipField__,
6574        }
6575        impl<'de> serde::Deserialize<'de> for GeneratedField {
6576            fn deserialize<D>(
6577                deserializer: D,
6578            ) -> std::result::Result<GeneratedField, D::Error>
6579            where
6580                D: serde::Deserializer<'de>,
6581            {
6582                struct GeneratedVisitor;
6583                impl serde::de::Visitor<'_> for GeneratedVisitor {
6584                    type Value = GeneratedField;
6585                    fn expecting(
6586                        &self,
6587                        formatter: &mut std::fmt::Formatter<'_>,
6588                    ) -> std::fmt::Result {
6589                        write!(formatter, "expected one of: {:?}", & FIELDS)
6590                    }
6591                    #[allow(unused_variables)]
6592                    fn visit_str<E>(
6593                        self,
6594                        value: &str,
6595                    ) -> std::result::Result<GeneratedField, E>
6596                    where
6597                        E: serde::de::Error,
6598                    {
6599                        match value {
6600                            "instanceTypes" | "instance_types" => {
6601                                Ok(GeneratedField::InstanceTypes)
6602                            }
6603                            _ => Ok(GeneratedField::__SkipField__),
6604                        }
6605                    }
6606                }
6607                deserializer.deserialize_identifier(GeneratedVisitor)
6608            }
6609        }
6610        struct GeneratedVisitor;
6611        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6612            type Value = ListInstanceTypesResponse;
6613            fn expecting(
6614                &self,
6615                formatter: &mut std::fmt::Formatter<'_>,
6616            ) -> std::fmt::Result {
6617                formatter
6618                    .write_str(
6619                        "struct origincloud.compute.v1beta1.ListInstanceTypesResponse",
6620                    )
6621            }
6622            fn visit_map<V>(
6623                self,
6624                mut map_: V,
6625            ) -> std::result::Result<ListInstanceTypesResponse, V::Error>
6626            where
6627                V: serde::de::MapAccess<'de>,
6628            {
6629                let mut instance_types__ = None;
6630                while let Some(k) = map_.next_key()? {
6631                    match k {
6632                        GeneratedField::InstanceTypes => {
6633                            if instance_types__.is_some() {
6634                                return Err(
6635                                    serde::de::Error::duplicate_field("instanceTypes"),
6636                                );
6637                            }
6638                            instance_types__ = Some(map_.next_value()?);
6639                        }
6640                        GeneratedField::__SkipField__ => {
6641                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6642                        }
6643                    }
6644                }
6645                Ok(ListInstanceTypesResponse {
6646                    instance_types: instance_types__.unwrap_or_default(),
6647                })
6648            }
6649        }
6650        deserializer
6651            .deserialize_struct(
6652                "origincloud.compute.v1beta1.ListInstanceTypesResponse",
6653                FIELDS,
6654                GeneratedVisitor,
6655            )
6656    }
6657}
6658impl serde::Serialize for ListInstancesRequest {
6659    #[allow(deprecated)]
6660    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6661    where
6662        S: serde::Serializer,
6663    {
6664        use serde::ser::SerializeStruct;
6665        let mut len = 0;
6666        if !self.parent.is_empty() {
6667            len += 1;
6668        }
6669        if self.page_size != 0 {
6670            len += 1;
6671        }
6672        if !self.page_token.is_empty() {
6673            len += 1;
6674        }
6675        let mut struct_ser = serializer
6676            .serialize_struct("origincloud.compute.v1beta1.ListInstancesRequest", len)?;
6677        if !self.parent.is_empty() {
6678            struct_ser.serialize_field("parent", &self.parent)?;
6679        }
6680        if self.page_size != 0 {
6681            struct_ser.serialize_field("pageSize", &self.page_size)?;
6682        }
6683        if !self.page_token.is_empty() {
6684            struct_ser.serialize_field("pageToken", &self.page_token)?;
6685        }
6686        struct_ser.end()
6687    }
6688}
6689impl<'de> serde::Deserialize<'de> for ListInstancesRequest {
6690    #[allow(deprecated)]
6691    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6692    where
6693        D: serde::Deserializer<'de>,
6694    {
6695        const FIELDS: &[&str] = &[
6696            "parent",
6697            "page_size",
6698            "pageSize",
6699            "page_token",
6700            "pageToken",
6701        ];
6702        #[allow(clippy::enum_variant_names)]
6703        enum GeneratedField {
6704            Parent,
6705            PageSize,
6706            PageToken,
6707            __SkipField__,
6708        }
6709        impl<'de> serde::Deserialize<'de> for GeneratedField {
6710            fn deserialize<D>(
6711                deserializer: D,
6712            ) -> std::result::Result<GeneratedField, D::Error>
6713            where
6714                D: serde::Deserializer<'de>,
6715            {
6716                struct GeneratedVisitor;
6717                impl serde::de::Visitor<'_> for GeneratedVisitor {
6718                    type Value = GeneratedField;
6719                    fn expecting(
6720                        &self,
6721                        formatter: &mut std::fmt::Formatter<'_>,
6722                    ) -> std::fmt::Result {
6723                        write!(formatter, "expected one of: {:?}", & FIELDS)
6724                    }
6725                    #[allow(unused_variables)]
6726                    fn visit_str<E>(
6727                        self,
6728                        value: &str,
6729                    ) -> std::result::Result<GeneratedField, E>
6730                    where
6731                        E: serde::de::Error,
6732                    {
6733                        match value {
6734                            "parent" => Ok(GeneratedField::Parent),
6735                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
6736                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
6737                            _ => Ok(GeneratedField::__SkipField__),
6738                        }
6739                    }
6740                }
6741                deserializer.deserialize_identifier(GeneratedVisitor)
6742            }
6743        }
6744        struct GeneratedVisitor;
6745        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6746            type Value = ListInstancesRequest;
6747            fn expecting(
6748                &self,
6749                formatter: &mut std::fmt::Formatter<'_>,
6750            ) -> std::fmt::Result {
6751                formatter
6752                    .write_str("struct origincloud.compute.v1beta1.ListInstancesRequest")
6753            }
6754            fn visit_map<V>(
6755                self,
6756                mut map_: V,
6757            ) -> std::result::Result<ListInstancesRequest, V::Error>
6758            where
6759                V: serde::de::MapAccess<'de>,
6760            {
6761                let mut parent__ = None;
6762                let mut page_size__ = None;
6763                let mut page_token__ = None;
6764                while let Some(k) = map_.next_key()? {
6765                    match k {
6766                        GeneratedField::Parent => {
6767                            if parent__.is_some() {
6768                                return Err(serde::de::Error::duplicate_field("parent"));
6769                            }
6770                            parent__ = Some(map_.next_value()?);
6771                        }
6772                        GeneratedField::PageSize => {
6773                            if page_size__.is_some() {
6774                                return Err(serde::de::Error::duplicate_field("pageSize"));
6775                            }
6776                            page_size__ = Some(
6777                                map_
6778                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
6779                                    .0,
6780                            );
6781                        }
6782                        GeneratedField::PageToken => {
6783                            if page_token__.is_some() {
6784                                return Err(serde::de::Error::duplicate_field("pageToken"));
6785                            }
6786                            page_token__ = Some(map_.next_value()?);
6787                        }
6788                        GeneratedField::__SkipField__ => {
6789                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6790                        }
6791                    }
6792                }
6793                Ok(ListInstancesRequest {
6794                    parent: parent__.unwrap_or_default(),
6795                    page_size: page_size__.unwrap_or_default(),
6796                    page_token: page_token__.unwrap_or_default(),
6797                })
6798            }
6799        }
6800        deserializer
6801            .deserialize_struct(
6802                "origincloud.compute.v1beta1.ListInstancesRequest",
6803                FIELDS,
6804                GeneratedVisitor,
6805            )
6806    }
6807}
6808impl serde::Serialize for ListInstancesResponse {
6809    #[allow(deprecated)]
6810    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6811    where
6812        S: serde::Serializer,
6813    {
6814        use serde::ser::SerializeStruct;
6815        let mut len = 0;
6816        if !self.instances.is_empty() {
6817            len += 1;
6818        }
6819        if !self.next_page_token.is_empty() {
6820            len += 1;
6821        }
6822        let mut struct_ser = serializer
6823            .serialize_struct("origincloud.compute.v1beta1.ListInstancesResponse", len)?;
6824        if !self.instances.is_empty() {
6825            struct_ser.serialize_field("instances", &self.instances)?;
6826        }
6827        if !self.next_page_token.is_empty() {
6828            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
6829        }
6830        struct_ser.end()
6831    }
6832}
6833impl<'de> serde::Deserialize<'de> for ListInstancesResponse {
6834    #[allow(deprecated)]
6835    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6836    where
6837        D: serde::Deserializer<'de>,
6838    {
6839        const FIELDS: &[&str] = &["instances", "next_page_token", "nextPageToken"];
6840        #[allow(clippy::enum_variant_names)]
6841        enum GeneratedField {
6842            Instances,
6843            NextPageToken,
6844            __SkipField__,
6845        }
6846        impl<'de> serde::Deserialize<'de> for GeneratedField {
6847            fn deserialize<D>(
6848                deserializer: D,
6849            ) -> std::result::Result<GeneratedField, D::Error>
6850            where
6851                D: serde::Deserializer<'de>,
6852            {
6853                struct GeneratedVisitor;
6854                impl serde::de::Visitor<'_> for GeneratedVisitor {
6855                    type Value = GeneratedField;
6856                    fn expecting(
6857                        &self,
6858                        formatter: &mut std::fmt::Formatter<'_>,
6859                    ) -> std::fmt::Result {
6860                        write!(formatter, "expected one of: {:?}", & FIELDS)
6861                    }
6862                    #[allow(unused_variables)]
6863                    fn visit_str<E>(
6864                        self,
6865                        value: &str,
6866                    ) -> std::result::Result<GeneratedField, E>
6867                    where
6868                        E: serde::de::Error,
6869                    {
6870                        match value {
6871                            "instances" => Ok(GeneratedField::Instances),
6872                            "nextPageToken" | "next_page_token" => {
6873                                Ok(GeneratedField::NextPageToken)
6874                            }
6875                            _ => Ok(GeneratedField::__SkipField__),
6876                        }
6877                    }
6878                }
6879                deserializer.deserialize_identifier(GeneratedVisitor)
6880            }
6881        }
6882        struct GeneratedVisitor;
6883        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6884            type Value = ListInstancesResponse;
6885            fn expecting(
6886                &self,
6887                formatter: &mut std::fmt::Formatter<'_>,
6888            ) -> std::fmt::Result {
6889                formatter
6890                    .write_str(
6891                        "struct origincloud.compute.v1beta1.ListInstancesResponse",
6892                    )
6893            }
6894            fn visit_map<V>(
6895                self,
6896                mut map_: V,
6897            ) -> std::result::Result<ListInstancesResponse, V::Error>
6898            where
6899                V: serde::de::MapAccess<'de>,
6900            {
6901                let mut instances__ = None;
6902                let mut next_page_token__ = None;
6903                while let Some(k) = map_.next_key()? {
6904                    match k {
6905                        GeneratedField::Instances => {
6906                            if instances__.is_some() {
6907                                return Err(serde::de::Error::duplicate_field("instances"));
6908                            }
6909                            instances__ = Some(map_.next_value()?);
6910                        }
6911                        GeneratedField::NextPageToken => {
6912                            if next_page_token__.is_some() {
6913                                return Err(
6914                                    serde::de::Error::duplicate_field("nextPageToken"),
6915                                );
6916                            }
6917                            next_page_token__ = Some(map_.next_value()?);
6918                        }
6919                        GeneratedField::__SkipField__ => {
6920                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6921                        }
6922                    }
6923                }
6924                Ok(ListInstancesResponse {
6925                    instances: instances__.unwrap_or_default(),
6926                    next_page_token: next_page_token__.unwrap_or_default(),
6927                })
6928            }
6929        }
6930        deserializer
6931            .deserialize_struct(
6932                "origincloud.compute.v1beta1.ListInstancesResponse",
6933                FIELDS,
6934                GeneratedVisitor,
6935            )
6936    }
6937}
6938impl serde::Serialize for ListKeyPairsRequest {
6939    #[allow(deprecated)]
6940    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6941    where
6942        S: serde::Serializer,
6943    {
6944        use serde::ser::SerializeStruct;
6945        let mut len = 0;
6946        if !self.parent.is_empty() {
6947            len += 1;
6948        }
6949        if self.page_size != 0 {
6950            len += 1;
6951        }
6952        if !self.page_token.is_empty() {
6953            len += 1;
6954        }
6955        let mut struct_ser = serializer
6956            .serialize_struct("origincloud.compute.v1beta1.ListKeyPairsRequest", len)?;
6957        if !self.parent.is_empty() {
6958            struct_ser.serialize_field("parent", &self.parent)?;
6959        }
6960        if self.page_size != 0 {
6961            struct_ser.serialize_field("pageSize", &self.page_size)?;
6962        }
6963        if !self.page_token.is_empty() {
6964            struct_ser.serialize_field("pageToken", &self.page_token)?;
6965        }
6966        struct_ser.end()
6967    }
6968}
6969impl<'de> serde::Deserialize<'de> for ListKeyPairsRequest {
6970    #[allow(deprecated)]
6971    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6972    where
6973        D: serde::Deserializer<'de>,
6974    {
6975        const FIELDS: &[&str] = &[
6976            "parent",
6977            "page_size",
6978            "pageSize",
6979            "page_token",
6980            "pageToken",
6981        ];
6982        #[allow(clippy::enum_variant_names)]
6983        enum GeneratedField {
6984            Parent,
6985            PageSize,
6986            PageToken,
6987            __SkipField__,
6988        }
6989        impl<'de> serde::Deserialize<'de> for GeneratedField {
6990            fn deserialize<D>(
6991                deserializer: D,
6992            ) -> std::result::Result<GeneratedField, D::Error>
6993            where
6994                D: serde::Deserializer<'de>,
6995            {
6996                struct GeneratedVisitor;
6997                impl serde::de::Visitor<'_> for GeneratedVisitor {
6998                    type Value = GeneratedField;
6999                    fn expecting(
7000                        &self,
7001                        formatter: &mut std::fmt::Formatter<'_>,
7002                    ) -> std::fmt::Result {
7003                        write!(formatter, "expected one of: {:?}", & FIELDS)
7004                    }
7005                    #[allow(unused_variables)]
7006                    fn visit_str<E>(
7007                        self,
7008                        value: &str,
7009                    ) -> std::result::Result<GeneratedField, E>
7010                    where
7011                        E: serde::de::Error,
7012                    {
7013                        match value {
7014                            "parent" => Ok(GeneratedField::Parent),
7015                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
7016                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
7017                            _ => Ok(GeneratedField::__SkipField__),
7018                        }
7019                    }
7020                }
7021                deserializer.deserialize_identifier(GeneratedVisitor)
7022            }
7023        }
7024        struct GeneratedVisitor;
7025        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7026            type Value = ListKeyPairsRequest;
7027            fn expecting(
7028                &self,
7029                formatter: &mut std::fmt::Formatter<'_>,
7030            ) -> std::fmt::Result {
7031                formatter
7032                    .write_str("struct origincloud.compute.v1beta1.ListKeyPairsRequest")
7033            }
7034            fn visit_map<V>(
7035                self,
7036                mut map_: V,
7037            ) -> std::result::Result<ListKeyPairsRequest, V::Error>
7038            where
7039                V: serde::de::MapAccess<'de>,
7040            {
7041                let mut parent__ = None;
7042                let mut page_size__ = None;
7043                let mut page_token__ = None;
7044                while let Some(k) = map_.next_key()? {
7045                    match k {
7046                        GeneratedField::Parent => {
7047                            if parent__.is_some() {
7048                                return Err(serde::de::Error::duplicate_field("parent"));
7049                            }
7050                            parent__ = Some(map_.next_value()?);
7051                        }
7052                        GeneratedField::PageSize => {
7053                            if page_size__.is_some() {
7054                                return Err(serde::de::Error::duplicate_field("pageSize"));
7055                            }
7056                            page_size__ = Some(
7057                                map_
7058                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
7059                                    .0,
7060                            );
7061                        }
7062                        GeneratedField::PageToken => {
7063                            if page_token__.is_some() {
7064                                return Err(serde::de::Error::duplicate_field("pageToken"));
7065                            }
7066                            page_token__ = Some(map_.next_value()?);
7067                        }
7068                        GeneratedField::__SkipField__ => {
7069                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7070                        }
7071                    }
7072                }
7073                Ok(ListKeyPairsRequest {
7074                    parent: parent__.unwrap_or_default(),
7075                    page_size: page_size__.unwrap_or_default(),
7076                    page_token: page_token__.unwrap_or_default(),
7077                })
7078            }
7079        }
7080        deserializer
7081            .deserialize_struct(
7082                "origincloud.compute.v1beta1.ListKeyPairsRequest",
7083                FIELDS,
7084                GeneratedVisitor,
7085            )
7086    }
7087}
7088impl serde::Serialize for ListKeyPairsResponse {
7089    #[allow(deprecated)]
7090    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7091    where
7092        S: serde::Serializer,
7093    {
7094        use serde::ser::SerializeStruct;
7095        let mut len = 0;
7096        if !self.key_pairs.is_empty() {
7097            len += 1;
7098        }
7099        if !self.next_page_token.is_empty() {
7100            len += 1;
7101        }
7102        let mut struct_ser = serializer
7103            .serialize_struct("origincloud.compute.v1beta1.ListKeyPairsResponse", len)?;
7104        if !self.key_pairs.is_empty() {
7105            struct_ser.serialize_field("keyPairs", &self.key_pairs)?;
7106        }
7107        if !self.next_page_token.is_empty() {
7108            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
7109        }
7110        struct_ser.end()
7111    }
7112}
7113impl<'de> serde::Deserialize<'de> for ListKeyPairsResponse {
7114    #[allow(deprecated)]
7115    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7116    where
7117        D: serde::Deserializer<'de>,
7118    {
7119        const FIELDS: &[&str] = &[
7120            "key_pairs",
7121            "keyPairs",
7122            "next_page_token",
7123            "nextPageToken",
7124        ];
7125        #[allow(clippy::enum_variant_names)]
7126        enum GeneratedField {
7127            KeyPairs,
7128            NextPageToken,
7129            __SkipField__,
7130        }
7131        impl<'de> serde::Deserialize<'de> for GeneratedField {
7132            fn deserialize<D>(
7133                deserializer: D,
7134            ) -> std::result::Result<GeneratedField, D::Error>
7135            where
7136                D: serde::Deserializer<'de>,
7137            {
7138                struct GeneratedVisitor;
7139                impl serde::de::Visitor<'_> for GeneratedVisitor {
7140                    type Value = GeneratedField;
7141                    fn expecting(
7142                        &self,
7143                        formatter: &mut std::fmt::Formatter<'_>,
7144                    ) -> std::fmt::Result {
7145                        write!(formatter, "expected one of: {:?}", & FIELDS)
7146                    }
7147                    #[allow(unused_variables)]
7148                    fn visit_str<E>(
7149                        self,
7150                        value: &str,
7151                    ) -> std::result::Result<GeneratedField, E>
7152                    where
7153                        E: serde::de::Error,
7154                    {
7155                        match value {
7156                            "keyPairs" | "key_pairs" => Ok(GeneratedField::KeyPairs),
7157                            "nextPageToken" | "next_page_token" => {
7158                                Ok(GeneratedField::NextPageToken)
7159                            }
7160                            _ => Ok(GeneratedField::__SkipField__),
7161                        }
7162                    }
7163                }
7164                deserializer.deserialize_identifier(GeneratedVisitor)
7165            }
7166        }
7167        struct GeneratedVisitor;
7168        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7169            type Value = ListKeyPairsResponse;
7170            fn expecting(
7171                &self,
7172                formatter: &mut std::fmt::Formatter<'_>,
7173            ) -> std::fmt::Result {
7174                formatter
7175                    .write_str("struct origincloud.compute.v1beta1.ListKeyPairsResponse")
7176            }
7177            fn visit_map<V>(
7178                self,
7179                mut map_: V,
7180            ) -> std::result::Result<ListKeyPairsResponse, V::Error>
7181            where
7182                V: serde::de::MapAccess<'de>,
7183            {
7184                let mut key_pairs__ = None;
7185                let mut next_page_token__ = None;
7186                while let Some(k) = map_.next_key()? {
7187                    match k {
7188                        GeneratedField::KeyPairs => {
7189                            if key_pairs__.is_some() {
7190                                return Err(serde::de::Error::duplicate_field("keyPairs"));
7191                            }
7192                            key_pairs__ = Some(map_.next_value()?);
7193                        }
7194                        GeneratedField::NextPageToken => {
7195                            if next_page_token__.is_some() {
7196                                return Err(
7197                                    serde::de::Error::duplicate_field("nextPageToken"),
7198                                );
7199                            }
7200                            next_page_token__ = Some(map_.next_value()?);
7201                        }
7202                        GeneratedField::__SkipField__ => {
7203                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7204                        }
7205                    }
7206                }
7207                Ok(ListKeyPairsResponse {
7208                    key_pairs: key_pairs__.unwrap_or_default(),
7209                    next_page_token: next_page_token__.unwrap_or_default(),
7210                })
7211            }
7212        }
7213        deserializer
7214            .deserialize_struct(
7215                "origincloud.compute.v1beta1.ListKeyPairsResponse",
7216                FIELDS,
7217                GeneratedVisitor,
7218            )
7219    }
7220}
7221impl serde::Serialize for ListPublicImagesRequest {
7222    #[allow(deprecated)]
7223    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7224    where
7225        S: serde::Serializer,
7226    {
7227        use serde::ser::SerializeStruct;
7228        let mut len = 0;
7229        if !self.parent.is_empty() {
7230            len += 1;
7231        }
7232        if self.page_size != 0 {
7233            len += 1;
7234        }
7235        if !self.page_token.is_empty() {
7236            len += 1;
7237        }
7238        let mut struct_ser = serializer
7239            .serialize_struct(
7240                "origincloud.compute.v1beta1.ListPublicImagesRequest",
7241                len,
7242            )?;
7243        if !self.parent.is_empty() {
7244            struct_ser.serialize_field("parent", &self.parent)?;
7245        }
7246        if self.page_size != 0 {
7247            struct_ser.serialize_field("pageSize", &self.page_size)?;
7248        }
7249        if !self.page_token.is_empty() {
7250            struct_ser.serialize_field("pageToken", &self.page_token)?;
7251        }
7252        struct_ser.end()
7253    }
7254}
7255impl<'de> serde::Deserialize<'de> for ListPublicImagesRequest {
7256    #[allow(deprecated)]
7257    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7258    where
7259        D: serde::Deserializer<'de>,
7260    {
7261        const FIELDS: &[&str] = &[
7262            "parent",
7263            "page_size",
7264            "pageSize",
7265            "page_token",
7266            "pageToken",
7267        ];
7268        #[allow(clippy::enum_variant_names)]
7269        enum GeneratedField {
7270            Parent,
7271            PageSize,
7272            PageToken,
7273            __SkipField__,
7274        }
7275        impl<'de> serde::Deserialize<'de> for GeneratedField {
7276            fn deserialize<D>(
7277                deserializer: D,
7278            ) -> std::result::Result<GeneratedField, D::Error>
7279            where
7280                D: serde::Deserializer<'de>,
7281            {
7282                struct GeneratedVisitor;
7283                impl serde::de::Visitor<'_> for GeneratedVisitor {
7284                    type Value = GeneratedField;
7285                    fn expecting(
7286                        &self,
7287                        formatter: &mut std::fmt::Formatter<'_>,
7288                    ) -> std::fmt::Result {
7289                        write!(formatter, "expected one of: {:?}", & FIELDS)
7290                    }
7291                    #[allow(unused_variables)]
7292                    fn visit_str<E>(
7293                        self,
7294                        value: &str,
7295                    ) -> std::result::Result<GeneratedField, E>
7296                    where
7297                        E: serde::de::Error,
7298                    {
7299                        match value {
7300                            "parent" => Ok(GeneratedField::Parent),
7301                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
7302                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
7303                            _ => Ok(GeneratedField::__SkipField__),
7304                        }
7305                    }
7306                }
7307                deserializer.deserialize_identifier(GeneratedVisitor)
7308            }
7309        }
7310        struct GeneratedVisitor;
7311        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7312            type Value = ListPublicImagesRequest;
7313            fn expecting(
7314                &self,
7315                formatter: &mut std::fmt::Formatter<'_>,
7316            ) -> std::fmt::Result {
7317                formatter
7318                    .write_str(
7319                        "struct origincloud.compute.v1beta1.ListPublicImagesRequest",
7320                    )
7321            }
7322            fn visit_map<V>(
7323                self,
7324                mut map_: V,
7325            ) -> std::result::Result<ListPublicImagesRequest, V::Error>
7326            where
7327                V: serde::de::MapAccess<'de>,
7328            {
7329                let mut parent__ = None;
7330                let mut page_size__ = None;
7331                let mut page_token__ = None;
7332                while let Some(k) = map_.next_key()? {
7333                    match k {
7334                        GeneratedField::Parent => {
7335                            if parent__.is_some() {
7336                                return Err(serde::de::Error::duplicate_field("parent"));
7337                            }
7338                            parent__ = Some(map_.next_value()?);
7339                        }
7340                        GeneratedField::PageSize => {
7341                            if page_size__.is_some() {
7342                                return Err(serde::de::Error::duplicate_field("pageSize"));
7343                            }
7344                            page_size__ = Some(
7345                                map_
7346                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
7347                                    .0,
7348                            );
7349                        }
7350                        GeneratedField::PageToken => {
7351                            if page_token__.is_some() {
7352                                return Err(serde::de::Error::duplicate_field("pageToken"));
7353                            }
7354                            page_token__ = Some(map_.next_value()?);
7355                        }
7356                        GeneratedField::__SkipField__ => {
7357                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7358                        }
7359                    }
7360                }
7361                Ok(ListPublicImagesRequest {
7362                    parent: parent__.unwrap_or_default(),
7363                    page_size: page_size__.unwrap_or_default(),
7364                    page_token: page_token__.unwrap_or_default(),
7365                })
7366            }
7367        }
7368        deserializer
7369            .deserialize_struct(
7370                "origincloud.compute.v1beta1.ListPublicImagesRequest",
7371                FIELDS,
7372                GeneratedVisitor,
7373            )
7374    }
7375}
7376impl serde::Serialize for ListPublicImagesResponse {
7377    #[allow(deprecated)]
7378    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7379    where
7380        S: serde::Serializer,
7381    {
7382        use serde::ser::SerializeStruct;
7383        let mut len = 0;
7384        if !self.public_images.is_empty() {
7385            len += 1;
7386        }
7387        if !self.next_page_token.is_empty() {
7388            len += 1;
7389        }
7390        let mut struct_ser = serializer
7391            .serialize_struct(
7392                "origincloud.compute.v1beta1.ListPublicImagesResponse",
7393                len,
7394            )?;
7395        if !self.public_images.is_empty() {
7396            struct_ser.serialize_field("publicImages", &self.public_images)?;
7397        }
7398        if !self.next_page_token.is_empty() {
7399            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
7400        }
7401        struct_ser.end()
7402    }
7403}
7404impl<'de> serde::Deserialize<'de> for ListPublicImagesResponse {
7405    #[allow(deprecated)]
7406    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7407    where
7408        D: serde::Deserializer<'de>,
7409    {
7410        const FIELDS: &[&str] = &[
7411            "public_images",
7412            "publicImages",
7413            "next_page_token",
7414            "nextPageToken",
7415        ];
7416        #[allow(clippy::enum_variant_names)]
7417        enum GeneratedField {
7418            PublicImages,
7419            NextPageToken,
7420            __SkipField__,
7421        }
7422        impl<'de> serde::Deserialize<'de> for GeneratedField {
7423            fn deserialize<D>(
7424                deserializer: D,
7425            ) -> std::result::Result<GeneratedField, D::Error>
7426            where
7427                D: serde::Deserializer<'de>,
7428            {
7429                struct GeneratedVisitor;
7430                impl serde::de::Visitor<'_> for GeneratedVisitor {
7431                    type Value = GeneratedField;
7432                    fn expecting(
7433                        &self,
7434                        formatter: &mut std::fmt::Formatter<'_>,
7435                    ) -> std::fmt::Result {
7436                        write!(formatter, "expected one of: {:?}", & FIELDS)
7437                    }
7438                    #[allow(unused_variables)]
7439                    fn visit_str<E>(
7440                        self,
7441                        value: &str,
7442                    ) -> std::result::Result<GeneratedField, E>
7443                    where
7444                        E: serde::de::Error,
7445                    {
7446                        match value {
7447                            "publicImages" | "public_images" => {
7448                                Ok(GeneratedField::PublicImages)
7449                            }
7450                            "nextPageToken" | "next_page_token" => {
7451                                Ok(GeneratedField::NextPageToken)
7452                            }
7453                            _ => Ok(GeneratedField::__SkipField__),
7454                        }
7455                    }
7456                }
7457                deserializer.deserialize_identifier(GeneratedVisitor)
7458            }
7459        }
7460        struct GeneratedVisitor;
7461        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7462            type Value = ListPublicImagesResponse;
7463            fn expecting(
7464                &self,
7465                formatter: &mut std::fmt::Formatter<'_>,
7466            ) -> std::fmt::Result {
7467                formatter
7468                    .write_str(
7469                        "struct origincloud.compute.v1beta1.ListPublicImagesResponse",
7470                    )
7471            }
7472            fn visit_map<V>(
7473                self,
7474                mut map_: V,
7475            ) -> std::result::Result<ListPublicImagesResponse, V::Error>
7476            where
7477                V: serde::de::MapAccess<'de>,
7478            {
7479                let mut public_images__ = None;
7480                let mut next_page_token__ = None;
7481                while let Some(k) = map_.next_key()? {
7482                    match k {
7483                        GeneratedField::PublicImages => {
7484                            if public_images__.is_some() {
7485                                return Err(
7486                                    serde::de::Error::duplicate_field("publicImages"),
7487                                );
7488                            }
7489                            public_images__ = Some(map_.next_value()?);
7490                        }
7491                        GeneratedField::NextPageToken => {
7492                            if next_page_token__.is_some() {
7493                                return Err(
7494                                    serde::de::Error::duplicate_field("nextPageToken"),
7495                                );
7496                            }
7497                            next_page_token__ = Some(map_.next_value()?);
7498                        }
7499                        GeneratedField::__SkipField__ => {
7500                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7501                        }
7502                    }
7503                }
7504                Ok(ListPublicImagesResponse {
7505                    public_images: public_images__.unwrap_or_default(),
7506                    next_page_token: next_page_token__.unwrap_or_default(),
7507                })
7508            }
7509        }
7510        deserializer
7511            .deserialize_struct(
7512                "origincloud.compute.v1beta1.ListPublicImagesResponse",
7513                FIELDS,
7514                GeneratedVisitor,
7515            )
7516    }
7517}
7518impl serde::Serialize for ListVolumeAttachmentsRequest {
7519    #[allow(deprecated)]
7520    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7521    where
7522        S: serde::Serializer,
7523    {
7524        use serde::ser::SerializeStruct;
7525        let mut len = 0;
7526        if !self.parent.is_empty() {
7527            len += 1;
7528        }
7529        if self.page_size != 0 {
7530            len += 1;
7531        }
7532        if !self.page_token.is_empty() {
7533            len += 1;
7534        }
7535        if !self.volume.is_empty() {
7536            len += 1;
7537        }
7538        let mut struct_ser = serializer
7539            .serialize_struct(
7540                "origincloud.compute.v1beta1.ListVolumeAttachmentsRequest",
7541                len,
7542            )?;
7543        if !self.parent.is_empty() {
7544            struct_ser.serialize_field("parent", &self.parent)?;
7545        }
7546        if self.page_size != 0 {
7547            struct_ser.serialize_field("pageSize", &self.page_size)?;
7548        }
7549        if !self.page_token.is_empty() {
7550            struct_ser.serialize_field("pageToken", &self.page_token)?;
7551        }
7552        if !self.volume.is_empty() {
7553            struct_ser.serialize_field("volume", &self.volume)?;
7554        }
7555        struct_ser.end()
7556    }
7557}
7558impl<'de> serde::Deserialize<'de> for ListVolumeAttachmentsRequest {
7559    #[allow(deprecated)]
7560    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7561    where
7562        D: serde::Deserializer<'de>,
7563    {
7564        const FIELDS: &[&str] = &[
7565            "parent",
7566            "page_size",
7567            "pageSize",
7568            "page_token",
7569            "pageToken",
7570            "volume",
7571        ];
7572        #[allow(clippy::enum_variant_names)]
7573        enum GeneratedField {
7574            Parent,
7575            PageSize,
7576            PageToken,
7577            Volume,
7578            __SkipField__,
7579        }
7580        impl<'de> serde::Deserialize<'de> for GeneratedField {
7581            fn deserialize<D>(
7582                deserializer: D,
7583            ) -> std::result::Result<GeneratedField, D::Error>
7584            where
7585                D: serde::Deserializer<'de>,
7586            {
7587                struct GeneratedVisitor;
7588                impl serde::de::Visitor<'_> for GeneratedVisitor {
7589                    type Value = GeneratedField;
7590                    fn expecting(
7591                        &self,
7592                        formatter: &mut std::fmt::Formatter<'_>,
7593                    ) -> std::fmt::Result {
7594                        write!(formatter, "expected one of: {:?}", & FIELDS)
7595                    }
7596                    #[allow(unused_variables)]
7597                    fn visit_str<E>(
7598                        self,
7599                        value: &str,
7600                    ) -> std::result::Result<GeneratedField, E>
7601                    where
7602                        E: serde::de::Error,
7603                    {
7604                        match value {
7605                            "parent" => Ok(GeneratedField::Parent),
7606                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
7607                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
7608                            "volume" => Ok(GeneratedField::Volume),
7609                            _ => Ok(GeneratedField::__SkipField__),
7610                        }
7611                    }
7612                }
7613                deserializer.deserialize_identifier(GeneratedVisitor)
7614            }
7615        }
7616        struct GeneratedVisitor;
7617        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7618            type Value = ListVolumeAttachmentsRequest;
7619            fn expecting(
7620                &self,
7621                formatter: &mut std::fmt::Formatter<'_>,
7622            ) -> std::fmt::Result {
7623                formatter
7624                    .write_str(
7625                        "struct origincloud.compute.v1beta1.ListVolumeAttachmentsRequest",
7626                    )
7627            }
7628            fn visit_map<V>(
7629                self,
7630                mut map_: V,
7631            ) -> std::result::Result<ListVolumeAttachmentsRequest, V::Error>
7632            where
7633                V: serde::de::MapAccess<'de>,
7634            {
7635                let mut parent__ = None;
7636                let mut page_size__ = None;
7637                let mut page_token__ = None;
7638                let mut volume__ = None;
7639                while let Some(k) = map_.next_key()? {
7640                    match k {
7641                        GeneratedField::Parent => {
7642                            if parent__.is_some() {
7643                                return Err(serde::de::Error::duplicate_field("parent"));
7644                            }
7645                            parent__ = Some(map_.next_value()?);
7646                        }
7647                        GeneratedField::PageSize => {
7648                            if page_size__.is_some() {
7649                                return Err(serde::de::Error::duplicate_field("pageSize"));
7650                            }
7651                            page_size__ = Some(
7652                                map_
7653                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
7654                                    .0,
7655                            );
7656                        }
7657                        GeneratedField::PageToken => {
7658                            if page_token__.is_some() {
7659                                return Err(serde::de::Error::duplicate_field("pageToken"));
7660                            }
7661                            page_token__ = Some(map_.next_value()?);
7662                        }
7663                        GeneratedField::Volume => {
7664                            if volume__.is_some() {
7665                                return Err(serde::de::Error::duplicate_field("volume"));
7666                            }
7667                            volume__ = Some(map_.next_value()?);
7668                        }
7669                        GeneratedField::__SkipField__ => {
7670                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7671                        }
7672                    }
7673                }
7674                Ok(ListVolumeAttachmentsRequest {
7675                    parent: parent__.unwrap_or_default(),
7676                    page_size: page_size__.unwrap_or_default(),
7677                    page_token: page_token__.unwrap_or_default(),
7678                    volume: volume__.unwrap_or_default(),
7679                })
7680            }
7681        }
7682        deserializer
7683            .deserialize_struct(
7684                "origincloud.compute.v1beta1.ListVolumeAttachmentsRequest",
7685                FIELDS,
7686                GeneratedVisitor,
7687            )
7688    }
7689}
7690impl serde::Serialize for ListVolumeAttachmentsResponse {
7691    #[allow(deprecated)]
7692    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7693    where
7694        S: serde::Serializer,
7695    {
7696        use serde::ser::SerializeStruct;
7697        let mut len = 0;
7698        if !self.volume_attachments.is_empty() {
7699            len += 1;
7700        }
7701        if !self.next_page_token.is_empty() {
7702            len += 1;
7703        }
7704        let mut struct_ser = serializer
7705            .serialize_struct(
7706                "origincloud.compute.v1beta1.ListVolumeAttachmentsResponse",
7707                len,
7708            )?;
7709        if !self.volume_attachments.is_empty() {
7710            struct_ser.serialize_field("volumeAttachments", &self.volume_attachments)?;
7711        }
7712        if !self.next_page_token.is_empty() {
7713            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
7714        }
7715        struct_ser.end()
7716    }
7717}
7718impl<'de> serde::Deserialize<'de> for ListVolumeAttachmentsResponse {
7719    #[allow(deprecated)]
7720    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7721    where
7722        D: serde::Deserializer<'de>,
7723    {
7724        const FIELDS: &[&str] = &[
7725            "volume_attachments",
7726            "volumeAttachments",
7727            "next_page_token",
7728            "nextPageToken",
7729        ];
7730        #[allow(clippy::enum_variant_names)]
7731        enum GeneratedField {
7732            VolumeAttachments,
7733            NextPageToken,
7734            __SkipField__,
7735        }
7736        impl<'de> serde::Deserialize<'de> for GeneratedField {
7737            fn deserialize<D>(
7738                deserializer: D,
7739            ) -> std::result::Result<GeneratedField, D::Error>
7740            where
7741                D: serde::Deserializer<'de>,
7742            {
7743                struct GeneratedVisitor;
7744                impl serde::de::Visitor<'_> for GeneratedVisitor {
7745                    type Value = GeneratedField;
7746                    fn expecting(
7747                        &self,
7748                        formatter: &mut std::fmt::Formatter<'_>,
7749                    ) -> std::fmt::Result {
7750                        write!(formatter, "expected one of: {:?}", & FIELDS)
7751                    }
7752                    #[allow(unused_variables)]
7753                    fn visit_str<E>(
7754                        self,
7755                        value: &str,
7756                    ) -> std::result::Result<GeneratedField, E>
7757                    where
7758                        E: serde::de::Error,
7759                    {
7760                        match value {
7761                            "volumeAttachments" | "volume_attachments" => {
7762                                Ok(GeneratedField::VolumeAttachments)
7763                            }
7764                            "nextPageToken" | "next_page_token" => {
7765                                Ok(GeneratedField::NextPageToken)
7766                            }
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 = ListVolumeAttachmentsResponse;
7777            fn expecting(
7778                &self,
7779                formatter: &mut std::fmt::Formatter<'_>,
7780            ) -> std::fmt::Result {
7781                formatter
7782                    .write_str(
7783                        "struct origincloud.compute.v1beta1.ListVolumeAttachmentsResponse",
7784                    )
7785            }
7786            fn visit_map<V>(
7787                self,
7788                mut map_: V,
7789            ) -> std::result::Result<ListVolumeAttachmentsResponse, V::Error>
7790            where
7791                V: serde::de::MapAccess<'de>,
7792            {
7793                let mut volume_attachments__ = None;
7794                let mut next_page_token__ = None;
7795                while let Some(k) = map_.next_key()? {
7796                    match k {
7797                        GeneratedField::VolumeAttachments => {
7798                            if volume_attachments__.is_some() {
7799                                return Err(
7800                                    serde::de::Error::duplicate_field("volumeAttachments"),
7801                                );
7802                            }
7803                            volume_attachments__ = Some(map_.next_value()?);
7804                        }
7805                        GeneratedField::NextPageToken => {
7806                            if next_page_token__.is_some() {
7807                                return Err(
7808                                    serde::de::Error::duplicate_field("nextPageToken"),
7809                                );
7810                            }
7811                            next_page_token__ = Some(map_.next_value()?);
7812                        }
7813                        GeneratedField::__SkipField__ => {
7814                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7815                        }
7816                    }
7817                }
7818                Ok(ListVolumeAttachmentsResponse {
7819                    volume_attachments: volume_attachments__.unwrap_or_default(),
7820                    next_page_token: next_page_token__.unwrap_or_default(),
7821                })
7822            }
7823        }
7824        deserializer
7825            .deserialize_struct(
7826                "origincloud.compute.v1beta1.ListVolumeAttachmentsResponse",
7827                FIELDS,
7828                GeneratedVisitor,
7829            )
7830    }
7831}
7832impl serde::Serialize for PublicImage {
7833    #[allow(deprecated)]
7834    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7835    where
7836        S: serde::Serializer,
7837    {
7838        use serde::ser::SerializeStruct;
7839        let mut len = 0;
7840        if !self.name.is_empty() {
7841            len += 1;
7842        }
7843        if !self.urn.is_empty() {
7844            len += 1;
7845        }
7846        if !self.description.is_empty() {
7847            len += 1;
7848        }
7849        if !self.default_user.is_empty() {
7850            len += 1;
7851        }
7852        if !self.root_device.is_empty() {
7853            len += 1;
7854        }
7855        if !self.block_devices.is_empty() {
7856            len += 1;
7857        }
7858        if self.architecture != 0 {
7859            len += 1;
7860        }
7861        if self.platform != 0 {
7862            len += 1;
7863        }
7864        if self.state != 0 {
7865            len += 1;
7866        }
7867        if !self.image_family.is_empty() {
7868            len += 1;
7869        }
7870        if self.family_current {
7871            len += 1;
7872        }
7873        let mut struct_ser = serializer
7874            .serialize_struct("origincloud.compute.v1beta1.PublicImage", len)?;
7875        if !self.name.is_empty() {
7876            struct_ser.serialize_field("name", &self.name)?;
7877        }
7878        if !self.urn.is_empty() {
7879            struct_ser.serialize_field("urn", &self.urn)?;
7880        }
7881        if !self.description.is_empty() {
7882            struct_ser.serialize_field("description", &self.description)?;
7883        }
7884        if !self.default_user.is_empty() {
7885            struct_ser.serialize_field("defaultUser", &self.default_user)?;
7886        }
7887        if !self.root_device.is_empty() {
7888            struct_ser.serialize_field("rootDevice", &self.root_device)?;
7889        }
7890        if !self.block_devices.is_empty() {
7891            struct_ser.serialize_field("blockDevices", &self.block_devices)?;
7892        }
7893        if self.architecture != 0 {
7894            let v = image::Architecture::try_from(self.architecture)
7895                .map_err(|_| serde::ser::Error::custom(
7896                    format!("Invalid variant {}", self.architecture),
7897                ))?;
7898            struct_ser.serialize_field("architecture", &v)?;
7899        }
7900        if self.platform != 0 {
7901            let v = image::Platform::try_from(self.platform)
7902                .map_err(|_| serde::ser::Error::custom(
7903                    format!("Invalid variant {}", self.platform),
7904                ))?;
7905            struct_ser.serialize_field("platform", &v)?;
7906        }
7907        if self.state != 0 {
7908            let v = image::State::try_from(self.state)
7909                .map_err(|_| serde::ser::Error::custom(
7910                    format!("Invalid variant {}", self.state),
7911                ))?;
7912            struct_ser.serialize_field("state", &v)?;
7913        }
7914        if !self.image_family.is_empty() {
7915            struct_ser.serialize_field("imageFamily", &self.image_family)?;
7916        }
7917        if self.family_current {
7918            struct_ser.serialize_field("familyCurrent", &self.family_current)?;
7919        }
7920        struct_ser.end()
7921    }
7922}
7923impl<'de> serde::Deserialize<'de> for PublicImage {
7924    #[allow(deprecated)]
7925    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7926    where
7927        D: serde::Deserializer<'de>,
7928    {
7929        const FIELDS: &[&str] = &[
7930            "name",
7931            "urn",
7932            "description",
7933            "default_user",
7934            "defaultUser",
7935            "root_device",
7936            "rootDevice",
7937            "block_devices",
7938            "blockDevices",
7939            "architecture",
7940            "platform",
7941            "state",
7942            "image_family",
7943            "imageFamily",
7944            "family_current",
7945            "familyCurrent",
7946        ];
7947        #[allow(clippy::enum_variant_names)]
7948        enum GeneratedField {
7949            Name,
7950            Urn,
7951            Description,
7952            DefaultUser,
7953            RootDevice,
7954            BlockDevices,
7955            Architecture,
7956            Platform,
7957            State,
7958            ImageFamily,
7959            FamilyCurrent,
7960            __SkipField__,
7961        }
7962        impl<'de> serde::Deserialize<'de> for GeneratedField {
7963            fn deserialize<D>(
7964                deserializer: D,
7965            ) -> std::result::Result<GeneratedField, D::Error>
7966            where
7967                D: serde::Deserializer<'de>,
7968            {
7969                struct GeneratedVisitor;
7970                impl serde::de::Visitor<'_> for GeneratedVisitor {
7971                    type Value = GeneratedField;
7972                    fn expecting(
7973                        &self,
7974                        formatter: &mut std::fmt::Formatter<'_>,
7975                    ) -> std::fmt::Result {
7976                        write!(formatter, "expected one of: {:?}", & FIELDS)
7977                    }
7978                    #[allow(unused_variables)]
7979                    fn visit_str<E>(
7980                        self,
7981                        value: &str,
7982                    ) -> std::result::Result<GeneratedField, E>
7983                    where
7984                        E: serde::de::Error,
7985                    {
7986                        match value {
7987                            "name" => Ok(GeneratedField::Name),
7988                            "urn" => Ok(GeneratedField::Urn),
7989                            "description" => Ok(GeneratedField::Description),
7990                            "defaultUser" | "default_user" => {
7991                                Ok(GeneratedField::DefaultUser)
7992                            }
7993                            "rootDevice" | "root_device" => {
7994                                Ok(GeneratedField::RootDevice)
7995                            }
7996                            "blockDevices" | "block_devices" => {
7997                                Ok(GeneratedField::BlockDevices)
7998                            }
7999                            "architecture" => Ok(GeneratedField::Architecture),
8000                            "platform" => Ok(GeneratedField::Platform),
8001                            "state" => Ok(GeneratedField::State),
8002                            "imageFamily" | "image_family" => {
8003                                Ok(GeneratedField::ImageFamily)
8004                            }
8005                            "familyCurrent" | "family_current" => {
8006                                Ok(GeneratedField::FamilyCurrent)
8007                            }
8008                            _ => Ok(GeneratedField::__SkipField__),
8009                        }
8010                    }
8011                }
8012                deserializer.deserialize_identifier(GeneratedVisitor)
8013            }
8014        }
8015        struct GeneratedVisitor;
8016        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8017            type Value = PublicImage;
8018            fn expecting(
8019                &self,
8020                formatter: &mut std::fmt::Formatter<'_>,
8021            ) -> std::fmt::Result {
8022                formatter.write_str("struct origincloud.compute.v1beta1.PublicImage")
8023            }
8024            fn visit_map<V>(
8025                self,
8026                mut map_: V,
8027            ) -> std::result::Result<PublicImage, V::Error>
8028            where
8029                V: serde::de::MapAccess<'de>,
8030            {
8031                let mut name__ = None;
8032                let mut urn__ = None;
8033                let mut description__ = None;
8034                let mut default_user__ = None;
8035                let mut root_device__ = None;
8036                let mut block_devices__ = None;
8037                let mut architecture__ = None;
8038                let mut platform__ = None;
8039                let mut state__ = None;
8040                let mut image_family__ = None;
8041                let mut family_current__ = None;
8042                while let Some(k) = map_.next_key()? {
8043                    match k {
8044                        GeneratedField::Name => {
8045                            if name__.is_some() {
8046                                return Err(serde::de::Error::duplicate_field("name"));
8047                            }
8048                            name__ = Some(map_.next_value()?);
8049                        }
8050                        GeneratedField::Urn => {
8051                            if urn__.is_some() {
8052                                return Err(serde::de::Error::duplicate_field("urn"));
8053                            }
8054                            urn__ = Some(map_.next_value()?);
8055                        }
8056                        GeneratedField::Description => {
8057                            if description__.is_some() {
8058                                return Err(
8059                                    serde::de::Error::duplicate_field("description"),
8060                                );
8061                            }
8062                            description__ = Some(map_.next_value()?);
8063                        }
8064                        GeneratedField::DefaultUser => {
8065                            if default_user__.is_some() {
8066                                return Err(
8067                                    serde::de::Error::duplicate_field("defaultUser"),
8068                                );
8069                            }
8070                            default_user__ = Some(map_.next_value()?);
8071                        }
8072                        GeneratedField::RootDevice => {
8073                            if root_device__.is_some() {
8074                                return Err(serde::de::Error::duplicate_field("rootDevice"));
8075                            }
8076                            root_device__ = Some(map_.next_value()?);
8077                        }
8078                        GeneratedField::BlockDevices => {
8079                            if block_devices__.is_some() {
8080                                return Err(
8081                                    serde::de::Error::duplicate_field("blockDevices"),
8082                                );
8083                            }
8084                            block_devices__ = Some(map_.next_value()?);
8085                        }
8086                        GeneratedField::Architecture => {
8087                            if architecture__.is_some() {
8088                                return Err(
8089                                    serde::de::Error::duplicate_field("architecture"),
8090                                );
8091                            }
8092                            architecture__ = Some(
8093                                map_.next_value::<image::Architecture>()? as i32,
8094                            );
8095                        }
8096                        GeneratedField::Platform => {
8097                            if platform__.is_some() {
8098                                return Err(serde::de::Error::duplicate_field("platform"));
8099                            }
8100                            platform__ = Some(
8101                                map_.next_value::<image::Platform>()? as i32,
8102                            );
8103                        }
8104                        GeneratedField::State => {
8105                            if state__.is_some() {
8106                                return Err(serde::de::Error::duplicate_field("state"));
8107                            }
8108                            state__ = Some(map_.next_value::<image::State>()? as i32);
8109                        }
8110                        GeneratedField::ImageFamily => {
8111                            if image_family__.is_some() {
8112                                return Err(
8113                                    serde::de::Error::duplicate_field("imageFamily"),
8114                                );
8115                            }
8116                            image_family__ = Some(map_.next_value()?);
8117                        }
8118                        GeneratedField::FamilyCurrent => {
8119                            if family_current__.is_some() {
8120                                return Err(
8121                                    serde::de::Error::duplicate_field("familyCurrent"),
8122                                );
8123                            }
8124                            family_current__ = Some(map_.next_value()?);
8125                        }
8126                        GeneratedField::__SkipField__ => {
8127                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8128                        }
8129                    }
8130                }
8131                Ok(PublicImage {
8132                    name: name__.unwrap_or_default(),
8133                    urn: urn__.unwrap_or_default(),
8134                    description: description__.unwrap_or_default(),
8135                    default_user: default_user__.unwrap_or_default(),
8136                    root_device: root_device__.unwrap_or_default(),
8137                    block_devices: block_devices__.unwrap_or_default(),
8138                    architecture: architecture__.unwrap_or_default(),
8139                    platform: platform__.unwrap_or_default(),
8140                    state: state__.unwrap_or_default(),
8141                    image_family: image_family__.unwrap_or_default(),
8142                    family_current: family_current__.unwrap_or_default(),
8143                })
8144            }
8145        }
8146        deserializer
8147            .deserialize_struct(
8148                "origincloud.compute.v1beta1.PublicImage",
8149                FIELDS,
8150                GeneratedVisitor,
8151            )
8152    }
8153}
8154impl serde::Serialize for PublicImageBlockDevice {
8155    #[allow(deprecated)]
8156    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8157    where
8158        S: serde::Serializer,
8159    {
8160        use serde::ser::SerializeStruct;
8161        let mut len = 0;
8162        if !self.device.is_empty() {
8163            len += 1;
8164        }
8165        if self.size_gib != 0 {
8166            len += 1;
8167        }
8168        let mut struct_ser = serializer
8169            .serialize_struct(
8170                "origincloud.compute.v1beta1.PublicImageBlockDevice",
8171                len,
8172            )?;
8173        if !self.device.is_empty() {
8174            struct_ser.serialize_field("device", &self.device)?;
8175        }
8176        if self.size_gib != 0 {
8177            struct_ser.serialize_field("sizeGib", &self.size_gib)?;
8178        }
8179        struct_ser.end()
8180    }
8181}
8182impl<'de> serde::Deserialize<'de> for PublicImageBlockDevice {
8183    #[allow(deprecated)]
8184    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8185    where
8186        D: serde::Deserializer<'de>,
8187    {
8188        const FIELDS: &[&str] = &["device", "size_gib", "sizeGib"];
8189        #[allow(clippy::enum_variant_names)]
8190        enum GeneratedField {
8191            Device,
8192            SizeGib,
8193            __SkipField__,
8194        }
8195        impl<'de> serde::Deserialize<'de> for GeneratedField {
8196            fn deserialize<D>(
8197                deserializer: D,
8198            ) -> std::result::Result<GeneratedField, D::Error>
8199            where
8200                D: serde::Deserializer<'de>,
8201            {
8202                struct GeneratedVisitor;
8203                impl serde::de::Visitor<'_> for GeneratedVisitor {
8204                    type Value = GeneratedField;
8205                    fn expecting(
8206                        &self,
8207                        formatter: &mut std::fmt::Formatter<'_>,
8208                    ) -> std::fmt::Result {
8209                        write!(formatter, "expected one of: {:?}", & FIELDS)
8210                    }
8211                    #[allow(unused_variables)]
8212                    fn visit_str<E>(
8213                        self,
8214                        value: &str,
8215                    ) -> std::result::Result<GeneratedField, E>
8216                    where
8217                        E: serde::de::Error,
8218                    {
8219                        match value {
8220                            "device" => Ok(GeneratedField::Device),
8221                            "sizeGib" | "size_gib" => Ok(GeneratedField::SizeGib),
8222                            _ => Ok(GeneratedField::__SkipField__),
8223                        }
8224                    }
8225                }
8226                deserializer.deserialize_identifier(GeneratedVisitor)
8227            }
8228        }
8229        struct GeneratedVisitor;
8230        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8231            type Value = PublicImageBlockDevice;
8232            fn expecting(
8233                &self,
8234                formatter: &mut std::fmt::Formatter<'_>,
8235            ) -> std::fmt::Result {
8236                formatter
8237                    .write_str(
8238                        "struct origincloud.compute.v1beta1.PublicImageBlockDevice",
8239                    )
8240            }
8241            fn visit_map<V>(
8242                self,
8243                mut map_: V,
8244            ) -> std::result::Result<PublicImageBlockDevice, V::Error>
8245            where
8246                V: serde::de::MapAccess<'de>,
8247            {
8248                let mut device__ = None;
8249                let mut size_gib__ = None;
8250                while let Some(k) = map_.next_key()? {
8251                    match k {
8252                        GeneratedField::Device => {
8253                            if device__.is_some() {
8254                                return Err(serde::de::Error::duplicate_field("device"));
8255                            }
8256                            device__ = Some(map_.next_value()?);
8257                        }
8258                        GeneratedField::SizeGib => {
8259                            if size_gib__.is_some() {
8260                                return Err(serde::de::Error::duplicate_field("sizeGib"));
8261                            }
8262                            size_gib__ = Some(
8263                                map_
8264                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
8265                                    .0,
8266                            );
8267                        }
8268                        GeneratedField::__SkipField__ => {
8269                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8270                        }
8271                    }
8272                }
8273                Ok(PublicImageBlockDevice {
8274                    device: device__.unwrap_or_default(),
8275                    size_gib: size_gib__.unwrap_or_default(),
8276                })
8277            }
8278        }
8279        deserializer
8280            .deserialize_struct(
8281                "origincloud.compute.v1beta1.PublicImageBlockDevice",
8282                FIELDS,
8283                GeneratedVisitor,
8284            )
8285    }
8286}
8287impl serde::Serialize for StartInstanceRequest {
8288    #[allow(deprecated)]
8289    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8290    where
8291        S: serde::Serializer,
8292    {
8293        use serde::ser::SerializeStruct;
8294        let mut len = 0;
8295        if !self.name.is_empty() {
8296            len += 1;
8297        }
8298        if !self.request_id.is_empty() {
8299            len += 1;
8300        }
8301        let mut struct_ser = serializer
8302            .serialize_struct("origincloud.compute.v1beta1.StartInstanceRequest", len)?;
8303        if !self.name.is_empty() {
8304            struct_ser.serialize_field("name", &self.name)?;
8305        }
8306        if !self.request_id.is_empty() {
8307            struct_ser.serialize_field("requestId", &self.request_id)?;
8308        }
8309        struct_ser.end()
8310    }
8311}
8312impl<'de> serde::Deserialize<'de> for StartInstanceRequest {
8313    #[allow(deprecated)]
8314    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8315    where
8316        D: serde::Deserializer<'de>,
8317    {
8318        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
8319        #[allow(clippy::enum_variant_names)]
8320        enum GeneratedField {
8321            Name,
8322            RequestId,
8323            __SkipField__,
8324        }
8325        impl<'de> serde::Deserialize<'de> for GeneratedField {
8326            fn deserialize<D>(
8327                deserializer: D,
8328            ) -> std::result::Result<GeneratedField, D::Error>
8329            where
8330                D: serde::Deserializer<'de>,
8331            {
8332                struct GeneratedVisitor;
8333                impl serde::de::Visitor<'_> for GeneratedVisitor {
8334                    type Value = GeneratedField;
8335                    fn expecting(
8336                        &self,
8337                        formatter: &mut std::fmt::Formatter<'_>,
8338                    ) -> std::fmt::Result {
8339                        write!(formatter, "expected one of: {:?}", & FIELDS)
8340                    }
8341                    #[allow(unused_variables)]
8342                    fn visit_str<E>(
8343                        self,
8344                        value: &str,
8345                    ) -> std::result::Result<GeneratedField, E>
8346                    where
8347                        E: serde::de::Error,
8348                    {
8349                        match value {
8350                            "name" => Ok(GeneratedField::Name),
8351                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
8352                            _ => Ok(GeneratedField::__SkipField__),
8353                        }
8354                    }
8355                }
8356                deserializer.deserialize_identifier(GeneratedVisitor)
8357            }
8358        }
8359        struct GeneratedVisitor;
8360        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8361            type Value = StartInstanceRequest;
8362            fn expecting(
8363                &self,
8364                formatter: &mut std::fmt::Formatter<'_>,
8365            ) -> std::fmt::Result {
8366                formatter
8367                    .write_str("struct origincloud.compute.v1beta1.StartInstanceRequest")
8368            }
8369            fn visit_map<V>(
8370                self,
8371                mut map_: V,
8372            ) -> std::result::Result<StartInstanceRequest, V::Error>
8373            where
8374                V: serde::de::MapAccess<'de>,
8375            {
8376                let mut name__ = None;
8377                let mut request_id__ = None;
8378                while let Some(k) = map_.next_key()? {
8379                    match k {
8380                        GeneratedField::Name => {
8381                            if name__.is_some() {
8382                                return Err(serde::de::Error::duplicate_field("name"));
8383                            }
8384                            name__ = Some(map_.next_value()?);
8385                        }
8386                        GeneratedField::RequestId => {
8387                            if request_id__.is_some() {
8388                                return Err(serde::de::Error::duplicate_field("requestId"));
8389                            }
8390                            request_id__ = Some(map_.next_value()?);
8391                        }
8392                        GeneratedField::__SkipField__ => {
8393                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8394                        }
8395                    }
8396                }
8397                Ok(StartInstanceRequest {
8398                    name: name__.unwrap_or_default(),
8399                    request_id: request_id__.unwrap_or_default(),
8400                })
8401            }
8402        }
8403        deserializer
8404            .deserialize_struct(
8405                "origincloud.compute.v1beta1.StartInstanceRequest",
8406                FIELDS,
8407                GeneratedVisitor,
8408            )
8409    }
8410}
8411impl serde::Serialize for StopInstanceRequest {
8412    #[allow(deprecated)]
8413    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8414    where
8415        S: serde::Serializer,
8416    {
8417        use serde::ser::SerializeStruct;
8418        let mut len = 0;
8419        if !self.name.is_empty() {
8420            len += 1;
8421        }
8422        if !self.request_id.is_empty() {
8423            len += 1;
8424        }
8425        let mut struct_ser = serializer
8426            .serialize_struct("origincloud.compute.v1beta1.StopInstanceRequest", len)?;
8427        if !self.name.is_empty() {
8428            struct_ser.serialize_field("name", &self.name)?;
8429        }
8430        if !self.request_id.is_empty() {
8431            struct_ser.serialize_field("requestId", &self.request_id)?;
8432        }
8433        struct_ser.end()
8434    }
8435}
8436impl<'de> serde::Deserialize<'de> for StopInstanceRequest {
8437    #[allow(deprecated)]
8438    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8439    where
8440        D: serde::Deserializer<'de>,
8441    {
8442        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
8443        #[allow(clippy::enum_variant_names)]
8444        enum GeneratedField {
8445            Name,
8446            RequestId,
8447            __SkipField__,
8448        }
8449        impl<'de> serde::Deserialize<'de> for GeneratedField {
8450            fn deserialize<D>(
8451                deserializer: D,
8452            ) -> std::result::Result<GeneratedField, D::Error>
8453            where
8454                D: serde::Deserializer<'de>,
8455            {
8456                struct GeneratedVisitor;
8457                impl serde::de::Visitor<'_> for GeneratedVisitor {
8458                    type Value = GeneratedField;
8459                    fn expecting(
8460                        &self,
8461                        formatter: &mut std::fmt::Formatter<'_>,
8462                    ) -> std::fmt::Result {
8463                        write!(formatter, "expected one of: {:?}", & FIELDS)
8464                    }
8465                    #[allow(unused_variables)]
8466                    fn visit_str<E>(
8467                        self,
8468                        value: &str,
8469                    ) -> std::result::Result<GeneratedField, E>
8470                    where
8471                        E: serde::de::Error,
8472                    {
8473                        match value {
8474                            "name" => Ok(GeneratedField::Name),
8475                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
8476                            _ => Ok(GeneratedField::__SkipField__),
8477                        }
8478                    }
8479                }
8480                deserializer.deserialize_identifier(GeneratedVisitor)
8481            }
8482        }
8483        struct GeneratedVisitor;
8484        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8485            type Value = StopInstanceRequest;
8486            fn expecting(
8487                &self,
8488                formatter: &mut std::fmt::Formatter<'_>,
8489            ) -> std::fmt::Result {
8490                formatter
8491                    .write_str("struct origincloud.compute.v1beta1.StopInstanceRequest")
8492            }
8493            fn visit_map<V>(
8494                self,
8495                mut map_: V,
8496            ) -> std::result::Result<StopInstanceRequest, V::Error>
8497            where
8498                V: serde::de::MapAccess<'de>,
8499            {
8500                let mut name__ = None;
8501                let mut request_id__ = None;
8502                while let Some(k) = map_.next_key()? {
8503                    match k {
8504                        GeneratedField::Name => {
8505                            if name__.is_some() {
8506                                return Err(serde::de::Error::duplicate_field("name"));
8507                            }
8508                            name__ = Some(map_.next_value()?);
8509                        }
8510                        GeneratedField::RequestId => {
8511                            if request_id__.is_some() {
8512                                return Err(serde::de::Error::duplicate_field("requestId"));
8513                            }
8514                            request_id__ = Some(map_.next_value()?);
8515                        }
8516                        GeneratedField::__SkipField__ => {
8517                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8518                        }
8519                    }
8520                }
8521                Ok(StopInstanceRequest {
8522                    name: name__.unwrap_or_default(),
8523                    request_id: request_id__.unwrap_or_default(),
8524                })
8525            }
8526        }
8527        deserializer
8528            .deserialize_struct(
8529                "origincloud.compute.v1beta1.StopInstanceRequest",
8530                FIELDS,
8531                GeneratedVisitor,
8532            )
8533    }
8534}
8535impl serde::Serialize for UpdateImageRequest {
8536    #[allow(deprecated)]
8537    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8538    where
8539        S: serde::Serializer,
8540    {
8541        use serde::ser::SerializeStruct;
8542        let mut len = 0;
8543        if self.image.is_some() {
8544            len += 1;
8545        }
8546        if self.update_mask.is_some() {
8547            len += 1;
8548        }
8549        let mut struct_ser = serializer
8550            .serialize_struct("origincloud.compute.v1beta1.UpdateImageRequest", len)?;
8551        if let Some(v) = self.image.as_ref() {
8552            struct_ser.serialize_field("image", v)?;
8553        }
8554        if let Some(v) = self.update_mask.as_ref() {
8555            struct_ser.serialize_field("updateMask", v)?;
8556        }
8557        struct_ser.end()
8558    }
8559}
8560impl<'de> serde::Deserialize<'de> for UpdateImageRequest {
8561    #[allow(deprecated)]
8562    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8563    where
8564        D: serde::Deserializer<'de>,
8565    {
8566        const FIELDS: &[&str] = &["image", "update_mask", "updateMask"];
8567        #[allow(clippy::enum_variant_names)]
8568        enum GeneratedField {
8569            Image,
8570            UpdateMask,
8571            __SkipField__,
8572        }
8573        impl<'de> serde::Deserialize<'de> for GeneratedField {
8574            fn deserialize<D>(
8575                deserializer: D,
8576            ) -> std::result::Result<GeneratedField, D::Error>
8577            where
8578                D: serde::Deserializer<'de>,
8579            {
8580                struct GeneratedVisitor;
8581                impl serde::de::Visitor<'_> for GeneratedVisitor {
8582                    type Value = GeneratedField;
8583                    fn expecting(
8584                        &self,
8585                        formatter: &mut std::fmt::Formatter<'_>,
8586                    ) -> std::fmt::Result {
8587                        write!(formatter, "expected one of: {:?}", & FIELDS)
8588                    }
8589                    #[allow(unused_variables)]
8590                    fn visit_str<E>(
8591                        self,
8592                        value: &str,
8593                    ) -> std::result::Result<GeneratedField, E>
8594                    where
8595                        E: serde::de::Error,
8596                    {
8597                        match value {
8598                            "image" => Ok(GeneratedField::Image),
8599                            "updateMask" | "update_mask" => {
8600                                Ok(GeneratedField::UpdateMask)
8601                            }
8602                            _ => Ok(GeneratedField::__SkipField__),
8603                        }
8604                    }
8605                }
8606                deserializer.deserialize_identifier(GeneratedVisitor)
8607            }
8608        }
8609        struct GeneratedVisitor;
8610        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8611            type Value = UpdateImageRequest;
8612            fn expecting(
8613                &self,
8614                formatter: &mut std::fmt::Formatter<'_>,
8615            ) -> std::fmt::Result {
8616                formatter
8617                    .write_str("struct origincloud.compute.v1beta1.UpdateImageRequest")
8618            }
8619            fn visit_map<V>(
8620                self,
8621                mut map_: V,
8622            ) -> std::result::Result<UpdateImageRequest, V::Error>
8623            where
8624                V: serde::de::MapAccess<'de>,
8625            {
8626                let mut image__ = None;
8627                let mut update_mask__ = None;
8628                while let Some(k) = map_.next_key()? {
8629                    match k {
8630                        GeneratedField::Image => {
8631                            if image__.is_some() {
8632                                return Err(serde::de::Error::duplicate_field("image"));
8633                            }
8634                            image__ = map_.next_value()?;
8635                        }
8636                        GeneratedField::UpdateMask => {
8637                            if update_mask__.is_some() {
8638                                return Err(serde::de::Error::duplicate_field("updateMask"));
8639                            }
8640                            update_mask__ = map_.next_value()?;
8641                        }
8642                        GeneratedField::__SkipField__ => {
8643                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8644                        }
8645                    }
8646                }
8647                Ok(UpdateImageRequest {
8648                    image: image__,
8649                    update_mask: update_mask__,
8650                })
8651            }
8652        }
8653        deserializer
8654            .deserialize_struct(
8655                "origincloud.compute.v1beta1.UpdateImageRequest",
8656                FIELDS,
8657                GeneratedVisitor,
8658            )
8659    }
8660}
8661impl serde::Serialize for UpdateInstanceRequest {
8662    #[allow(deprecated)]
8663    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8664    where
8665        S: serde::Serializer,
8666    {
8667        use serde::ser::SerializeStruct;
8668        let mut len = 0;
8669        if self.instance.is_some() {
8670            len += 1;
8671        }
8672        if self.update_mask.is_some() {
8673            len += 1;
8674        }
8675        if !self.request_id.is_empty() {
8676            len += 1;
8677        }
8678        let mut struct_ser = serializer
8679            .serialize_struct("origincloud.compute.v1beta1.UpdateInstanceRequest", len)?;
8680        if let Some(v) = self.instance.as_ref() {
8681            struct_ser.serialize_field("instance", v)?;
8682        }
8683        if let Some(v) = self.update_mask.as_ref() {
8684            struct_ser.serialize_field("updateMask", v)?;
8685        }
8686        if !self.request_id.is_empty() {
8687            struct_ser.serialize_field("requestId", &self.request_id)?;
8688        }
8689        struct_ser.end()
8690    }
8691}
8692impl<'de> serde::Deserialize<'de> for UpdateInstanceRequest {
8693    #[allow(deprecated)]
8694    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8695    where
8696        D: serde::Deserializer<'de>,
8697    {
8698        const FIELDS: &[&str] = &[
8699            "instance",
8700            "update_mask",
8701            "updateMask",
8702            "request_id",
8703            "requestId",
8704        ];
8705        #[allow(clippy::enum_variant_names)]
8706        enum GeneratedField {
8707            Instance,
8708            UpdateMask,
8709            RequestId,
8710            __SkipField__,
8711        }
8712        impl<'de> serde::Deserialize<'de> for GeneratedField {
8713            fn deserialize<D>(
8714                deserializer: D,
8715            ) -> std::result::Result<GeneratedField, D::Error>
8716            where
8717                D: serde::Deserializer<'de>,
8718            {
8719                struct GeneratedVisitor;
8720                impl serde::de::Visitor<'_> for GeneratedVisitor {
8721                    type Value = GeneratedField;
8722                    fn expecting(
8723                        &self,
8724                        formatter: &mut std::fmt::Formatter<'_>,
8725                    ) -> std::fmt::Result {
8726                        write!(formatter, "expected one of: {:?}", & FIELDS)
8727                    }
8728                    #[allow(unused_variables)]
8729                    fn visit_str<E>(
8730                        self,
8731                        value: &str,
8732                    ) -> std::result::Result<GeneratedField, E>
8733                    where
8734                        E: serde::de::Error,
8735                    {
8736                        match value {
8737                            "instance" => Ok(GeneratedField::Instance),
8738                            "updateMask" | "update_mask" => {
8739                                Ok(GeneratedField::UpdateMask)
8740                            }
8741                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
8742                            _ => Ok(GeneratedField::__SkipField__),
8743                        }
8744                    }
8745                }
8746                deserializer.deserialize_identifier(GeneratedVisitor)
8747            }
8748        }
8749        struct GeneratedVisitor;
8750        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8751            type Value = UpdateInstanceRequest;
8752            fn expecting(
8753                &self,
8754                formatter: &mut std::fmt::Formatter<'_>,
8755            ) -> std::fmt::Result {
8756                formatter
8757                    .write_str(
8758                        "struct origincloud.compute.v1beta1.UpdateInstanceRequest",
8759                    )
8760            }
8761            fn visit_map<V>(
8762                self,
8763                mut map_: V,
8764            ) -> std::result::Result<UpdateInstanceRequest, V::Error>
8765            where
8766                V: serde::de::MapAccess<'de>,
8767            {
8768                let mut instance__ = None;
8769                let mut update_mask__ = None;
8770                let mut request_id__ = None;
8771                while let Some(k) = map_.next_key()? {
8772                    match k {
8773                        GeneratedField::Instance => {
8774                            if instance__.is_some() {
8775                                return Err(serde::de::Error::duplicate_field("instance"));
8776                            }
8777                            instance__ = map_.next_value()?;
8778                        }
8779                        GeneratedField::UpdateMask => {
8780                            if update_mask__.is_some() {
8781                                return Err(serde::de::Error::duplicate_field("updateMask"));
8782                            }
8783                            update_mask__ = map_.next_value()?;
8784                        }
8785                        GeneratedField::RequestId => {
8786                            if request_id__.is_some() {
8787                                return Err(serde::de::Error::duplicate_field("requestId"));
8788                            }
8789                            request_id__ = Some(map_.next_value()?);
8790                        }
8791                        GeneratedField::__SkipField__ => {
8792                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8793                        }
8794                    }
8795                }
8796                Ok(UpdateInstanceRequest {
8797                    instance: instance__,
8798                    update_mask: update_mask__,
8799                    request_id: request_id__.unwrap_or_default(),
8800                })
8801            }
8802        }
8803        deserializer
8804            .deserialize_struct(
8805                "origincloud.compute.v1beta1.UpdateInstanceRequest",
8806                FIELDS,
8807                GeneratedVisitor,
8808            )
8809    }
8810}
8811impl serde::Serialize for UpdateKeyPairRequest {
8812    #[allow(deprecated)]
8813    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8814    where
8815        S: serde::Serializer,
8816    {
8817        use serde::ser::SerializeStruct;
8818        let mut len = 0;
8819        if self.key_pair.is_some() {
8820            len += 1;
8821        }
8822        if self.update_mask.is_some() {
8823            len += 1;
8824        }
8825        let mut struct_ser = serializer
8826            .serialize_struct("origincloud.compute.v1beta1.UpdateKeyPairRequest", len)?;
8827        if let Some(v) = self.key_pair.as_ref() {
8828            struct_ser.serialize_field("keyPair", v)?;
8829        }
8830        if let Some(v) = self.update_mask.as_ref() {
8831            struct_ser.serialize_field("updateMask", v)?;
8832        }
8833        struct_ser.end()
8834    }
8835}
8836impl<'de> serde::Deserialize<'de> for UpdateKeyPairRequest {
8837    #[allow(deprecated)]
8838    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8839    where
8840        D: serde::Deserializer<'de>,
8841    {
8842        const FIELDS: &[&str] = &["key_pair", "keyPair", "update_mask", "updateMask"];
8843        #[allow(clippy::enum_variant_names)]
8844        enum GeneratedField {
8845            KeyPair,
8846            UpdateMask,
8847            __SkipField__,
8848        }
8849        impl<'de> serde::Deserialize<'de> for GeneratedField {
8850            fn deserialize<D>(
8851                deserializer: D,
8852            ) -> std::result::Result<GeneratedField, D::Error>
8853            where
8854                D: serde::Deserializer<'de>,
8855            {
8856                struct GeneratedVisitor;
8857                impl serde::de::Visitor<'_> for GeneratedVisitor {
8858                    type Value = GeneratedField;
8859                    fn expecting(
8860                        &self,
8861                        formatter: &mut std::fmt::Formatter<'_>,
8862                    ) -> std::fmt::Result {
8863                        write!(formatter, "expected one of: {:?}", & FIELDS)
8864                    }
8865                    #[allow(unused_variables)]
8866                    fn visit_str<E>(
8867                        self,
8868                        value: &str,
8869                    ) -> std::result::Result<GeneratedField, E>
8870                    where
8871                        E: serde::de::Error,
8872                    {
8873                        match value {
8874                            "keyPair" | "key_pair" => Ok(GeneratedField::KeyPair),
8875                            "updateMask" | "update_mask" => {
8876                                Ok(GeneratedField::UpdateMask)
8877                            }
8878                            _ => Ok(GeneratedField::__SkipField__),
8879                        }
8880                    }
8881                }
8882                deserializer.deserialize_identifier(GeneratedVisitor)
8883            }
8884        }
8885        struct GeneratedVisitor;
8886        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8887            type Value = UpdateKeyPairRequest;
8888            fn expecting(
8889                &self,
8890                formatter: &mut std::fmt::Formatter<'_>,
8891            ) -> std::fmt::Result {
8892                formatter
8893                    .write_str("struct origincloud.compute.v1beta1.UpdateKeyPairRequest")
8894            }
8895            fn visit_map<V>(
8896                self,
8897                mut map_: V,
8898            ) -> std::result::Result<UpdateKeyPairRequest, V::Error>
8899            where
8900                V: serde::de::MapAccess<'de>,
8901            {
8902                let mut key_pair__ = None;
8903                let mut update_mask__ = None;
8904                while let Some(k) = map_.next_key()? {
8905                    match k {
8906                        GeneratedField::KeyPair => {
8907                            if key_pair__.is_some() {
8908                                return Err(serde::de::Error::duplicate_field("keyPair"));
8909                            }
8910                            key_pair__ = map_.next_value()?;
8911                        }
8912                        GeneratedField::UpdateMask => {
8913                            if update_mask__.is_some() {
8914                                return Err(serde::de::Error::duplicate_field("updateMask"));
8915                            }
8916                            update_mask__ = map_.next_value()?;
8917                        }
8918                        GeneratedField::__SkipField__ => {
8919                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8920                        }
8921                    }
8922                }
8923                Ok(UpdateKeyPairRequest {
8924                    key_pair: key_pair__,
8925                    update_mask: update_mask__,
8926                })
8927            }
8928        }
8929        deserializer
8930            .deserialize_struct(
8931                "origincloud.compute.v1beta1.UpdateKeyPairRequest",
8932                FIELDS,
8933                GeneratedVisitor,
8934            )
8935    }
8936}
8937impl serde::Serialize for VolumeAttachment {
8938    #[allow(deprecated)]
8939    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8940    where
8941        S: serde::Serializer,
8942    {
8943        use serde::ser::SerializeStruct;
8944        let mut len = 0;
8945        if !self.name.is_empty() {
8946            len += 1;
8947        }
8948        if !self.urn.is_empty() {
8949            len += 1;
8950        }
8951        if !self.volume.is_empty() {
8952            len += 1;
8953        }
8954        if !self.device.is_empty() {
8955            len += 1;
8956        }
8957        if self.boot {
8958            len += 1;
8959        }
8960        if self.state != 0 {
8961            len += 1;
8962        }
8963        let mut struct_ser = serializer
8964            .serialize_struct("origincloud.compute.v1beta1.VolumeAttachment", len)?;
8965        if !self.name.is_empty() {
8966            struct_ser.serialize_field("name", &self.name)?;
8967        }
8968        if !self.urn.is_empty() {
8969            struct_ser.serialize_field("urn", &self.urn)?;
8970        }
8971        if !self.volume.is_empty() {
8972            struct_ser.serialize_field("volume", &self.volume)?;
8973        }
8974        if !self.device.is_empty() {
8975            struct_ser.serialize_field("device", &self.device)?;
8976        }
8977        if self.boot {
8978            struct_ser.serialize_field("boot", &self.boot)?;
8979        }
8980        if self.state != 0 {
8981            let v = volume_attachment::State::try_from(self.state)
8982                .map_err(|_| serde::ser::Error::custom(
8983                    format!("Invalid variant {}", self.state),
8984                ))?;
8985            struct_ser.serialize_field("state", &v)?;
8986        }
8987        struct_ser.end()
8988    }
8989}
8990impl<'de> serde::Deserialize<'de> for VolumeAttachment {
8991    #[allow(deprecated)]
8992    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8993    where
8994        D: serde::Deserializer<'de>,
8995    {
8996        const FIELDS: &[&str] = &["name", "urn", "volume", "device", "boot", "state"];
8997        #[allow(clippy::enum_variant_names)]
8998        enum GeneratedField {
8999            Name,
9000            Urn,
9001            Volume,
9002            Device,
9003            Boot,
9004            State,
9005            __SkipField__,
9006        }
9007        impl<'de> serde::Deserialize<'de> for GeneratedField {
9008            fn deserialize<D>(
9009                deserializer: D,
9010            ) -> std::result::Result<GeneratedField, D::Error>
9011            where
9012                D: serde::Deserializer<'de>,
9013            {
9014                struct GeneratedVisitor;
9015                impl serde::de::Visitor<'_> for GeneratedVisitor {
9016                    type Value = GeneratedField;
9017                    fn expecting(
9018                        &self,
9019                        formatter: &mut std::fmt::Formatter<'_>,
9020                    ) -> std::fmt::Result {
9021                        write!(formatter, "expected one of: {:?}", & FIELDS)
9022                    }
9023                    #[allow(unused_variables)]
9024                    fn visit_str<E>(
9025                        self,
9026                        value: &str,
9027                    ) -> std::result::Result<GeneratedField, E>
9028                    where
9029                        E: serde::de::Error,
9030                    {
9031                        match value {
9032                            "name" => Ok(GeneratedField::Name),
9033                            "urn" => Ok(GeneratedField::Urn),
9034                            "volume" => Ok(GeneratedField::Volume),
9035                            "device" => Ok(GeneratedField::Device),
9036                            "boot" => Ok(GeneratedField::Boot),
9037                            "state" => Ok(GeneratedField::State),
9038                            _ => Ok(GeneratedField::__SkipField__),
9039                        }
9040                    }
9041                }
9042                deserializer.deserialize_identifier(GeneratedVisitor)
9043            }
9044        }
9045        struct GeneratedVisitor;
9046        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9047            type Value = VolumeAttachment;
9048            fn expecting(
9049                &self,
9050                formatter: &mut std::fmt::Formatter<'_>,
9051            ) -> std::fmt::Result {
9052                formatter
9053                    .write_str("struct origincloud.compute.v1beta1.VolumeAttachment")
9054            }
9055            fn visit_map<V>(
9056                self,
9057                mut map_: V,
9058            ) -> std::result::Result<VolumeAttachment, V::Error>
9059            where
9060                V: serde::de::MapAccess<'de>,
9061            {
9062                let mut name__ = None;
9063                let mut urn__ = None;
9064                let mut volume__ = None;
9065                let mut device__ = None;
9066                let mut boot__ = None;
9067                let mut state__ = None;
9068                while let Some(k) = map_.next_key()? {
9069                    match k {
9070                        GeneratedField::Name => {
9071                            if name__.is_some() {
9072                                return Err(serde::de::Error::duplicate_field("name"));
9073                            }
9074                            name__ = Some(map_.next_value()?);
9075                        }
9076                        GeneratedField::Urn => {
9077                            if urn__.is_some() {
9078                                return Err(serde::de::Error::duplicate_field("urn"));
9079                            }
9080                            urn__ = Some(map_.next_value()?);
9081                        }
9082                        GeneratedField::Volume => {
9083                            if volume__.is_some() {
9084                                return Err(serde::de::Error::duplicate_field("volume"));
9085                            }
9086                            volume__ = Some(map_.next_value()?);
9087                        }
9088                        GeneratedField::Device => {
9089                            if device__.is_some() {
9090                                return Err(serde::de::Error::duplicate_field("device"));
9091                            }
9092                            device__ = Some(map_.next_value()?);
9093                        }
9094                        GeneratedField::Boot => {
9095                            if boot__.is_some() {
9096                                return Err(serde::de::Error::duplicate_field("boot"));
9097                            }
9098                            boot__ = Some(map_.next_value()?);
9099                        }
9100                        GeneratedField::State => {
9101                            if state__.is_some() {
9102                                return Err(serde::de::Error::duplicate_field("state"));
9103                            }
9104                            state__ = Some(
9105                                map_.next_value::<volume_attachment::State>()? as i32,
9106                            );
9107                        }
9108                        GeneratedField::__SkipField__ => {
9109                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9110                        }
9111                    }
9112                }
9113                Ok(VolumeAttachment {
9114                    name: name__.unwrap_or_default(),
9115                    urn: urn__.unwrap_or_default(),
9116                    volume: volume__.unwrap_or_default(),
9117                    device: device__.unwrap_or_default(),
9118                    boot: boot__.unwrap_or_default(),
9119                    state: state__.unwrap_or_default(),
9120                })
9121            }
9122        }
9123        deserializer
9124            .deserialize_struct(
9125                "origincloud.compute.v1beta1.VolumeAttachment",
9126                FIELDS,
9127                GeneratedVisitor,
9128            )
9129    }
9130}
9131impl serde::Serialize for volume_attachment::State {
9132    #[allow(deprecated)]
9133    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9134    where
9135        S: serde::Serializer,
9136    {
9137        let variant = match self {
9138            Self::Unspecified => "STATE_UNSPECIFIED",
9139            Self::Creating => "CREATING",
9140            Self::Attaching => "ATTACHING",
9141            Self::Attached => "ATTACHED",
9142            Self::Detaching => "DETACHING",
9143            Self::Releasing => "RELEASING",
9144            Self::ReleaseAbandoned => "RELEASE_ABANDONED",
9145            Self::Failed => "FAILED",
9146        };
9147        serializer.serialize_str(variant)
9148    }
9149}
9150impl<'de> serde::Deserialize<'de> for volume_attachment::State {
9151    #[allow(deprecated)]
9152    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9153    where
9154        D: serde::Deserializer<'de>,
9155    {
9156        const FIELDS: &[&str] = &[
9157            "STATE_UNSPECIFIED",
9158            "CREATING",
9159            "ATTACHING",
9160            "ATTACHED",
9161            "DETACHING",
9162            "RELEASING",
9163            "RELEASE_ABANDONED",
9164            "FAILED",
9165        ];
9166        struct GeneratedVisitor;
9167        impl serde::de::Visitor<'_> for GeneratedVisitor {
9168            type Value = volume_attachment::State;
9169            fn expecting(
9170                &self,
9171                formatter: &mut std::fmt::Formatter<'_>,
9172            ) -> std::fmt::Result {
9173                write!(formatter, "expected one of: {:?}", & FIELDS)
9174            }
9175            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
9176            where
9177                E: serde::de::Error,
9178            {
9179                i32::try_from(v)
9180                    .ok()
9181                    .and_then(|x| {
9182                        x
9183                            .try_into()
9184                            .ok()
9185                            .or_else(|| Some(volume_attachment::State::default()))
9186                    })
9187                    .ok_or_else(|| {
9188                        serde::de::Error::invalid_value(
9189                            serde::de::Unexpected::Signed(v),
9190                            &self,
9191                        )
9192                    })
9193            }
9194            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
9195            where
9196                E: serde::de::Error,
9197            {
9198                i32::try_from(v)
9199                    .ok()
9200                    .and_then(|x| {
9201                        x
9202                            .try_into()
9203                            .ok()
9204                            .or_else(|| Some(volume_attachment::State::default()))
9205                    })
9206                    .ok_or_else(|| {
9207                        serde::de::Error::invalid_value(
9208                            serde::de::Unexpected::Unsigned(v),
9209                            &self,
9210                        )
9211                    })
9212            }
9213            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9214            where
9215                E: serde::de::Error,
9216            {
9217                match value {
9218                    "STATE_UNSPECIFIED" => Ok(volume_attachment::State::Unspecified),
9219                    "CREATING" => Ok(volume_attachment::State::Creating),
9220                    "ATTACHING" => Ok(volume_attachment::State::Attaching),
9221                    "ATTACHED" => Ok(volume_attachment::State::Attached),
9222                    "DETACHING" => Ok(volume_attachment::State::Detaching),
9223                    "RELEASING" => Ok(volume_attachment::State::Releasing),
9224                    "RELEASE_ABANDONED" => Ok(volume_attachment::State::ReleaseAbandoned),
9225                    "FAILED" => Ok(volume_attachment::State::Failed),
9226                    _ => Ok(volume_attachment::State::default()),
9227                }
9228            }
9229        }
9230        deserializer.deserialize_any(GeneratedVisitor)
9231    }
9232}
9233/// Calls `InstanceTypeService`.
9234///
9235/// The catalog of instance types: every size the platform publishes, each
9236/// saying whether an instance can be launched as it right now. Not scoped to
9237/// an organisation or a project; no permission is needed.
9238#[derive(Clone, Debug)]
9239pub struct InstanceTypeClient {
9240    service: ::origincloud_core::Service,
9241}
9242impl InstanceTypeClient {
9243    /// Returns a client of `InstanceTypeService` that sends its calls through `client`.
9244    pub fn new(client: &::origincloud_core::Client) -> Self {
9245        Self {
9246            service: client.service("compute", true),
9247        }
9248    }
9249    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9250    pub fn service(&self) -> &::origincloud_core::Service {
9251        &self.service
9252    }
9253    /// Returns an instance type.
9254    pub async fn get_instance_type(
9255        &self,
9256        request: GetInstanceTypeRequest,
9257    ) -> ::core::result::Result<InstanceType, ::origincloud_core::Error> {
9258        let p0 = ::origincloud_core::path_value(
9259            "name",
9260            &request.name,
9261            "instanceTypes/*",
9262        )?;
9263        let query = ::origincloud_core::query(&request, &["name"])?;
9264        let call = ::origincloud_core::Request::new(
9265                ::origincloud_core::Method::GET,
9266                format!("/v1beta1/{p0}"),
9267            )
9268            .with_query(query)
9269            .idempotent();
9270        self.service.call(call).await
9271    }
9272    /// Lists every instance type, including those no longer offered, which
9273    /// instances launched as them still report: check `available` before
9274    /// launching as one.
9275    pub async fn list_instance_types(
9276        &self,
9277        request: ListInstanceTypesRequest,
9278    ) -> ::core::result::Result<ListInstanceTypesResponse, ::origincloud_core::Error> {
9279        let query = ::origincloud_core::query(&request, &[])?;
9280        let call = ::origincloud_core::Request::new(
9281                ::origincloud_core::Method::GET,
9282                ::std::string::String::from("/v1beta1/instanceTypes"),
9283            )
9284            .with_query(query)
9285            .idempotent();
9286        self.service.call(call).await
9287    }
9288}
9289/// Calls `ImageFamilyService`.
9290///
9291/// The catalog of image families: stable names that each launch whichever
9292/// public image is current for them, so a launch gets the latest build
9293/// without naming an image. Not scoped to an organisation or a project; no
9294/// permission is needed.
9295#[derive(Clone, Debug)]
9296pub struct ImageFamilyClient {
9297    service: ::origincloud_core::Service,
9298}
9299impl ImageFamilyClient {
9300    /// Returns a client of `ImageFamilyService` that sends its calls through `client`.
9301    pub fn new(client: &::origincloud_core::Client) -> Self {
9302        Self {
9303            service: client.service("compute", true),
9304        }
9305    }
9306    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9307    pub fn service(&self) -> &::origincloud_core::Service {
9308        &self.service
9309    }
9310    /// Returns an image family.
9311    pub async fn get_image_family(
9312        &self,
9313        request: GetImageFamilyRequest,
9314    ) -> ::core::result::Result<ImageFamily, ::origincloud_core::Error> {
9315        let p0 = ::origincloud_core::path_value(
9316            "name",
9317            &request.name,
9318            "imageFamilies/*",
9319        )?;
9320        let query = ::origincloud_core::query(&request, &["name"])?;
9321        let call = ::origincloud_core::Request::new(
9322                ::origincloud_core::Method::GET,
9323                format!("/v1beta1/{p0}"),
9324            )
9325            .with_query(query)
9326            .idempotent();
9327        self.service.call(call).await
9328    }
9329    /// Lists every image family, including those no longer offered: check
9330    /// `available` before launching from one.
9331    pub async fn list_image_families(
9332        &self,
9333        request: ListImageFamiliesRequest,
9334    ) -> ::core::result::Result<ListImageFamiliesResponse, ::origincloud_core::Error> {
9335        let query = ::origincloud_core::query(&request, &[])?;
9336        let call = ::origincloud_core::Request::new(
9337                ::origincloud_core::Method::GET,
9338                ::std::string::String::from("/v1beta1/imageFamilies"),
9339            )
9340            .with_query(query)
9341            .idempotent();
9342        self.service.call(call).await
9343    }
9344}
9345/// Calls `ImageService`.
9346///
9347/// Images: what an instance's boot volume is created from, in one zone. A
9348/// project creates its own from protected snapshots in the zone; the
9349/// platform's public images are in `PublicImageService`.
9350#[derive(Clone, Debug)]
9351pub struct ImageClient {
9352    service: ::origincloud_core::Service,
9353}
9354impl ImageClient {
9355    /// Returns a client of `ImageService` that sends its calls through `client`.
9356    pub fn new(client: &::origincloud_core::Client) -> Self {
9357        Self {
9358            service: client.service("compute", true),
9359        }
9360    }
9361    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9362    pub fn service(&self) -> &::origincloud_core::Service {
9363        &self.service
9364    }
9365    /// Returns one of the project's own images.
9366    pub async fn get_image(
9367        &self,
9368        request: GetImageRequest,
9369    ) -> ::core::result::Result<Image, ::origincloud_core::Error> {
9370        let p0 = ::origincloud_core::path_value(
9371            "name",
9372            &request.name,
9373            "projects/*/zones/*/images/*",
9374        )?;
9375        let query = ::origincloud_core::query(&request, &["name"])?;
9376        let call = ::origincloud_core::Request::new(
9377                ::origincloud_core::Method::GET,
9378                format!("/v1beta1/{p0}"),
9379            )
9380            .with_query(query)
9381            .idempotent();
9382        self.service.call(call).await
9383    }
9384    /// Lists the project's own images in a zone, oldest first. The public
9385    /// images are listed by `ListPublicImages`.
9386    pub async fn list_images(
9387        &self,
9388        request: ListImagesRequest,
9389    ) -> ::core::result::Result<ListImagesResponse, ::origincloud_core::Error> {
9390        let p0 = ::origincloud_core::path_value(
9391            "parent",
9392            &request.parent,
9393            "projects/*/zones/*",
9394        )?;
9395        let query = ::origincloud_core::query(&request, &["parent"])?;
9396        let call = ::origincloud_core::Request::new(
9397                ::origincloud_core::Method::GET,
9398                format!("/v1beta1/{p0}/images"),
9399            )
9400            .with_query(query)
9401            .idempotent();
9402        self.service.call(call).await
9403    }
9404    /// Returns everything [`list_images`](Self::list_images) 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.
9405    pub fn all_images(
9406        &self,
9407        request: ListImagesRequest,
9408    ) -> ::origincloud_core::Pages<Image> {
9409        let client = self.clone();
9410        ::origincloud_core::Pages::new(
9411            request,
9412            move |request: ListImagesRequest| {
9413                let client = client.clone();
9414                async move {
9415                    let page = client.list_images(request).await?;
9416                    Ok((page.images, page.next_page_token))
9417                }
9418            },
9419            |request: &mut ListImagesRequest, token: ::std::string::String| {
9420                request.page_token = token;
9421            },
9422        )
9423    }
9424    /// Creates an image from the project's protected snapshots in the zone.
9425    /// The snapshots can't be unprotected while the image exists.
9426    pub async fn create_image(
9427        &self,
9428        mut request: CreateImageRequest,
9429    ) -> ::core::result::Result<Image, ::origincloud_core::Error> {
9430        if request.request_id.is_empty() {
9431            request.request_id = ::origincloud_core::new_request_id();
9432        }
9433        let p0 = ::origincloud_core::path_value(
9434            "parent",
9435            &request.parent,
9436            "projects/*/zones/*",
9437        )?;
9438        let body = ::origincloud_core::json_body(
9439            request.image.as_ref().unwrap_or(&::core::default::Default::default()),
9440        )?;
9441        let query = ::origincloud_core::query(&request, &["parent", "image"])?;
9442        let call = ::origincloud_core::Request::new(
9443                ::origincloud_core::Method::POST,
9444                format!("/v1beta1/{p0}/images"),
9445            )
9446            .with_body(body)
9447            .with_query(query)
9448            .idempotent();
9449        self.service.call(call).await
9450    }
9451    /// Changes an image's description or tags.
9452    pub async fn update_image(
9453        &self,
9454        request: UpdateImageRequest,
9455    ) -> ::core::result::Result<Image, ::origincloud_core::Error> {
9456        let p0 = ::origincloud_core::path_value(
9457            "image.name",
9458            request.image.as_ref().map_or("", |m| m.name.as_str()),
9459            "projects/*/zones/*/images/*",
9460        )?;
9461        let body = ::origincloud_core::json_body(
9462            request.image.as_ref().unwrap_or(&::core::default::Default::default()),
9463        )?;
9464        let query = ::origincloud_core::query(&request, &["image.name", "image"])?;
9465        let call = ::origincloud_core::Request::new(
9466                ::origincloud_core::Method::PATCH,
9467                format!("/v1beta1/{p0}"),
9468            )
9469            .with_body(body)
9470            .with_query(query);
9471        self.service.call(call).await
9472    }
9473    /// Deletes an image. Instances launched from it are unaffected.
9474    pub async fn delete_image(
9475        &self,
9476        request: DeleteImageRequest,
9477    ) -> ::core::result::Result<
9478        ::origincloud_core::protobuf::Empty,
9479        ::origincloud_core::Error,
9480    > {
9481        let p0 = ::origincloud_core::path_value(
9482            "name",
9483            &request.name,
9484            "projects/*/zones/*/images/*",
9485        )?;
9486        let query = ::origincloud_core::query(&request, &["name"])?;
9487        let call = ::origincloud_core::Request::new(
9488                ::origincloud_core::Method::DELETE,
9489                format!("/v1beta1/{p0}"),
9490            )
9491            .with_query(query);
9492        self.service.call(call).await
9493    }
9494}
9495/// Calls `InstanceService`.
9496///
9497/// Instances: virtual machines in one zone, booted from an image onto a
9498/// durable boot volume, with network interfaces created beforehand with the
9499/// network service.
9500#[derive(Clone, Debug)]
9501pub struct InstanceClient {
9502    service: ::origincloud_core::Service,
9503}
9504impl InstanceClient {
9505    /// Returns a client of `InstanceService` that sends its calls through `client`.
9506    pub fn new(client: &::origincloud_core::Client) -> Self {
9507        Self {
9508            service: client.service("compute", true),
9509        }
9510    }
9511    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9512    pub fn service(&self) -> &::origincloud_core::Service {
9513        &self.service
9514    }
9515    /// Returns an instance. A terminated instance can be read by name for a
9516    /// day after it was terminated.
9517    pub async fn get_instance(
9518        &self,
9519        request: GetInstanceRequest,
9520    ) -> ::core::result::Result<Instance, ::origincloud_core::Error> {
9521        let p0 = ::origincloud_core::path_value(
9522            "name",
9523            &request.name,
9524            "projects/*/zones/*/instances/*",
9525        )?;
9526        let query = ::origincloud_core::query(&request, &["name"])?;
9527        let call = ::origincloud_core::Request::new(
9528                ::origincloud_core::Method::GET,
9529                format!("/v1beta1/{p0}"),
9530            )
9531            .with_query(query)
9532            .idempotent();
9533        self.service.call(call).await
9534    }
9535    /// Lists the instances in a zone, oldest first. A terminated instance is
9536    /// listed for two hours after it was terminated. For every zone's
9537    /// instances, list the zones whose `services` name `compute` with the
9538    /// location service (`location.origincloudapis.eu`), then each zone's
9539    /// instances.
9540    pub async fn list_instances(
9541        &self,
9542        request: ListInstancesRequest,
9543    ) -> ::core::result::Result<ListInstancesResponse, ::origincloud_core::Error> {
9544        let p0 = ::origincloud_core::path_value(
9545            "parent",
9546            &request.parent,
9547            "projects/*/zones/*",
9548        )?;
9549        let query = ::origincloud_core::query(&request, &["parent"])?;
9550        let call = ::origincloud_core::Request::new(
9551                ::origincloud_core::Method::GET,
9552                format!("/v1beta1/{p0}/instances"),
9553            )
9554            .with_query(query)
9555            .idempotent();
9556        self.service.call(call).await
9557    }
9558    /// Returns everything [`list_instances`](Self::list_instances) 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.
9559    pub fn all_instances(
9560        &self,
9561        request: ListInstancesRequest,
9562    ) -> ::origincloud_core::Pages<Instance> {
9563        let client = self.clone();
9564        ::origincloud_core::Pages::new(
9565            request,
9566            move |request: ListInstancesRequest| {
9567                let client = client.clone();
9568                async move {
9569                    let page = client.list_instances(request).await?;
9570                    Ok((page.instances, page.next_page_token))
9571                }
9572            },
9573            |request: &mut ListInstancesRequest, token: ::std::string::String| {
9574                request.page_token = token;
9575            },
9576        )
9577    }
9578    /// Launches an instance. The operation is done once the instance is
9579    /// `instance::State::Running`, or failed once it is `instance::State::Failed`, with the reason in
9580    /// `state_reason`; a failed instance still exists, and can be started
9581    /// again or deleted.
9582    ///
9583    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Instance`] once the change is done.
9584    pub async fn create_instance(
9585        &self,
9586        mut request: CreateInstanceRequest,
9587    ) -> ::core::result::Result<
9588        ::origincloud_core::Operation<Instance>,
9589        ::origincloud_core::Error,
9590    > {
9591        if request.request_id.is_empty() {
9592            request.request_id = ::origincloud_core::new_request_id();
9593        }
9594        let p0 = ::origincloud_core::path_value(
9595            "parent",
9596            &request.parent,
9597            "projects/*/zones/*",
9598        )?;
9599        let body = ::origincloud_core::json_body(
9600            request.instance.as_ref().unwrap_or(&::core::default::Default::default()),
9601        )?;
9602        let query = ::origincloud_core::query(&request, &["parent", "instance"])?;
9603        let call = ::origincloud_core::Request::new(
9604                ::origincloud_core::Method::POST,
9605                format!("/v1beta1/{p0}/instances"),
9606            )
9607            .with_body(body)
9608            .with_query(query)
9609            .idempotent();
9610        let operation = self.service.call(call).await?;
9611        Ok(
9612            ::origincloud_core::Operation::new(
9613                self.service.clone(),
9614                operation,
9615                "origincloud.compute.v1beta1.Instance",
9616            ),
9617        )
9618    }
9619    /// Changes an instance's type or tags. A new `instance_type` needs the
9620    /// instance `instance::State::Stopped`, and is refused with `FAILED_PRECONDITION`
9621    /// otherwise; it takes effect at the next start. A larger type is checked
9622    /// against the same vCPU quota a launch is. The operation is done once the
9623    /// instance shows the change.
9624    ///
9625    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Instance`] once the change is done.
9626    pub async fn update_instance(
9627        &self,
9628        mut request: UpdateInstanceRequest,
9629    ) -> ::core::result::Result<
9630        ::origincloud_core::Operation<Instance>,
9631        ::origincloud_core::Error,
9632    > {
9633        if request.request_id.is_empty() {
9634            request.request_id = ::origincloud_core::new_request_id();
9635        }
9636        let p0 = ::origincloud_core::path_value(
9637            "instance.name",
9638            request.instance.as_ref().map_or("", |m| m.name.as_str()),
9639            "projects/*/zones/*/instances/*",
9640        )?;
9641        let body = ::origincloud_core::json_body(
9642            request.instance.as_ref().unwrap_or(&::core::default::Default::default()),
9643        )?;
9644        let query = ::origincloud_core::query(&request, &["instance.name", "instance"])?;
9645        let call = ::origincloud_core::Request::new(
9646                ::origincloud_core::Method::PATCH,
9647                format!("/v1beta1/{p0}"),
9648            )
9649            .with_body(body)
9650            .with_query(query)
9651            .idempotent();
9652        let operation = self.service.call(call).await?;
9653        Ok(
9654            ::origincloud_core::Operation::new(
9655                self.service.clone(),
9656                operation,
9657                "origincloud.compute.v1beta1.Instance",
9658            ),
9659        )
9660    }
9661    /// Terminates an instance: its guest is stopped for good, its network
9662    /// interfaces are released, `AVAILABLE` again with their addresses (one
9663    /// created for it at launch is deleted), and
9664    /// its boot volume is deleted with it unless a snapshot of it exists.
9665    /// Other attached volumes are detached and kept.
9666    /// Terminating a terminated instance changes nothing. The operation is
9667    /// done once the instance is `instance::State::Terminated`.
9668    ///
9669    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
9670    pub async fn delete_instance(
9671        &self,
9672        mut request: DeleteInstanceRequest,
9673    ) -> ::core::result::Result<
9674        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
9675        ::origincloud_core::Error,
9676    > {
9677        if request.request_id.is_empty() {
9678            request.request_id = ::origincloud_core::new_request_id();
9679        }
9680        let p0 = ::origincloud_core::path_value(
9681            "name",
9682            &request.name,
9683            "projects/*/zones/*/instances/*",
9684        )?;
9685        let query = ::origincloud_core::query(&request, &["name"])?;
9686        let call = ::origincloud_core::Request::new(
9687                ::origincloud_core::Method::DELETE,
9688                format!("/v1beta1/{p0}"),
9689            )
9690            .with_query(query)
9691            .idempotent();
9692        let operation = self.service.call(call).await?;
9693        Ok(
9694            ::origincloud_core::Operation::new(
9695                self.service.clone(),
9696                operation,
9697                "google.protobuf.Empty",
9698            ),
9699        )
9700    }
9701    /// Starts a `instance::State::Stopped` or `instance::State::Failed` instance. It keeps its name, its
9702    /// addresses and its volumes, and may come back on another machine.
9703    /// Starting a running instance changes nothing; it is refused while the
9704    /// instance is `instance::State::Initializing`, `instance::State::Stopping` or `instance::State::ShuttingDown`. The
9705    /// operation is done once the instance is `instance::State::Running`, or failed once it is
9706    /// `instance::State::Failed`.
9707    ///
9708    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Instance`] once the change is done.
9709    pub async fn start_instance(
9710        &self,
9711        mut request: StartInstanceRequest,
9712    ) -> ::core::result::Result<
9713        ::origincloud_core::Operation<Instance>,
9714        ::origincloud_core::Error,
9715    > {
9716        if request.request_id.is_empty() {
9717            request.request_id = ::origincloud_core::new_request_id();
9718        }
9719        let p0 = ::origincloud_core::path_value(
9720            "name",
9721            &request.name,
9722            "projects/*/zones/*/instances/*",
9723        )?;
9724        let body = ::origincloud_core::json_body(&request)?;
9725        let call = ::origincloud_core::Request::new(
9726                ::origincloud_core::Method::POST,
9727                format!("/v1beta1/{p0}:start"),
9728            )
9729            .with_body(body)
9730            .idempotent();
9731        let operation = self.service.call(call).await?;
9732        Ok(
9733            ::origincloud_core::Operation::new(
9734                self.service.clone(),
9735                operation,
9736                "origincloud.compute.v1beta1.Instance",
9737            ),
9738        )
9739    }
9740    /// Stops a running instance: its guest is shut down, and it keeps its
9741    /// volumes and addresses. Stopping a stopped instance changes nothing. The
9742    /// operation is done once the instance is `instance::State::Stopped`, or failed once it is
9743    /// `instance::State::Failed`.
9744    ///
9745    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Instance`] once the change is done.
9746    pub async fn stop_instance(
9747        &self,
9748        mut request: StopInstanceRequest,
9749    ) -> ::core::result::Result<
9750        ::origincloud_core::Operation<Instance>,
9751        ::origincloud_core::Error,
9752    > {
9753        if request.request_id.is_empty() {
9754            request.request_id = ::origincloud_core::new_request_id();
9755        }
9756        let p0 = ::origincloud_core::path_value(
9757            "name",
9758            &request.name,
9759            "projects/*/zones/*/instances/*",
9760        )?;
9761        let body = ::origincloud_core::json_body(&request)?;
9762        let call = ::origincloud_core::Request::new(
9763                ::origincloud_core::Method::POST,
9764                format!("/v1beta1/{p0}:stop"),
9765            )
9766            .with_body(body)
9767            .idempotent();
9768        let operation = self.service.call(call).await?;
9769        Ok(
9770            ::origincloud_core::Operation::new(
9771                self.service.clone(),
9772                operation,
9773                "origincloud.compute.v1beta1.Instance",
9774            ),
9775        )
9776    }
9777}
9778/// Calls `KeyPairService`.
9779///
9780/// Key pairs: SSH public keys an instance installs for its login user at
9781/// launch. A key pair belongs to its project and can be used in every zone.
9782/// Import a key you have, or have the platform generate one and return its
9783/// private key once.
9784#[derive(Clone, Debug)]
9785pub struct KeyPairClient {
9786    service: ::origincloud_core::Service,
9787}
9788impl KeyPairClient {
9789    /// Returns a client of `KeyPairService` that sends its calls through `client`.
9790    pub fn new(client: &::origincloud_core::Client) -> Self {
9791        Self {
9792            service: client.service("compute", true),
9793        }
9794    }
9795    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9796    pub fn service(&self) -> &::origincloud_core::Service {
9797        &self.service
9798    }
9799    /// Returns a key pair, its public key only.
9800    pub async fn get_key_pair(
9801        &self,
9802        request: GetKeyPairRequest,
9803    ) -> ::core::result::Result<KeyPair, ::origincloud_core::Error> {
9804        let p0 = ::origincloud_core::path_value(
9805            "name",
9806            &request.name,
9807            "projects/*/keyPairs/*",
9808        )?;
9809        let query = ::origincloud_core::query(&request, &["name"])?;
9810        let call = ::origincloud_core::Request::new(
9811                ::origincloud_core::Method::GET,
9812                format!("/v1beta1/{p0}"),
9813            )
9814            .with_query(query)
9815            .idempotent();
9816        self.service.call(call).await
9817    }
9818    /// Lists a project's key pairs, oldest first.
9819    pub async fn list_key_pairs(
9820        &self,
9821        request: ListKeyPairsRequest,
9822    ) -> ::core::result::Result<ListKeyPairsResponse, ::origincloud_core::Error> {
9823        let p0 = ::origincloud_core::path_value(
9824            "parent",
9825            &request.parent,
9826            "projects/*",
9827        )?;
9828        let query = ::origincloud_core::query(&request, &["parent"])?;
9829        let call = ::origincloud_core::Request::new(
9830                ::origincloud_core::Method::GET,
9831                format!("/v1beta1/{p0}/keyPairs"),
9832            )
9833            .with_query(query)
9834            .idempotent();
9835        self.service.call(call).await
9836    }
9837    /// Returns everything [`list_key_pairs`](Self::list_key_pairs) 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.
9838    pub fn all_key_pairs(
9839        &self,
9840        request: ListKeyPairsRequest,
9841    ) -> ::origincloud_core::Pages<KeyPair> {
9842        let client = self.clone();
9843        ::origincloud_core::Pages::new(
9844            request,
9845            move |request: ListKeyPairsRequest| {
9846                let client = client.clone();
9847                async move {
9848                    let page = client.list_key_pairs(request).await?;
9849                    Ok((page.key_pairs, page.next_page_token))
9850                }
9851            },
9852            |request: &mut ListKeyPairsRequest, token: ::std::string::String| {
9853                request.page_token = token;
9854            },
9855        )
9856    }
9857    /// Creates a key pair: imports `public_key`, or, left empty, generates an
9858    /// `ssh-ed25519` key and returns its private half in `private_key`, in
9859    /// this response only. A repeat of a generating request with the same
9860    /// `request_id` can't return the private key again, and is refused with
9861    /// `CONFLICT`, its `ErrorInfo` metadata naming the key pair under
9862    /// `keyPair`: delete it and create another.
9863    pub async fn create_key_pair(
9864        &self,
9865        mut request: CreateKeyPairRequest,
9866    ) -> ::core::result::Result<KeyPair, ::origincloud_core::Error> {
9867        if request.request_id.is_empty() {
9868            request.request_id = ::origincloud_core::new_request_id();
9869        }
9870        let p0 = ::origincloud_core::path_value(
9871            "parent",
9872            &request.parent,
9873            "projects/*",
9874        )?;
9875        let body = ::origincloud_core::json_body(
9876            request.key_pair.as_ref().unwrap_or(&::core::default::Default::default()),
9877        )?;
9878        let query = ::origincloud_core::query(&request, &["parent", "keyPair"])?;
9879        let call = ::origincloud_core::Request::new(
9880                ::origincloud_core::Method::POST,
9881                format!("/v1beta1/{p0}/keyPairs"),
9882            )
9883            .with_body(body)
9884            .with_query(query)
9885            .idempotent();
9886        self.service.call(call).await
9887    }
9888    /// Changes a key pair's tags.
9889    pub async fn update_key_pair(
9890        &self,
9891        request: UpdateKeyPairRequest,
9892    ) -> ::core::result::Result<KeyPair, ::origincloud_core::Error> {
9893        let p0 = ::origincloud_core::path_value(
9894            "keyPair.name",
9895            request.key_pair.as_ref().map_or("", |m| m.name.as_str()),
9896            "projects/*/keyPairs/*",
9897        )?;
9898        let body = ::origincloud_core::json_body(
9899            request.key_pair.as_ref().unwrap_or(&::core::default::Default::default()),
9900        )?;
9901        let query = ::origincloud_core::query(&request, &["keyPair.name", "keyPair"])?;
9902        let call = ::origincloud_core::Request::new(
9903                ::origincloud_core::Method::PATCH,
9904                format!("/v1beta1/{p0}"),
9905            )
9906            .with_body(body)
9907            .with_query(query);
9908        self.service.call(call).await
9909    }
9910    /// Deletes a key pair. Instances launched with it keep the key installed.
9911    pub async fn delete_key_pair(
9912        &self,
9913        request: DeleteKeyPairRequest,
9914    ) -> ::core::result::Result<
9915        ::origincloud_core::protobuf::Empty,
9916        ::origincloud_core::Error,
9917    > {
9918        let p0 = ::origincloud_core::path_value(
9919            "name",
9920            &request.name,
9921            "projects/*/keyPairs/*",
9922        )?;
9923        let query = ::origincloud_core::query(&request, &["name"])?;
9924        let call = ::origincloud_core::Request::new(
9925                ::origincloud_core::Method::DELETE,
9926                format!("/v1beta1/{p0}"),
9927            )
9928            .with_query(query);
9929        self.service.call(call).await
9930    }
9931}
9932/// Calls `PublicImageService`.
9933///
9934/// The catalog of public images: the platform's images, in each zone, that
9935/// any project's instances can be launched from. Not scoped to an
9936/// organisation or a project; no permission is needed.
9937#[derive(Clone, Debug)]
9938pub struct PublicImageClient {
9939    service: ::origincloud_core::Service,
9940}
9941impl PublicImageClient {
9942    /// Returns a client of `PublicImageService` that sends its calls through `client`.
9943    pub fn new(client: &::origincloud_core::Client) -> Self {
9944        Self {
9945            service: client.service("compute", true),
9946        }
9947    }
9948    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
9949    pub fn service(&self) -> &::origincloud_core::Service {
9950        &self.service
9951    }
9952    /// Returns a public image.
9953    pub async fn get_public_image(
9954        &self,
9955        request: GetPublicImageRequest,
9956    ) -> ::core::result::Result<PublicImage, ::origincloud_core::Error> {
9957        let p0 = ::origincloud_core::path_value(
9958            "name",
9959            &request.name,
9960            "zones/*/images/*",
9961        )?;
9962        let query = ::origincloud_core::query(&request, &["name"])?;
9963        let call = ::origincloud_core::Request::new(
9964                ::origincloud_core::Method::GET,
9965                format!("/v1beta1/{p0}"),
9966            )
9967            .with_query(query)
9968            .idempotent();
9969        self.service.call(call).await
9970    }
9971    /// Lists the public images in a zone, oldest first.
9972    pub async fn list_public_images(
9973        &self,
9974        request: ListPublicImagesRequest,
9975    ) -> ::core::result::Result<ListPublicImagesResponse, ::origincloud_core::Error> {
9976        let p0 = ::origincloud_core::path_value("parent", &request.parent, "zones/*")?;
9977        let query = ::origincloud_core::query(&request, &["parent"])?;
9978        let call = ::origincloud_core::Request::new(
9979                ::origincloud_core::Method::GET,
9980                format!("/v1beta1/{p0}/images"),
9981            )
9982            .with_query(query)
9983            .idempotent();
9984        self.service.call(call).await
9985    }
9986    /// Returns everything [`list_public_images`](Self::list_public_images) 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.
9987    pub fn all_public_images(
9988        &self,
9989        request: ListPublicImagesRequest,
9990    ) -> ::origincloud_core::Pages<PublicImage> {
9991        let client = self.clone();
9992        ::origincloud_core::Pages::new(
9993            request,
9994            move |request: ListPublicImagesRequest| {
9995                let client = client.clone();
9996                async move {
9997                    let page = client.list_public_images(request).await?;
9998                    Ok((page.public_images, page.next_page_token))
9999                }
10000            },
10001            |request: &mut ListPublicImagesRequest, token: ::std::string::String| {
10002                request.page_token = token;
10003            },
10004        )
10005    }
10006}
10007/// Calls `VolumeAttachmentService`.
10008///
10009/// Volume attachments: which volumes of the persistent volume service an
10010/// instance holds, and the device names its guest sees them under. Creating
10011/// one attaches a volume, deleting it detaches the volume.
10012#[derive(Clone, Debug)]
10013pub struct VolumeAttachmentClient {
10014    service: ::origincloud_core::Service,
10015}
10016impl VolumeAttachmentClient {
10017    /// Returns a client of `VolumeAttachmentService` that sends its calls through `client`.
10018    pub fn new(client: &::origincloud_core::Client) -> Self {
10019        Self {
10020            service: client.service("compute", true),
10021        }
10022    }
10023    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
10024    pub fn service(&self) -> &::origincloud_core::Service {
10025        &self.service
10026    }
10027    /// Returns a volume attachment. A detached attachment isn't found.
10028    pub async fn get_volume_attachment(
10029        &self,
10030        request: GetVolumeAttachmentRequest,
10031    ) -> ::core::result::Result<VolumeAttachment, ::origincloud_core::Error> {
10032        let p0 = ::origincloud_core::path_value(
10033            "name",
10034            &request.name,
10035            "projects/*/zones/*/instances/*/volumeAttachments/*",
10036        )?;
10037        let query = ::origincloud_core::query(&request, &["name"])?;
10038        let call = ::origincloud_core::Request::new(
10039                ::origincloud_core::Method::GET,
10040                format!("/v1beta1/{p0}"),
10041            )
10042            .with_query(query)
10043            .idempotent();
10044        self.service.call(call).await
10045    }
10046    /// Lists an instance's volume attachments, the boot volume's first, then
10047    /// by device name. With `-` for the instance, lists every instance's in the
10048    /// zone, which with `volume` finds the instance holding a volume.
10049    /// Detached attachments aren't listed.
10050    pub async fn list_volume_attachments(
10051        &self,
10052        request: ListVolumeAttachmentsRequest,
10053    ) -> ::core::result::Result<
10054        ListVolumeAttachmentsResponse,
10055        ::origincloud_core::Error,
10056    > {
10057        let p0 = ::origincloud_core::path_value(
10058            "parent",
10059            &request.parent,
10060            "projects/*/zones/*/instances/*",
10061        )?;
10062        let query = ::origincloud_core::query(&request, &["parent"])?;
10063        let call = ::origincloud_core::Request::new(
10064                ::origincloud_core::Method::GET,
10065                format!("/v1beta1/{p0}/volumeAttachments"),
10066            )
10067            .with_query(query)
10068            .idempotent();
10069        self.service.call(call).await
10070    }
10071    /// Returns everything [`list_volume_attachments`](Self::list_volume_attachments) 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.
10072    pub fn all_volume_attachments(
10073        &self,
10074        request: ListVolumeAttachmentsRequest,
10075    ) -> ::origincloud_core::Pages<VolumeAttachment> {
10076        let client = self.clone();
10077        ::origincloud_core::Pages::new(
10078            request,
10079            move |request: ListVolumeAttachmentsRequest| {
10080                let client = client.clone();
10081                async move {
10082                    let page = client.list_volume_attachments(request).await?;
10083                    Ok((page.volume_attachments, page.next_page_token))
10084                }
10085            },
10086            |request: &mut ListVolumeAttachmentsRequest, token: ::std::string::String| {
10087                request.page_token = token;
10088            },
10089        )
10090    }
10091    /// Attaches an `AVAILABLE` volume to a `instance::State::Running` or `instance::State::Stopped` instance in
10092    /// the same project and zone. On a stopped instance the disk appears at
10093    /// the next start, and the operation is done at once. On a running one it
10094    /// is added live, and the operation is done once the guest sees it, or
10095    /// failed if it couldn't be added, which leaves the volume available.
10096    ///
10097    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`VolumeAttachment`] once the change is done.
10098    pub async fn create_volume_attachment(
10099        &self,
10100        mut request: CreateVolumeAttachmentRequest,
10101    ) -> ::core::result::Result<
10102        ::origincloud_core::Operation<VolumeAttachment>,
10103        ::origincloud_core::Error,
10104    > {
10105        if request.request_id.is_empty() {
10106            request.request_id = ::origincloud_core::new_request_id();
10107        }
10108        let p0 = ::origincloud_core::path_value(
10109            "parent",
10110            &request.parent,
10111            "projects/*/zones/*/instances/*",
10112        )?;
10113        let body = ::origincloud_core::json_body(
10114            request
10115                .volume_attachment
10116                .as_ref()
10117                .unwrap_or(&::core::default::Default::default()),
10118        )?;
10119        let query = ::origincloud_core::query(
10120            &request,
10121            &["parent", "volumeAttachment"],
10122        )?;
10123        let call = ::origincloud_core::Request::new(
10124                ::origincloud_core::Method::POST,
10125                format!("/v1beta1/{p0}/volumeAttachments"),
10126            )
10127            .with_body(body)
10128            .with_query(query)
10129            .idempotent();
10130        let operation = self.service.call(call).await?;
10131        Ok(
10132            ::origincloud_core::Operation::new(
10133                self.service.clone(),
10134                operation,
10135                "origincloud.compute.v1beta1.VolumeAttachment",
10136            ),
10137        )
10138    }
10139    /// Detaches a volume, which then is `AVAILABLE` again. The boot volume
10140    /// can't be detached. On a running instance the device is removed live;
10141    /// if the guest doesn't release it, the operation fails and the volume
10142    /// stays attached. The operation is done once the volume is detached.
10143    ///
10144    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
10145    pub async fn delete_volume_attachment(
10146        &self,
10147        mut request: DeleteVolumeAttachmentRequest,
10148    ) -> ::core::result::Result<
10149        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
10150        ::origincloud_core::Error,
10151    > {
10152        if request.request_id.is_empty() {
10153            request.request_id = ::origincloud_core::new_request_id();
10154        }
10155        let p0 = ::origincloud_core::path_value(
10156            "name",
10157            &request.name,
10158            "projects/*/zones/*/instances/*/volumeAttachments/*",
10159        )?;
10160        let query = ::origincloud_core::query(&request, &["name"])?;
10161        let call = ::origincloud_core::Request::new(
10162                ::origincloud_core::Method::DELETE,
10163                format!("/v1beta1/{p0}"),
10164            )
10165            .with_query(query)
10166            .idempotent();
10167        let operation = self.service.call(call).await?;
10168        Ok(
10169            ::origincloud_core::Operation::new(
10170                self.service.clone(),
10171                operation,
10172                "google.protobuf.Empty",
10173            ),
10174        )
10175    }
10176}