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