Skip to main content

origincloud_compute/generated/
origincloud.compute.v1beta1.rs

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