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