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