google_cloud_vmwareengine_v1/
model.rs

1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16
17#![allow(rustdoc::redundant_explicit_links)]
18#![allow(rustdoc::broken_intra_doc_links)]
19#![no_implicit_prelude]
20extern crate async_trait;
21extern crate bytes;
22extern crate gax;
23extern crate gaxi;
24extern crate iam_v1;
25extern crate lazy_static;
26extern crate location;
27extern crate longrunning;
28extern crate lro;
29extern crate reqwest;
30extern crate serde;
31extern crate serde_json;
32extern crate serde_with;
33extern crate std;
34extern crate tracing;
35extern crate wkt;
36
37/// Request message for
38/// [VmwareEngine.ListPrivateClouds][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds]
39///
40/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds]: crate::client::VmwareEngine::list_private_clouds
41#[derive(Clone, Debug, Default, PartialEq)]
42#[non_exhaustive]
43pub struct ListPrivateCloudsRequest {
44    /// Required. The resource name of the private cloud to be queried for
45    /// clusters. Resource names are schemeless URIs that follow the conventions in
46    /// <https://cloud.google.com/apis/design/resource_names>.
47    /// For example:
48    /// `projects/my-project/locations/us-central1-a`
49    pub parent: std::string::String,
50
51    /// The maximum number of private clouds to return in one page.
52    /// The service may return fewer than this value.
53    /// The maximum value is coerced to 1000.
54    /// The default value of this field is 500.
55    pub page_size: i32,
56
57    /// A page token, received from a previous `ListPrivateClouds` call.
58    /// Provide this to retrieve the subsequent page.
59    ///
60    /// When paginating, all other parameters provided to `ListPrivateClouds` must
61    /// match the call that provided the page token.
62    pub page_token: std::string::String,
63
64    /// A filter expression that matches resources returned in the response.
65    /// The expression must specify the field name, a comparison operator, and the
66    /// value that you want to use for filtering. The value must be a string, a
67    /// number, or a boolean. The comparison operator must be `=`, `!=`, `>`, or
68    /// `<`.
69    ///
70    /// For example, if you are filtering a list of private clouds, you can exclude
71    /// the ones named `example-pc` by specifying `name != "example-pc"`.
72    ///
73    /// You can also filter nested fields. For example, you could specify
74    /// `networkConfig.managementCidr = "192.168.0.0/24"` to include private clouds
75    /// only if they have a matching address in their network configuration.
76    ///
77    /// To filter on multiple expressions, provide each separate expression within
78    /// parentheses. For example:
79    ///
80    /// ```norust
81    /// (name = "example-pc")
82    /// (createTime > "2021-04-12T08:15:10.40Z")
83    /// ```
84    ///
85    /// By default, each expression is an `AND` expression. However, you can
86    /// include `AND` and `OR` expressions explicitly. For example:
87    ///
88    /// ```norust
89    /// (name = "private-cloud-1") AND
90    /// (createTime > "2021-04-12T08:15:10.40Z") OR
91    /// (name = "private-cloud-2")
92    /// ```
93    pub filter: std::string::String,
94
95    /// Sorts list results by a certain order. By default, returned results are
96    /// ordered by `name` in ascending order. You can also sort results in
97    /// descending order based on the `name` value using `orderBy="name desc"`.
98    /// Currently, only ordering by `name` is supported.
99    pub order_by: std::string::String,
100
101    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
102}
103
104impl ListPrivateCloudsRequest {
105    pub fn new() -> Self {
106        std::default::Default::default()
107    }
108
109    /// Sets the value of [parent][crate::model::ListPrivateCloudsRequest::parent].
110    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
111        self.parent = v.into();
112        self
113    }
114
115    /// Sets the value of [page_size][crate::model::ListPrivateCloudsRequest::page_size].
116    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
117        self.page_size = v.into();
118        self
119    }
120
121    /// Sets the value of [page_token][crate::model::ListPrivateCloudsRequest::page_token].
122    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
123        self.page_token = v.into();
124        self
125    }
126
127    /// Sets the value of [filter][crate::model::ListPrivateCloudsRequest::filter].
128    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
129        self.filter = v.into();
130        self
131    }
132
133    /// Sets the value of [order_by][crate::model::ListPrivateCloudsRequest::order_by].
134    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
135        self.order_by = v.into();
136        self
137    }
138}
139
140impl wkt::message::Message for ListPrivateCloudsRequest {
141    fn typename() -> &'static str {
142        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateCloudsRequest"
143    }
144}
145
146#[doc(hidden)]
147impl<'de> serde::de::Deserialize<'de> for ListPrivateCloudsRequest {
148    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
149    where
150        D: serde::Deserializer<'de>,
151    {
152        #[allow(non_camel_case_types)]
153        #[doc(hidden)]
154        #[derive(PartialEq, Eq, Hash)]
155        enum __FieldTag {
156            __parent,
157            __page_size,
158            __page_token,
159            __filter,
160            __order_by,
161            Unknown(std::string::String),
162        }
163        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
164            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
165            where
166                D: serde::Deserializer<'de>,
167            {
168                struct Visitor;
169                impl<'de> serde::de::Visitor<'de> for Visitor {
170                    type Value = __FieldTag;
171                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
172                        formatter.write_str("a field name for ListPrivateCloudsRequest")
173                    }
174                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
175                    where
176                        E: serde::de::Error,
177                    {
178                        use std::result::Result::Ok;
179                        use std::string::ToString;
180                        match value {
181                            "parent" => Ok(__FieldTag::__parent),
182                            "pageSize" => Ok(__FieldTag::__page_size),
183                            "page_size" => Ok(__FieldTag::__page_size),
184                            "pageToken" => Ok(__FieldTag::__page_token),
185                            "page_token" => Ok(__FieldTag::__page_token),
186                            "filter" => Ok(__FieldTag::__filter),
187                            "orderBy" => Ok(__FieldTag::__order_by),
188                            "order_by" => Ok(__FieldTag::__order_by),
189                            _ => Ok(__FieldTag::Unknown(value.to_string())),
190                        }
191                    }
192                }
193                deserializer.deserialize_identifier(Visitor)
194            }
195        }
196        struct Visitor;
197        impl<'de> serde::de::Visitor<'de> for Visitor {
198            type Value = ListPrivateCloudsRequest;
199            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
200                formatter.write_str("struct ListPrivateCloudsRequest")
201            }
202            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
203            where
204                A: serde::de::MapAccess<'de>,
205            {
206                #[allow(unused_imports)]
207                use serde::de::Error;
208                use std::option::Option::Some;
209                let mut fields = std::collections::HashSet::new();
210                let mut result = Self::Value::new();
211                while let Some(tag) = map.next_key::<__FieldTag>()? {
212                    #[allow(clippy::match_single_binding)]
213                    match tag {
214                        __FieldTag::__parent => {
215                            if !fields.insert(__FieldTag::__parent) {
216                                return std::result::Result::Err(A::Error::duplicate_field(
217                                    "multiple values for parent",
218                                ));
219                            }
220                            result.parent = map
221                                .next_value::<std::option::Option<std::string::String>>()?
222                                .unwrap_or_default();
223                        }
224                        __FieldTag::__page_size => {
225                            if !fields.insert(__FieldTag::__page_size) {
226                                return std::result::Result::Err(A::Error::duplicate_field(
227                                    "multiple values for page_size",
228                                ));
229                            }
230                            struct __With(std::option::Option<i32>);
231                            impl<'de> serde::de::Deserialize<'de> for __With {
232                                fn deserialize<D>(
233                                    deserializer: D,
234                                ) -> std::result::Result<Self, D::Error>
235                                where
236                                    D: serde::de::Deserializer<'de>,
237                                {
238                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
239                                }
240                            }
241                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
242                        }
243                        __FieldTag::__page_token => {
244                            if !fields.insert(__FieldTag::__page_token) {
245                                return std::result::Result::Err(A::Error::duplicate_field(
246                                    "multiple values for page_token",
247                                ));
248                            }
249                            result.page_token = map
250                                .next_value::<std::option::Option<std::string::String>>()?
251                                .unwrap_or_default();
252                        }
253                        __FieldTag::__filter => {
254                            if !fields.insert(__FieldTag::__filter) {
255                                return std::result::Result::Err(A::Error::duplicate_field(
256                                    "multiple values for filter",
257                                ));
258                            }
259                            result.filter = map
260                                .next_value::<std::option::Option<std::string::String>>()?
261                                .unwrap_or_default();
262                        }
263                        __FieldTag::__order_by => {
264                            if !fields.insert(__FieldTag::__order_by) {
265                                return std::result::Result::Err(A::Error::duplicate_field(
266                                    "multiple values for order_by",
267                                ));
268                            }
269                            result.order_by = map
270                                .next_value::<std::option::Option<std::string::String>>()?
271                                .unwrap_or_default();
272                        }
273                        __FieldTag::Unknown(key) => {
274                            let value = map.next_value::<serde_json::Value>()?;
275                            result._unknown_fields.insert(key, value);
276                        }
277                    }
278                }
279                std::result::Result::Ok(result)
280            }
281        }
282        deserializer.deserialize_any(Visitor)
283    }
284}
285
286#[doc(hidden)]
287impl serde::ser::Serialize for ListPrivateCloudsRequest {
288    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
289    where
290        S: serde::ser::Serializer,
291    {
292        use serde::ser::SerializeMap;
293        #[allow(unused_imports)]
294        use std::option::Option::Some;
295        let mut state = serializer.serialize_map(std::option::Option::None)?;
296        if !self.parent.is_empty() {
297            state.serialize_entry("parent", &self.parent)?;
298        }
299        if !wkt::internal::is_default(&self.page_size) {
300            struct __With<'a>(&'a i32);
301            impl<'a> serde::ser::Serialize for __With<'a> {
302                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
303                where
304                    S: serde::ser::Serializer,
305                {
306                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
307                }
308            }
309            state.serialize_entry("pageSize", &__With(&self.page_size))?;
310        }
311        if !self.page_token.is_empty() {
312            state.serialize_entry("pageToken", &self.page_token)?;
313        }
314        if !self.filter.is_empty() {
315            state.serialize_entry("filter", &self.filter)?;
316        }
317        if !self.order_by.is_empty() {
318            state.serialize_entry("orderBy", &self.order_by)?;
319        }
320        if !self._unknown_fields.is_empty() {
321            for (key, value) in self._unknown_fields.iter() {
322                state.serialize_entry(key, &value)?;
323            }
324        }
325        state.end()
326    }
327}
328
329/// Response message for
330/// [VmwareEngine.ListPrivateClouds][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds]
331///
332/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds]: crate::client::VmwareEngine::list_private_clouds
333#[derive(Clone, Debug, Default, PartialEq)]
334#[non_exhaustive]
335pub struct ListPrivateCloudsResponse {
336    /// A list of private clouds.
337    pub private_clouds: std::vec::Vec<crate::model::PrivateCloud>,
338
339    /// A token, which can be sent as `page_token` to retrieve the next page.
340    /// If this field is omitted, there are no subsequent pages.
341    pub next_page_token: std::string::String,
342
343    /// Locations that could not be reached when making an aggregated query using
344    /// wildcards.
345    pub unreachable: std::vec::Vec<std::string::String>,
346
347    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
348}
349
350impl ListPrivateCloudsResponse {
351    pub fn new() -> Self {
352        std::default::Default::default()
353    }
354
355    /// Sets the value of [private_clouds][crate::model::ListPrivateCloudsResponse::private_clouds].
356    pub fn set_private_clouds<T, V>(mut self, v: T) -> Self
357    where
358        T: std::iter::IntoIterator<Item = V>,
359        V: std::convert::Into<crate::model::PrivateCloud>,
360    {
361        use std::iter::Iterator;
362        self.private_clouds = v.into_iter().map(|i| i.into()).collect();
363        self
364    }
365
366    /// Sets the value of [next_page_token][crate::model::ListPrivateCloudsResponse::next_page_token].
367    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
368        self.next_page_token = v.into();
369        self
370    }
371
372    /// Sets the value of [unreachable][crate::model::ListPrivateCloudsResponse::unreachable].
373    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
374    where
375        T: std::iter::IntoIterator<Item = V>,
376        V: std::convert::Into<std::string::String>,
377    {
378        use std::iter::Iterator;
379        self.unreachable = v.into_iter().map(|i| i.into()).collect();
380        self
381    }
382}
383
384impl wkt::message::Message for ListPrivateCloudsResponse {
385    fn typename() -> &'static str {
386        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateCloudsResponse"
387    }
388}
389
390#[doc(hidden)]
391impl gax::paginator::internal::PageableResponse for ListPrivateCloudsResponse {
392    type PageItem = crate::model::PrivateCloud;
393
394    fn items(self) -> std::vec::Vec<Self::PageItem> {
395        self.private_clouds
396    }
397
398    fn next_page_token(&self) -> std::string::String {
399        use std::clone::Clone;
400        self.next_page_token.clone()
401    }
402}
403
404#[doc(hidden)]
405impl<'de> serde::de::Deserialize<'de> for ListPrivateCloudsResponse {
406    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
407    where
408        D: serde::Deserializer<'de>,
409    {
410        #[allow(non_camel_case_types)]
411        #[doc(hidden)]
412        #[derive(PartialEq, Eq, Hash)]
413        enum __FieldTag {
414            __private_clouds,
415            __next_page_token,
416            __unreachable,
417            Unknown(std::string::String),
418        }
419        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
420            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
421            where
422                D: serde::Deserializer<'de>,
423            {
424                struct Visitor;
425                impl<'de> serde::de::Visitor<'de> for Visitor {
426                    type Value = __FieldTag;
427                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
428                        formatter.write_str("a field name for ListPrivateCloudsResponse")
429                    }
430                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
431                    where
432                        E: serde::de::Error,
433                    {
434                        use std::result::Result::Ok;
435                        use std::string::ToString;
436                        match value {
437                            "privateClouds" => Ok(__FieldTag::__private_clouds),
438                            "private_clouds" => Ok(__FieldTag::__private_clouds),
439                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
440                            "next_page_token" => Ok(__FieldTag::__next_page_token),
441                            "unreachable" => Ok(__FieldTag::__unreachable),
442                            _ => Ok(__FieldTag::Unknown(value.to_string())),
443                        }
444                    }
445                }
446                deserializer.deserialize_identifier(Visitor)
447            }
448        }
449        struct Visitor;
450        impl<'de> serde::de::Visitor<'de> for Visitor {
451            type Value = ListPrivateCloudsResponse;
452            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
453                formatter.write_str("struct ListPrivateCloudsResponse")
454            }
455            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
456            where
457                A: serde::de::MapAccess<'de>,
458            {
459                #[allow(unused_imports)]
460                use serde::de::Error;
461                use std::option::Option::Some;
462                let mut fields = std::collections::HashSet::new();
463                let mut result = Self::Value::new();
464                while let Some(tag) = map.next_key::<__FieldTag>()? {
465                    #[allow(clippy::match_single_binding)]
466                    match tag {
467                        __FieldTag::__private_clouds => {
468                            if !fields.insert(__FieldTag::__private_clouds) {
469                                return std::result::Result::Err(A::Error::duplicate_field(
470                                    "multiple values for private_clouds",
471                                ));
472                            }
473                            result.private_clouds = map.next_value::<std::option::Option<std::vec::Vec<crate::model::PrivateCloud>>>()?.unwrap_or_default();
474                        }
475                        __FieldTag::__next_page_token => {
476                            if !fields.insert(__FieldTag::__next_page_token) {
477                                return std::result::Result::Err(A::Error::duplicate_field(
478                                    "multiple values for next_page_token",
479                                ));
480                            }
481                            result.next_page_token = map
482                                .next_value::<std::option::Option<std::string::String>>()?
483                                .unwrap_or_default();
484                        }
485                        __FieldTag::__unreachable => {
486                            if !fields.insert(__FieldTag::__unreachable) {
487                                return std::result::Result::Err(A::Error::duplicate_field(
488                                    "multiple values for unreachable",
489                                ));
490                            }
491                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
492                        }
493                        __FieldTag::Unknown(key) => {
494                            let value = map.next_value::<serde_json::Value>()?;
495                            result._unknown_fields.insert(key, value);
496                        }
497                    }
498                }
499                std::result::Result::Ok(result)
500            }
501        }
502        deserializer.deserialize_any(Visitor)
503    }
504}
505
506#[doc(hidden)]
507impl serde::ser::Serialize for ListPrivateCloudsResponse {
508    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
509    where
510        S: serde::ser::Serializer,
511    {
512        use serde::ser::SerializeMap;
513        #[allow(unused_imports)]
514        use std::option::Option::Some;
515        let mut state = serializer.serialize_map(std::option::Option::None)?;
516        if !self.private_clouds.is_empty() {
517            state.serialize_entry("privateClouds", &self.private_clouds)?;
518        }
519        if !self.next_page_token.is_empty() {
520            state.serialize_entry("nextPageToken", &self.next_page_token)?;
521        }
522        if !self.unreachable.is_empty() {
523            state.serialize_entry("unreachable", &self.unreachable)?;
524        }
525        if !self._unknown_fields.is_empty() {
526            for (key, value) in self._unknown_fields.iter() {
527                state.serialize_entry(key, &value)?;
528            }
529        }
530        state.end()
531    }
532}
533
534/// Request message for
535/// [VmwareEngine.GetPrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateCloud]
536///
537/// [google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateCloud]: crate::client::VmwareEngine::get_private_cloud
538#[derive(Clone, Debug, Default, PartialEq)]
539#[non_exhaustive]
540pub struct GetPrivateCloudRequest {
541    /// Required. The resource name of the private cloud to retrieve.
542    /// Resource names are schemeless URIs that follow the conventions in
543    /// <https://cloud.google.com/apis/design/resource_names>.
544    /// For example:
545    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
546    pub name: std::string::String,
547
548    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
549}
550
551impl GetPrivateCloudRequest {
552    pub fn new() -> Self {
553        std::default::Default::default()
554    }
555
556    /// Sets the value of [name][crate::model::GetPrivateCloudRequest::name].
557    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
558        self.name = v.into();
559        self
560    }
561}
562
563impl wkt::message::Message for GetPrivateCloudRequest {
564    fn typename() -> &'static str {
565        "type.googleapis.com/google.cloud.vmwareengine.v1.GetPrivateCloudRequest"
566    }
567}
568
569#[doc(hidden)]
570impl<'de> serde::de::Deserialize<'de> for GetPrivateCloudRequest {
571    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
572    where
573        D: serde::Deserializer<'de>,
574    {
575        #[allow(non_camel_case_types)]
576        #[doc(hidden)]
577        #[derive(PartialEq, Eq, Hash)]
578        enum __FieldTag {
579            __name,
580            Unknown(std::string::String),
581        }
582        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
583            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
584            where
585                D: serde::Deserializer<'de>,
586            {
587                struct Visitor;
588                impl<'de> serde::de::Visitor<'de> for Visitor {
589                    type Value = __FieldTag;
590                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
591                        formatter.write_str("a field name for GetPrivateCloudRequest")
592                    }
593                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
594                    where
595                        E: serde::de::Error,
596                    {
597                        use std::result::Result::Ok;
598                        use std::string::ToString;
599                        match value {
600                            "name" => Ok(__FieldTag::__name),
601                            _ => Ok(__FieldTag::Unknown(value.to_string())),
602                        }
603                    }
604                }
605                deserializer.deserialize_identifier(Visitor)
606            }
607        }
608        struct Visitor;
609        impl<'de> serde::de::Visitor<'de> for Visitor {
610            type Value = GetPrivateCloudRequest;
611            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
612                formatter.write_str("struct GetPrivateCloudRequest")
613            }
614            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
615            where
616                A: serde::de::MapAccess<'de>,
617            {
618                #[allow(unused_imports)]
619                use serde::de::Error;
620                use std::option::Option::Some;
621                let mut fields = std::collections::HashSet::new();
622                let mut result = Self::Value::new();
623                while let Some(tag) = map.next_key::<__FieldTag>()? {
624                    #[allow(clippy::match_single_binding)]
625                    match tag {
626                        __FieldTag::__name => {
627                            if !fields.insert(__FieldTag::__name) {
628                                return std::result::Result::Err(A::Error::duplicate_field(
629                                    "multiple values for name",
630                                ));
631                            }
632                            result.name = map
633                                .next_value::<std::option::Option<std::string::String>>()?
634                                .unwrap_or_default();
635                        }
636                        __FieldTag::Unknown(key) => {
637                            let value = map.next_value::<serde_json::Value>()?;
638                            result._unknown_fields.insert(key, value);
639                        }
640                    }
641                }
642                std::result::Result::Ok(result)
643            }
644        }
645        deserializer.deserialize_any(Visitor)
646    }
647}
648
649#[doc(hidden)]
650impl serde::ser::Serialize for GetPrivateCloudRequest {
651    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
652    where
653        S: serde::ser::Serializer,
654    {
655        use serde::ser::SerializeMap;
656        #[allow(unused_imports)]
657        use std::option::Option::Some;
658        let mut state = serializer.serialize_map(std::option::Option::None)?;
659        if !self.name.is_empty() {
660            state.serialize_entry("name", &self.name)?;
661        }
662        if !self._unknown_fields.is_empty() {
663            for (key, value) in self._unknown_fields.iter() {
664                state.serialize_entry(key, &value)?;
665            }
666        }
667        state.end()
668    }
669}
670
671/// Request message for
672/// [VmwareEngine.CreatePrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateCloud]
673///
674/// [google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateCloud]: crate::client::VmwareEngine::create_private_cloud
675#[derive(Clone, Debug, Default, PartialEq)]
676#[non_exhaustive]
677pub struct CreatePrivateCloudRequest {
678    /// Required. The resource name of the location to create the new
679    /// private cloud in. Resource names are schemeless URIs that follow the
680    /// conventions in <https://cloud.google.com/apis/design/resource_names>.
681    /// For example:
682    /// `projects/my-project/locations/us-central1-a`
683    pub parent: std::string::String,
684
685    /// Required. The user-provided identifier of the private cloud to be created.
686    /// This identifier must be unique among each `PrivateCloud` within the parent
687    /// and becomes the final token in the name URI.
688    /// The identifier must meet the following requirements:
689    ///
690    /// * Only contains 1-63 alphanumeric characters and hyphens
691    /// * Begins with an alphabetical character
692    /// * Ends with a non-hyphen character
693    /// * Not formatted as a UUID
694    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
695    ///   (section 3.5)
696    pub private_cloud_id: std::string::String,
697
698    /// Required. The initial description of the new private cloud.
699    pub private_cloud: std::option::Option<crate::model::PrivateCloud>,
700
701    /// Optional. The request ID must be a valid UUID with the exception that zero
702    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
703    pub request_id: std::string::String,
704
705    /// Optional. True if you want the request to be validated and not executed;
706    /// false otherwise.
707    pub validate_only: bool,
708
709    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
710}
711
712impl CreatePrivateCloudRequest {
713    pub fn new() -> Self {
714        std::default::Default::default()
715    }
716
717    /// Sets the value of [parent][crate::model::CreatePrivateCloudRequest::parent].
718    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
719        self.parent = v.into();
720        self
721    }
722
723    /// Sets the value of [private_cloud_id][crate::model::CreatePrivateCloudRequest::private_cloud_id].
724    pub fn set_private_cloud_id<T: std::convert::Into<std::string::String>>(
725        mut self,
726        v: T,
727    ) -> Self {
728        self.private_cloud_id = v.into();
729        self
730    }
731
732    /// Sets the value of [private_cloud][crate::model::CreatePrivateCloudRequest::private_cloud].
733    pub fn set_private_cloud<T>(mut self, v: T) -> Self
734    where
735        T: std::convert::Into<crate::model::PrivateCloud>,
736    {
737        self.private_cloud = std::option::Option::Some(v.into());
738        self
739    }
740
741    /// Sets or clears the value of [private_cloud][crate::model::CreatePrivateCloudRequest::private_cloud].
742    pub fn set_or_clear_private_cloud<T>(mut self, v: std::option::Option<T>) -> Self
743    where
744        T: std::convert::Into<crate::model::PrivateCloud>,
745    {
746        self.private_cloud = v.map(|x| x.into());
747        self
748    }
749
750    /// Sets the value of [request_id][crate::model::CreatePrivateCloudRequest::request_id].
751    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
752        self.request_id = v.into();
753        self
754    }
755
756    /// Sets the value of [validate_only][crate::model::CreatePrivateCloudRequest::validate_only].
757    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
758        self.validate_only = v.into();
759        self
760    }
761}
762
763impl wkt::message::Message for CreatePrivateCloudRequest {
764    fn typename() -> &'static str {
765        "type.googleapis.com/google.cloud.vmwareengine.v1.CreatePrivateCloudRequest"
766    }
767}
768
769#[doc(hidden)]
770impl<'de> serde::de::Deserialize<'de> for CreatePrivateCloudRequest {
771    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
772    where
773        D: serde::Deserializer<'de>,
774    {
775        #[allow(non_camel_case_types)]
776        #[doc(hidden)]
777        #[derive(PartialEq, Eq, Hash)]
778        enum __FieldTag {
779            __parent,
780            __private_cloud_id,
781            __private_cloud,
782            __request_id,
783            __validate_only,
784            Unknown(std::string::String),
785        }
786        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
787            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
788            where
789                D: serde::Deserializer<'de>,
790            {
791                struct Visitor;
792                impl<'de> serde::de::Visitor<'de> for Visitor {
793                    type Value = __FieldTag;
794                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
795                        formatter.write_str("a field name for CreatePrivateCloudRequest")
796                    }
797                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
798                    where
799                        E: serde::de::Error,
800                    {
801                        use std::result::Result::Ok;
802                        use std::string::ToString;
803                        match value {
804                            "parent" => Ok(__FieldTag::__parent),
805                            "privateCloudId" => Ok(__FieldTag::__private_cloud_id),
806                            "private_cloud_id" => Ok(__FieldTag::__private_cloud_id),
807                            "privateCloud" => Ok(__FieldTag::__private_cloud),
808                            "private_cloud" => Ok(__FieldTag::__private_cloud),
809                            "requestId" => Ok(__FieldTag::__request_id),
810                            "request_id" => Ok(__FieldTag::__request_id),
811                            "validateOnly" => Ok(__FieldTag::__validate_only),
812                            "validate_only" => Ok(__FieldTag::__validate_only),
813                            _ => Ok(__FieldTag::Unknown(value.to_string())),
814                        }
815                    }
816                }
817                deserializer.deserialize_identifier(Visitor)
818            }
819        }
820        struct Visitor;
821        impl<'de> serde::de::Visitor<'de> for Visitor {
822            type Value = CreatePrivateCloudRequest;
823            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
824                formatter.write_str("struct CreatePrivateCloudRequest")
825            }
826            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
827            where
828                A: serde::de::MapAccess<'de>,
829            {
830                #[allow(unused_imports)]
831                use serde::de::Error;
832                use std::option::Option::Some;
833                let mut fields = std::collections::HashSet::new();
834                let mut result = Self::Value::new();
835                while let Some(tag) = map.next_key::<__FieldTag>()? {
836                    #[allow(clippy::match_single_binding)]
837                    match tag {
838                        __FieldTag::__parent => {
839                            if !fields.insert(__FieldTag::__parent) {
840                                return std::result::Result::Err(A::Error::duplicate_field(
841                                    "multiple values for parent",
842                                ));
843                            }
844                            result.parent = map
845                                .next_value::<std::option::Option<std::string::String>>()?
846                                .unwrap_or_default();
847                        }
848                        __FieldTag::__private_cloud_id => {
849                            if !fields.insert(__FieldTag::__private_cloud_id) {
850                                return std::result::Result::Err(A::Error::duplicate_field(
851                                    "multiple values for private_cloud_id",
852                                ));
853                            }
854                            result.private_cloud_id = map
855                                .next_value::<std::option::Option<std::string::String>>()?
856                                .unwrap_or_default();
857                        }
858                        __FieldTag::__private_cloud => {
859                            if !fields.insert(__FieldTag::__private_cloud) {
860                                return std::result::Result::Err(A::Error::duplicate_field(
861                                    "multiple values for private_cloud",
862                                ));
863                            }
864                            result.private_cloud = map
865                                .next_value::<std::option::Option<crate::model::PrivateCloud>>()?;
866                        }
867                        __FieldTag::__request_id => {
868                            if !fields.insert(__FieldTag::__request_id) {
869                                return std::result::Result::Err(A::Error::duplicate_field(
870                                    "multiple values for request_id",
871                                ));
872                            }
873                            result.request_id = map
874                                .next_value::<std::option::Option<std::string::String>>()?
875                                .unwrap_or_default();
876                        }
877                        __FieldTag::__validate_only => {
878                            if !fields.insert(__FieldTag::__validate_only) {
879                                return std::result::Result::Err(A::Error::duplicate_field(
880                                    "multiple values for validate_only",
881                                ));
882                            }
883                            result.validate_only = map
884                                .next_value::<std::option::Option<bool>>()?
885                                .unwrap_or_default();
886                        }
887                        __FieldTag::Unknown(key) => {
888                            let value = map.next_value::<serde_json::Value>()?;
889                            result._unknown_fields.insert(key, value);
890                        }
891                    }
892                }
893                std::result::Result::Ok(result)
894            }
895        }
896        deserializer.deserialize_any(Visitor)
897    }
898}
899
900#[doc(hidden)]
901impl serde::ser::Serialize for CreatePrivateCloudRequest {
902    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
903    where
904        S: serde::ser::Serializer,
905    {
906        use serde::ser::SerializeMap;
907        #[allow(unused_imports)]
908        use std::option::Option::Some;
909        let mut state = serializer.serialize_map(std::option::Option::None)?;
910        if !self.parent.is_empty() {
911            state.serialize_entry("parent", &self.parent)?;
912        }
913        if !self.private_cloud_id.is_empty() {
914            state.serialize_entry("privateCloudId", &self.private_cloud_id)?;
915        }
916        if self.private_cloud.is_some() {
917            state.serialize_entry("privateCloud", &self.private_cloud)?;
918        }
919        if !self.request_id.is_empty() {
920            state.serialize_entry("requestId", &self.request_id)?;
921        }
922        if !wkt::internal::is_default(&self.validate_only) {
923            state.serialize_entry("validateOnly", &self.validate_only)?;
924        }
925        if !self._unknown_fields.is_empty() {
926            for (key, value) in self._unknown_fields.iter() {
927                state.serialize_entry(key, &value)?;
928            }
929        }
930        state.end()
931    }
932}
933
934/// Request message for
935/// [VmwareEngine.UpdatePrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateCloud]
936///
937/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateCloud]: crate::client::VmwareEngine::update_private_cloud
938#[derive(Clone, Debug, Default, PartialEq)]
939#[non_exhaustive]
940pub struct UpdatePrivateCloudRequest {
941    /// Required. Private cloud description.
942    pub private_cloud: std::option::Option<crate::model::PrivateCloud>,
943
944    /// Required. Field mask is used to specify the fields to be overwritten in the
945    /// `PrivateCloud` resource by the update. The fields specified in `updateMask`
946    /// are relative to the resource, not the full request. A field will be
947    /// overwritten if it is in the mask. If the user does not provide a mask then
948    /// all fields will be overwritten.
949    pub update_mask: std::option::Option<wkt::FieldMask>,
950
951    /// Optional. The request ID must be a valid UUID with the exception that zero
952    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
953    pub request_id: std::string::String,
954
955    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
956}
957
958impl UpdatePrivateCloudRequest {
959    pub fn new() -> Self {
960        std::default::Default::default()
961    }
962
963    /// Sets the value of [private_cloud][crate::model::UpdatePrivateCloudRequest::private_cloud].
964    pub fn set_private_cloud<T>(mut self, v: T) -> Self
965    where
966        T: std::convert::Into<crate::model::PrivateCloud>,
967    {
968        self.private_cloud = std::option::Option::Some(v.into());
969        self
970    }
971
972    /// Sets or clears the value of [private_cloud][crate::model::UpdatePrivateCloudRequest::private_cloud].
973    pub fn set_or_clear_private_cloud<T>(mut self, v: std::option::Option<T>) -> Self
974    where
975        T: std::convert::Into<crate::model::PrivateCloud>,
976    {
977        self.private_cloud = v.map(|x| x.into());
978        self
979    }
980
981    /// Sets the value of [update_mask][crate::model::UpdatePrivateCloudRequest::update_mask].
982    pub fn set_update_mask<T>(mut self, v: T) -> Self
983    where
984        T: std::convert::Into<wkt::FieldMask>,
985    {
986        self.update_mask = std::option::Option::Some(v.into());
987        self
988    }
989
990    /// Sets or clears the value of [update_mask][crate::model::UpdatePrivateCloudRequest::update_mask].
991    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
992    where
993        T: std::convert::Into<wkt::FieldMask>,
994    {
995        self.update_mask = v.map(|x| x.into());
996        self
997    }
998
999    /// Sets the value of [request_id][crate::model::UpdatePrivateCloudRequest::request_id].
1000    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1001        self.request_id = v.into();
1002        self
1003    }
1004}
1005
1006impl wkt::message::Message for UpdatePrivateCloudRequest {
1007    fn typename() -> &'static str {
1008        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdatePrivateCloudRequest"
1009    }
1010}
1011
1012#[doc(hidden)]
1013impl<'de> serde::de::Deserialize<'de> for UpdatePrivateCloudRequest {
1014    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1015    where
1016        D: serde::Deserializer<'de>,
1017    {
1018        #[allow(non_camel_case_types)]
1019        #[doc(hidden)]
1020        #[derive(PartialEq, Eq, Hash)]
1021        enum __FieldTag {
1022            __private_cloud,
1023            __update_mask,
1024            __request_id,
1025            Unknown(std::string::String),
1026        }
1027        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1028            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1029            where
1030                D: serde::Deserializer<'de>,
1031            {
1032                struct Visitor;
1033                impl<'de> serde::de::Visitor<'de> for Visitor {
1034                    type Value = __FieldTag;
1035                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1036                        formatter.write_str("a field name for UpdatePrivateCloudRequest")
1037                    }
1038                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1039                    where
1040                        E: serde::de::Error,
1041                    {
1042                        use std::result::Result::Ok;
1043                        use std::string::ToString;
1044                        match value {
1045                            "privateCloud" => Ok(__FieldTag::__private_cloud),
1046                            "private_cloud" => Ok(__FieldTag::__private_cloud),
1047                            "updateMask" => Ok(__FieldTag::__update_mask),
1048                            "update_mask" => Ok(__FieldTag::__update_mask),
1049                            "requestId" => Ok(__FieldTag::__request_id),
1050                            "request_id" => Ok(__FieldTag::__request_id),
1051                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1052                        }
1053                    }
1054                }
1055                deserializer.deserialize_identifier(Visitor)
1056            }
1057        }
1058        struct Visitor;
1059        impl<'de> serde::de::Visitor<'de> for Visitor {
1060            type Value = UpdatePrivateCloudRequest;
1061            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1062                formatter.write_str("struct UpdatePrivateCloudRequest")
1063            }
1064            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1065            where
1066                A: serde::de::MapAccess<'de>,
1067            {
1068                #[allow(unused_imports)]
1069                use serde::de::Error;
1070                use std::option::Option::Some;
1071                let mut fields = std::collections::HashSet::new();
1072                let mut result = Self::Value::new();
1073                while let Some(tag) = map.next_key::<__FieldTag>()? {
1074                    #[allow(clippy::match_single_binding)]
1075                    match tag {
1076                        __FieldTag::__private_cloud => {
1077                            if !fields.insert(__FieldTag::__private_cloud) {
1078                                return std::result::Result::Err(A::Error::duplicate_field(
1079                                    "multiple values for private_cloud",
1080                                ));
1081                            }
1082                            result.private_cloud = map
1083                                .next_value::<std::option::Option<crate::model::PrivateCloud>>()?;
1084                        }
1085                        __FieldTag::__update_mask => {
1086                            if !fields.insert(__FieldTag::__update_mask) {
1087                                return std::result::Result::Err(A::Error::duplicate_field(
1088                                    "multiple values for update_mask",
1089                                ));
1090                            }
1091                            result.update_mask =
1092                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
1093                        }
1094                        __FieldTag::__request_id => {
1095                            if !fields.insert(__FieldTag::__request_id) {
1096                                return std::result::Result::Err(A::Error::duplicate_field(
1097                                    "multiple values for request_id",
1098                                ));
1099                            }
1100                            result.request_id = map
1101                                .next_value::<std::option::Option<std::string::String>>()?
1102                                .unwrap_or_default();
1103                        }
1104                        __FieldTag::Unknown(key) => {
1105                            let value = map.next_value::<serde_json::Value>()?;
1106                            result._unknown_fields.insert(key, value);
1107                        }
1108                    }
1109                }
1110                std::result::Result::Ok(result)
1111            }
1112        }
1113        deserializer.deserialize_any(Visitor)
1114    }
1115}
1116
1117#[doc(hidden)]
1118impl serde::ser::Serialize for UpdatePrivateCloudRequest {
1119    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1120    where
1121        S: serde::ser::Serializer,
1122    {
1123        use serde::ser::SerializeMap;
1124        #[allow(unused_imports)]
1125        use std::option::Option::Some;
1126        let mut state = serializer.serialize_map(std::option::Option::None)?;
1127        if self.private_cloud.is_some() {
1128            state.serialize_entry("privateCloud", &self.private_cloud)?;
1129        }
1130        if self.update_mask.is_some() {
1131            state.serialize_entry("updateMask", &self.update_mask)?;
1132        }
1133        if !self.request_id.is_empty() {
1134            state.serialize_entry("requestId", &self.request_id)?;
1135        }
1136        if !self._unknown_fields.is_empty() {
1137            for (key, value) in self._unknown_fields.iter() {
1138                state.serialize_entry(key, &value)?;
1139            }
1140        }
1141        state.end()
1142    }
1143}
1144
1145/// Request message for
1146/// [VmwareEngine.DeletePrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateCloud]
1147///
1148/// [google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateCloud]: crate::client::VmwareEngine::delete_private_cloud
1149#[derive(Clone, Debug, Default, PartialEq)]
1150#[non_exhaustive]
1151pub struct DeletePrivateCloudRequest {
1152    /// Required. The resource name of the private cloud to delete.
1153    /// Resource names are schemeless URIs that follow the conventions in
1154    /// <https://cloud.google.com/apis/design/resource_names>.
1155    /// For example:
1156    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
1157    pub name: std::string::String,
1158
1159    /// Optional. The request ID must be a valid UUID with the exception that zero
1160    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
1161    pub request_id: std::string::String,
1162
1163    /// Optional. If set to true, cascade delete is enabled and all children of
1164    /// this private cloud resource are also deleted. When this flag is set to
1165    /// false, the private cloud will not be deleted if there are any children
1166    /// other than the management cluster. The management cluster is always
1167    /// deleted.
1168    pub force: bool,
1169
1170    /// Optional. Time delay of the deletion specified in hours. The default value
1171    /// is `3`. Specifying a non-zero value for this field changes the value of
1172    /// `PrivateCloud.state` to `DELETED` and sets `expire_time` to the planned
1173    /// deletion time. Deletion can be cancelled before `expire_time` elapses using
1174    /// [VmwareEngine.UndeletePrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud].
1175    /// Specifying a value of `0` for this field instead begins the deletion
1176    /// process and ceases billing immediately. During the final deletion process,
1177    /// the value of `PrivateCloud.state` becomes `PURGING`.
1178    ///
1179    /// [google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud]: crate::client::VmwareEngine::undelete_private_cloud
1180    pub delay_hours: std::option::Option<i32>,
1181
1182    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1183}
1184
1185impl DeletePrivateCloudRequest {
1186    pub fn new() -> Self {
1187        std::default::Default::default()
1188    }
1189
1190    /// Sets the value of [name][crate::model::DeletePrivateCloudRequest::name].
1191    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1192        self.name = v.into();
1193        self
1194    }
1195
1196    /// Sets the value of [request_id][crate::model::DeletePrivateCloudRequest::request_id].
1197    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1198        self.request_id = v.into();
1199        self
1200    }
1201
1202    /// Sets the value of [force][crate::model::DeletePrivateCloudRequest::force].
1203    pub fn set_force<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
1204        self.force = v.into();
1205        self
1206    }
1207
1208    /// Sets the value of [delay_hours][crate::model::DeletePrivateCloudRequest::delay_hours].
1209    pub fn set_delay_hours<T>(mut self, v: T) -> Self
1210    where
1211        T: std::convert::Into<i32>,
1212    {
1213        self.delay_hours = std::option::Option::Some(v.into());
1214        self
1215    }
1216
1217    /// Sets or clears the value of [delay_hours][crate::model::DeletePrivateCloudRequest::delay_hours].
1218    pub fn set_or_clear_delay_hours<T>(mut self, v: std::option::Option<T>) -> Self
1219    where
1220        T: std::convert::Into<i32>,
1221    {
1222        self.delay_hours = v.map(|x| x.into());
1223        self
1224    }
1225}
1226
1227impl wkt::message::Message for DeletePrivateCloudRequest {
1228    fn typename() -> &'static str {
1229        "type.googleapis.com/google.cloud.vmwareengine.v1.DeletePrivateCloudRequest"
1230    }
1231}
1232
1233#[doc(hidden)]
1234impl<'de> serde::de::Deserialize<'de> for DeletePrivateCloudRequest {
1235    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1236    where
1237        D: serde::Deserializer<'de>,
1238    {
1239        #[allow(non_camel_case_types)]
1240        #[doc(hidden)]
1241        #[derive(PartialEq, Eq, Hash)]
1242        enum __FieldTag {
1243            __name,
1244            __request_id,
1245            __force,
1246            __delay_hours,
1247            Unknown(std::string::String),
1248        }
1249        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1250            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1251            where
1252                D: serde::Deserializer<'de>,
1253            {
1254                struct Visitor;
1255                impl<'de> serde::de::Visitor<'de> for Visitor {
1256                    type Value = __FieldTag;
1257                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1258                        formatter.write_str("a field name for DeletePrivateCloudRequest")
1259                    }
1260                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1261                    where
1262                        E: serde::de::Error,
1263                    {
1264                        use std::result::Result::Ok;
1265                        use std::string::ToString;
1266                        match value {
1267                            "name" => Ok(__FieldTag::__name),
1268                            "requestId" => Ok(__FieldTag::__request_id),
1269                            "request_id" => Ok(__FieldTag::__request_id),
1270                            "force" => Ok(__FieldTag::__force),
1271                            "delayHours" => Ok(__FieldTag::__delay_hours),
1272                            "delay_hours" => Ok(__FieldTag::__delay_hours),
1273                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1274                        }
1275                    }
1276                }
1277                deserializer.deserialize_identifier(Visitor)
1278            }
1279        }
1280        struct Visitor;
1281        impl<'de> serde::de::Visitor<'de> for Visitor {
1282            type Value = DeletePrivateCloudRequest;
1283            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1284                formatter.write_str("struct DeletePrivateCloudRequest")
1285            }
1286            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1287            where
1288                A: serde::de::MapAccess<'de>,
1289            {
1290                #[allow(unused_imports)]
1291                use serde::de::Error;
1292                use std::option::Option::Some;
1293                let mut fields = std::collections::HashSet::new();
1294                let mut result = Self::Value::new();
1295                while let Some(tag) = map.next_key::<__FieldTag>()? {
1296                    #[allow(clippy::match_single_binding)]
1297                    match tag {
1298                        __FieldTag::__name => {
1299                            if !fields.insert(__FieldTag::__name) {
1300                                return std::result::Result::Err(A::Error::duplicate_field(
1301                                    "multiple values for name",
1302                                ));
1303                            }
1304                            result.name = map
1305                                .next_value::<std::option::Option<std::string::String>>()?
1306                                .unwrap_or_default();
1307                        }
1308                        __FieldTag::__request_id => {
1309                            if !fields.insert(__FieldTag::__request_id) {
1310                                return std::result::Result::Err(A::Error::duplicate_field(
1311                                    "multiple values for request_id",
1312                                ));
1313                            }
1314                            result.request_id = map
1315                                .next_value::<std::option::Option<std::string::String>>()?
1316                                .unwrap_or_default();
1317                        }
1318                        __FieldTag::__force => {
1319                            if !fields.insert(__FieldTag::__force) {
1320                                return std::result::Result::Err(A::Error::duplicate_field(
1321                                    "multiple values for force",
1322                                ));
1323                            }
1324                            result.force = map
1325                                .next_value::<std::option::Option<bool>>()?
1326                                .unwrap_or_default();
1327                        }
1328                        __FieldTag::__delay_hours => {
1329                            if !fields.insert(__FieldTag::__delay_hours) {
1330                                return std::result::Result::Err(A::Error::duplicate_field(
1331                                    "multiple values for delay_hours",
1332                                ));
1333                            }
1334                            struct __With(std::option::Option<i32>);
1335                            impl<'de> serde::de::Deserialize<'de> for __With {
1336                                fn deserialize<D>(
1337                                    deserializer: D,
1338                                ) -> std::result::Result<Self, D::Error>
1339                                where
1340                                    D: serde::de::Deserializer<'de>,
1341                                {
1342                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
1343                                }
1344                            }
1345                            result.delay_hours = map.next_value::<__With>()?.0;
1346                        }
1347                        __FieldTag::Unknown(key) => {
1348                            let value = map.next_value::<serde_json::Value>()?;
1349                            result._unknown_fields.insert(key, value);
1350                        }
1351                    }
1352                }
1353                std::result::Result::Ok(result)
1354            }
1355        }
1356        deserializer.deserialize_any(Visitor)
1357    }
1358}
1359
1360#[doc(hidden)]
1361impl serde::ser::Serialize for DeletePrivateCloudRequest {
1362    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1363    where
1364        S: serde::ser::Serializer,
1365    {
1366        use serde::ser::SerializeMap;
1367        #[allow(unused_imports)]
1368        use std::option::Option::Some;
1369        let mut state = serializer.serialize_map(std::option::Option::None)?;
1370        if !self.name.is_empty() {
1371            state.serialize_entry("name", &self.name)?;
1372        }
1373        if !self.request_id.is_empty() {
1374            state.serialize_entry("requestId", &self.request_id)?;
1375        }
1376        if !wkt::internal::is_default(&self.force) {
1377            state.serialize_entry("force", &self.force)?;
1378        }
1379        if self.delay_hours.is_some() {
1380            struct __With<'a>(&'a std::option::Option<i32>);
1381            impl<'a> serde::ser::Serialize for __With<'a> {
1382                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1383                where
1384                    S: serde::ser::Serializer,
1385                {
1386                    serde_with::As::<std::option::Option<wkt::internal::I32>>::serialize(
1387                        self.0, serializer,
1388                    )
1389                }
1390            }
1391            state.serialize_entry("delayHours", &__With(&self.delay_hours))?;
1392        }
1393        if !self._unknown_fields.is_empty() {
1394            for (key, value) in self._unknown_fields.iter() {
1395                state.serialize_entry(key, &value)?;
1396            }
1397        }
1398        state.end()
1399    }
1400}
1401
1402/// Request message for
1403/// [VmwareEngine.UndeletePrivateCloud][google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud]
1404///
1405/// [google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud]: crate::client::VmwareEngine::undelete_private_cloud
1406#[derive(Clone, Debug, Default, PartialEq)]
1407#[non_exhaustive]
1408pub struct UndeletePrivateCloudRequest {
1409    /// Required. The resource name of the private cloud scheduled for deletion.
1410    /// Resource names are schemeless URIs that follow the conventions in
1411    /// <https://cloud.google.com/apis/design/resource_names>.
1412    /// For example:
1413    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
1414    pub name: std::string::String,
1415
1416    /// Optional. The request ID must be a valid UUID with the exception that zero
1417    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
1418    pub request_id: std::string::String,
1419
1420    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1421}
1422
1423impl UndeletePrivateCloudRequest {
1424    pub fn new() -> Self {
1425        std::default::Default::default()
1426    }
1427
1428    /// Sets the value of [name][crate::model::UndeletePrivateCloudRequest::name].
1429    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1430        self.name = v.into();
1431        self
1432    }
1433
1434    /// Sets the value of [request_id][crate::model::UndeletePrivateCloudRequest::request_id].
1435    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1436        self.request_id = v.into();
1437        self
1438    }
1439}
1440
1441impl wkt::message::Message for UndeletePrivateCloudRequest {
1442    fn typename() -> &'static str {
1443        "type.googleapis.com/google.cloud.vmwareengine.v1.UndeletePrivateCloudRequest"
1444    }
1445}
1446
1447#[doc(hidden)]
1448impl<'de> serde::de::Deserialize<'de> for UndeletePrivateCloudRequest {
1449    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1450    where
1451        D: serde::Deserializer<'de>,
1452    {
1453        #[allow(non_camel_case_types)]
1454        #[doc(hidden)]
1455        #[derive(PartialEq, Eq, Hash)]
1456        enum __FieldTag {
1457            __name,
1458            __request_id,
1459            Unknown(std::string::String),
1460        }
1461        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1462            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1463            where
1464                D: serde::Deserializer<'de>,
1465            {
1466                struct Visitor;
1467                impl<'de> serde::de::Visitor<'de> for Visitor {
1468                    type Value = __FieldTag;
1469                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1470                        formatter.write_str("a field name for UndeletePrivateCloudRequest")
1471                    }
1472                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1473                    where
1474                        E: serde::de::Error,
1475                    {
1476                        use std::result::Result::Ok;
1477                        use std::string::ToString;
1478                        match value {
1479                            "name" => Ok(__FieldTag::__name),
1480                            "requestId" => Ok(__FieldTag::__request_id),
1481                            "request_id" => Ok(__FieldTag::__request_id),
1482                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1483                        }
1484                    }
1485                }
1486                deserializer.deserialize_identifier(Visitor)
1487            }
1488        }
1489        struct Visitor;
1490        impl<'de> serde::de::Visitor<'de> for Visitor {
1491            type Value = UndeletePrivateCloudRequest;
1492            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1493                formatter.write_str("struct UndeletePrivateCloudRequest")
1494            }
1495            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1496            where
1497                A: serde::de::MapAccess<'de>,
1498            {
1499                #[allow(unused_imports)]
1500                use serde::de::Error;
1501                use std::option::Option::Some;
1502                let mut fields = std::collections::HashSet::new();
1503                let mut result = Self::Value::new();
1504                while let Some(tag) = map.next_key::<__FieldTag>()? {
1505                    #[allow(clippy::match_single_binding)]
1506                    match tag {
1507                        __FieldTag::__name => {
1508                            if !fields.insert(__FieldTag::__name) {
1509                                return std::result::Result::Err(A::Error::duplicate_field(
1510                                    "multiple values for name",
1511                                ));
1512                            }
1513                            result.name = map
1514                                .next_value::<std::option::Option<std::string::String>>()?
1515                                .unwrap_or_default();
1516                        }
1517                        __FieldTag::__request_id => {
1518                            if !fields.insert(__FieldTag::__request_id) {
1519                                return std::result::Result::Err(A::Error::duplicate_field(
1520                                    "multiple values for request_id",
1521                                ));
1522                            }
1523                            result.request_id = map
1524                                .next_value::<std::option::Option<std::string::String>>()?
1525                                .unwrap_or_default();
1526                        }
1527                        __FieldTag::Unknown(key) => {
1528                            let value = map.next_value::<serde_json::Value>()?;
1529                            result._unknown_fields.insert(key, value);
1530                        }
1531                    }
1532                }
1533                std::result::Result::Ok(result)
1534            }
1535        }
1536        deserializer.deserialize_any(Visitor)
1537    }
1538}
1539
1540#[doc(hidden)]
1541impl serde::ser::Serialize for UndeletePrivateCloudRequest {
1542    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1543    where
1544        S: serde::ser::Serializer,
1545    {
1546        use serde::ser::SerializeMap;
1547        #[allow(unused_imports)]
1548        use std::option::Option::Some;
1549        let mut state = serializer.serialize_map(std::option::Option::None)?;
1550        if !self.name.is_empty() {
1551            state.serialize_entry("name", &self.name)?;
1552        }
1553        if !self.request_id.is_empty() {
1554            state.serialize_entry("requestId", &self.request_id)?;
1555        }
1556        if !self._unknown_fields.is_empty() {
1557            for (key, value) in self._unknown_fields.iter() {
1558                state.serialize_entry(key, &value)?;
1559            }
1560        }
1561        state.end()
1562    }
1563}
1564
1565/// Request message for
1566/// [VmwareEngine.ListClusters][google.cloud.vmwareengine.v1.VmwareEngine.ListClusters]
1567///
1568/// [google.cloud.vmwareengine.v1.VmwareEngine.ListClusters]: crate::client::VmwareEngine::list_clusters
1569#[derive(Clone, Debug, Default, PartialEq)]
1570#[non_exhaustive]
1571pub struct ListClustersRequest {
1572    /// Required. The resource name of the private cloud to query for clusters.
1573    /// Resource names are schemeless URIs that follow the conventions in
1574    /// <https://cloud.google.com/apis/design/resource_names>.
1575    /// For example:
1576    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
1577    pub parent: std::string::String,
1578
1579    /// The maximum number of clusters to return in one page.
1580    /// The service may return fewer than this value.
1581    /// The maximum value is coerced to 1000.
1582    /// The default value of this field is 500.
1583    pub page_size: i32,
1584
1585    /// A page token, received from a previous `ListClusters` call.
1586    /// Provide this to retrieve the subsequent page.
1587    ///
1588    /// When paginating, all other parameters provided to `ListClusters`
1589    /// must match the call that provided the page token.
1590    pub page_token: std::string::String,
1591
1592    /// To filter on multiple expressions, provide each separate expression within
1593    /// parentheses. For example:
1594    ///
1595    /// ```norust
1596    /// (name = "example-cluster")
1597    /// (nodeCount = "3")
1598    /// ```
1599    ///
1600    /// By default, each expression is an `AND` expression. However, you can
1601    /// include `AND` and `OR` expressions explicitly. For example:
1602    ///
1603    /// ```norust
1604    /// (name = "example-cluster-1") AND
1605    /// (createTime > "2021-04-12T08:15:10.40Z") OR
1606    /// (name = "example-cluster-2")
1607    /// ```
1608    pub filter: std::string::String,
1609
1610    /// Sorts list results by a certain order. By default, returned results are
1611    /// ordered by `name` in ascending order. You can also sort results in
1612    /// descending order based on the `name` value using `orderBy="name desc"`.
1613    /// Currently, only ordering by `name` is supported.
1614    pub order_by: std::string::String,
1615
1616    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1617}
1618
1619impl ListClustersRequest {
1620    pub fn new() -> Self {
1621        std::default::Default::default()
1622    }
1623
1624    /// Sets the value of [parent][crate::model::ListClustersRequest::parent].
1625    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1626        self.parent = v.into();
1627        self
1628    }
1629
1630    /// Sets the value of [page_size][crate::model::ListClustersRequest::page_size].
1631    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
1632        self.page_size = v.into();
1633        self
1634    }
1635
1636    /// Sets the value of [page_token][crate::model::ListClustersRequest::page_token].
1637    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1638        self.page_token = v.into();
1639        self
1640    }
1641
1642    /// Sets the value of [filter][crate::model::ListClustersRequest::filter].
1643    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1644        self.filter = v.into();
1645        self
1646    }
1647
1648    /// Sets the value of [order_by][crate::model::ListClustersRequest::order_by].
1649    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1650        self.order_by = v.into();
1651        self
1652    }
1653}
1654
1655impl wkt::message::Message for ListClustersRequest {
1656    fn typename() -> &'static str {
1657        "type.googleapis.com/google.cloud.vmwareengine.v1.ListClustersRequest"
1658    }
1659}
1660
1661#[doc(hidden)]
1662impl<'de> serde::de::Deserialize<'de> for ListClustersRequest {
1663    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1664    where
1665        D: serde::Deserializer<'de>,
1666    {
1667        #[allow(non_camel_case_types)]
1668        #[doc(hidden)]
1669        #[derive(PartialEq, Eq, Hash)]
1670        enum __FieldTag {
1671            __parent,
1672            __page_size,
1673            __page_token,
1674            __filter,
1675            __order_by,
1676            Unknown(std::string::String),
1677        }
1678        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1679            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1680            where
1681                D: serde::Deserializer<'de>,
1682            {
1683                struct Visitor;
1684                impl<'de> serde::de::Visitor<'de> for Visitor {
1685                    type Value = __FieldTag;
1686                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1687                        formatter.write_str("a field name for ListClustersRequest")
1688                    }
1689                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1690                    where
1691                        E: serde::de::Error,
1692                    {
1693                        use std::result::Result::Ok;
1694                        use std::string::ToString;
1695                        match value {
1696                            "parent" => Ok(__FieldTag::__parent),
1697                            "pageSize" => Ok(__FieldTag::__page_size),
1698                            "page_size" => Ok(__FieldTag::__page_size),
1699                            "pageToken" => Ok(__FieldTag::__page_token),
1700                            "page_token" => Ok(__FieldTag::__page_token),
1701                            "filter" => Ok(__FieldTag::__filter),
1702                            "orderBy" => Ok(__FieldTag::__order_by),
1703                            "order_by" => Ok(__FieldTag::__order_by),
1704                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1705                        }
1706                    }
1707                }
1708                deserializer.deserialize_identifier(Visitor)
1709            }
1710        }
1711        struct Visitor;
1712        impl<'de> serde::de::Visitor<'de> for Visitor {
1713            type Value = ListClustersRequest;
1714            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1715                formatter.write_str("struct ListClustersRequest")
1716            }
1717            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1718            where
1719                A: serde::de::MapAccess<'de>,
1720            {
1721                #[allow(unused_imports)]
1722                use serde::de::Error;
1723                use std::option::Option::Some;
1724                let mut fields = std::collections::HashSet::new();
1725                let mut result = Self::Value::new();
1726                while let Some(tag) = map.next_key::<__FieldTag>()? {
1727                    #[allow(clippy::match_single_binding)]
1728                    match tag {
1729                        __FieldTag::__parent => {
1730                            if !fields.insert(__FieldTag::__parent) {
1731                                return std::result::Result::Err(A::Error::duplicate_field(
1732                                    "multiple values for parent",
1733                                ));
1734                            }
1735                            result.parent = map
1736                                .next_value::<std::option::Option<std::string::String>>()?
1737                                .unwrap_or_default();
1738                        }
1739                        __FieldTag::__page_size => {
1740                            if !fields.insert(__FieldTag::__page_size) {
1741                                return std::result::Result::Err(A::Error::duplicate_field(
1742                                    "multiple values for page_size",
1743                                ));
1744                            }
1745                            struct __With(std::option::Option<i32>);
1746                            impl<'de> serde::de::Deserialize<'de> for __With {
1747                                fn deserialize<D>(
1748                                    deserializer: D,
1749                                ) -> std::result::Result<Self, D::Error>
1750                                where
1751                                    D: serde::de::Deserializer<'de>,
1752                                {
1753                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
1754                                }
1755                            }
1756                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
1757                        }
1758                        __FieldTag::__page_token => {
1759                            if !fields.insert(__FieldTag::__page_token) {
1760                                return std::result::Result::Err(A::Error::duplicate_field(
1761                                    "multiple values for page_token",
1762                                ));
1763                            }
1764                            result.page_token = map
1765                                .next_value::<std::option::Option<std::string::String>>()?
1766                                .unwrap_or_default();
1767                        }
1768                        __FieldTag::__filter => {
1769                            if !fields.insert(__FieldTag::__filter) {
1770                                return std::result::Result::Err(A::Error::duplicate_field(
1771                                    "multiple values for filter",
1772                                ));
1773                            }
1774                            result.filter = map
1775                                .next_value::<std::option::Option<std::string::String>>()?
1776                                .unwrap_or_default();
1777                        }
1778                        __FieldTag::__order_by => {
1779                            if !fields.insert(__FieldTag::__order_by) {
1780                                return std::result::Result::Err(A::Error::duplicate_field(
1781                                    "multiple values for order_by",
1782                                ));
1783                            }
1784                            result.order_by = map
1785                                .next_value::<std::option::Option<std::string::String>>()?
1786                                .unwrap_or_default();
1787                        }
1788                        __FieldTag::Unknown(key) => {
1789                            let value = map.next_value::<serde_json::Value>()?;
1790                            result._unknown_fields.insert(key, value);
1791                        }
1792                    }
1793                }
1794                std::result::Result::Ok(result)
1795            }
1796        }
1797        deserializer.deserialize_any(Visitor)
1798    }
1799}
1800
1801#[doc(hidden)]
1802impl serde::ser::Serialize for ListClustersRequest {
1803    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1804    where
1805        S: serde::ser::Serializer,
1806    {
1807        use serde::ser::SerializeMap;
1808        #[allow(unused_imports)]
1809        use std::option::Option::Some;
1810        let mut state = serializer.serialize_map(std::option::Option::None)?;
1811        if !self.parent.is_empty() {
1812            state.serialize_entry("parent", &self.parent)?;
1813        }
1814        if !wkt::internal::is_default(&self.page_size) {
1815            struct __With<'a>(&'a i32);
1816            impl<'a> serde::ser::Serialize for __With<'a> {
1817                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1818                where
1819                    S: serde::ser::Serializer,
1820                {
1821                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
1822                }
1823            }
1824            state.serialize_entry("pageSize", &__With(&self.page_size))?;
1825        }
1826        if !self.page_token.is_empty() {
1827            state.serialize_entry("pageToken", &self.page_token)?;
1828        }
1829        if !self.filter.is_empty() {
1830            state.serialize_entry("filter", &self.filter)?;
1831        }
1832        if !self.order_by.is_empty() {
1833            state.serialize_entry("orderBy", &self.order_by)?;
1834        }
1835        if !self._unknown_fields.is_empty() {
1836            for (key, value) in self._unknown_fields.iter() {
1837                state.serialize_entry(key, &value)?;
1838            }
1839        }
1840        state.end()
1841    }
1842}
1843
1844/// Response message for
1845/// [VmwareEngine.ListClusters][google.cloud.vmwareengine.v1.VmwareEngine.ListClusters]
1846///
1847/// [google.cloud.vmwareengine.v1.VmwareEngine.ListClusters]: crate::client::VmwareEngine::list_clusters
1848#[derive(Clone, Debug, Default, PartialEq)]
1849#[non_exhaustive]
1850pub struct ListClustersResponse {
1851    /// A list of private cloud clusters.
1852    pub clusters: std::vec::Vec<crate::model::Cluster>,
1853
1854    /// A token, which can be sent as `page_token` to retrieve the next page.
1855    /// If this field is omitted, there are no subsequent pages.
1856    pub next_page_token: std::string::String,
1857
1858    /// Locations that could not be reached when making an aggregated query using
1859    /// wildcards.
1860    pub unreachable: std::vec::Vec<std::string::String>,
1861
1862    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1863}
1864
1865impl ListClustersResponse {
1866    pub fn new() -> Self {
1867        std::default::Default::default()
1868    }
1869
1870    /// Sets the value of [clusters][crate::model::ListClustersResponse::clusters].
1871    pub fn set_clusters<T, V>(mut self, v: T) -> Self
1872    where
1873        T: std::iter::IntoIterator<Item = V>,
1874        V: std::convert::Into<crate::model::Cluster>,
1875    {
1876        use std::iter::Iterator;
1877        self.clusters = v.into_iter().map(|i| i.into()).collect();
1878        self
1879    }
1880
1881    /// Sets the value of [next_page_token][crate::model::ListClustersResponse::next_page_token].
1882    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1883        self.next_page_token = v.into();
1884        self
1885    }
1886
1887    /// Sets the value of [unreachable][crate::model::ListClustersResponse::unreachable].
1888    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
1889    where
1890        T: std::iter::IntoIterator<Item = V>,
1891        V: std::convert::Into<std::string::String>,
1892    {
1893        use std::iter::Iterator;
1894        self.unreachable = v.into_iter().map(|i| i.into()).collect();
1895        self
1896    }
1897}
1898
1899impl wkt::message::Message for ListClustersResponse {
1900    fn typename() -> &'static str {
1901        "type.googleapis.com/google.cloud.vmwareengine.v1.ListClustersResponse"
1902    }
1903}
1904
1905#[doc(hidden)]
1906impl gax::paginator::internal::PageableResponse for ListClustersResponse {
1907    type PageItem = crate::model::Cluster;
1908
1909    fn items(self) -> std::vec::Vec<Self::PageItem> {
1910        self.clusters
1911    }
1912
1913    fn next_page_token(&self) -> std::string::String {
1914        use std::clone::Clone;
1915        self.next_page_token.clone()
1916    }
1917}
1918
1919#[doc(hidden)]
1920impl<'de> serde::de::Deserialize<'de> for ListClustersResponse {
1921    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1922    where
1923        D: serde::Deserializer<'de>,
1924    {
1925        #[allow(non_camel_case_types)]
1926        #[doc(hidden)]
1927        #[derive(PartialEq, Eq, Hash)]
1928        enum __FieldTag {
1929            __clusters,
1930            __next_page_token,
1931            __unreachable,
1932            Unknown(std::string::String),
1933        }
1934        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1935            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1936            where
1937                D: serde::Deserializer<'de>,
1938            {
1939                struct Visitor;
1940                impl<'de> serde::de::Visitor<'de> for Visitor {
1941                    type Value = __FieldTag;
1942                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1943                        formatter.write_str("a field name for ListClustersResponse")
1944                    }
1945                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1946                    where
1947                        E: serde::de::Error,
1948                    {
1949                        use std::result::Result::Ok;
1950                        use std::string::ToString;
1951                        match value {
1952                            "clusters" => Ok(__FieldTag::__clusters),
1953                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
1954                            "next_page_token" => Ok(__FieldTag::__next_page_token),
1955                            "unreachable" => Ok(__FieldTag::__unreachable),
1956                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1957                        }
1958                    }
1959                }
1960                deserializer.deserialize_identifier(Visitor)
1961            }
1962        }
1963        struct Visitor;
1964        impl<'de> serde::de::Visitor<'de> for Visitor {
1965            type Value = ListClustersResponse;
1966            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1967                formatter.write_str("struct ListClustersResponse")
1968            }
1969            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1970            where
1971                A: serde::de::MapAccess<'de>,
1972            {
1973                #[allow(unused_imports)]
1974                use serde::de::Error;
1975                use std::option::Option::Some;
1976                let mut fields = std::collections::HashSet::new();
1977                let mut result = Self::Value::new();
1978                while let Some(tag) = map.next_key::<__FieldTag>()? {
1979                    #[allow(clippy::match_single_binding)]
1980                    match tag {
1981                        __FieldTag::__clusters => {
1982                            if !fields.insert(__FieldTag::__clusters) {
1983                                return std::result::Result::Err(A::Error::duplicate_field(
1984                                    "multiple values for clusters",
1985                                ));
1986                            }
1987                            result.clusters = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Cluster>>>()?.unwrap_or_default();
1988                        }
1989                        __FieldTag::__next_page_token => {
1990                            if !fields.insert(__FieldTag::__next_page_token) {
1991                                return std::result::Result::Err(A::Error::duplicate_field(
1992                                    "multiple values for next_page_token",
1993                                ));
1994                            }
1995                            result.next_page_token = map
1996                                .next_value::<std::option::Option<std::string::String>>()?
1997                                .unwrap_or_default();
1998                        }
1999                        __FieldTag::__unreachable => {
2000                            if !fields.insert(__FieldTag::__unreachable) {
2001                                return std::result::Result::Err(A::Error::duplicate_field(
2002                                    "multiple values for unreachable",
2003                                ));
2004                            }
2005                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
2006                        }
2007                        __FieldTag::Unknown(key) => {
2008                            let value = map.next_value::<serde_json::Value>()?;
2009                            result._unknown_fields.insert(key, value);
2010                        }
2011                    }
2012                }
2013                std::result::Result::Ok(result)
2014            }
2015        }
2016        deserializer.deserialize_any(Visitor)
2017    }
2018}
2019
2020#[doc(hidden)]
2021impl serde::ser::Serialize for ListClustersResponse {
2022    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2023    where
2024        S: serde::ser::Serializer,
2025    {
2026        use serde::ser::SerializeMap;
2027        #[allow(unused_imports)]
2028        use std::option::Option::Some;
2029        let mut state = serializer.serialize_map(std::option::Option::None)?;
2030        if !self.clusters.is_empty() {
2031            state.serialize_entry("clusters", &self.clusters)?;
2032        }
2033        if !self.next_page_token.is_empty() {
2034            state.serialize_entry("nextPageToken", &self.next_page_token)?;
2035        }
2036        if !self.unreachable.is_empty() {
2037            state.serialize_entry("unreachable", &self.unreachable)?;
2038        }
2039        if !self._unknown_fields.is_empty() {
2040            for (key, value) in self._unknown_fields.iter() {
2041                state.serialize_entry(key, &value)?;
2042            }
2043        }
2044        state.end()
2045    }
2046}
2047
2048/// Request message for
2049/// [VmwareEngine.GetCluster][google.cloud.vmwareengine.v1.VmwareEngine.GetCluster]
2050///
2051/// [google.cloud.vmwareengine.v1.VmwareEngine.GetCluster]: crate::client::VmwareEngine::get_cluster
2052#[derive(Clone, Debug, Default, PartialEq)]
2053#[non_exhaustive]
2054pub struct GetClusterRequest {
2055    /// Required. The cluster resource name to retrieve.
2056    /// Resource names are schemeless URIs that follow the conventions in
2057    /// <https://cloud.google.com/apis/design/resource_names>.
2058    /// For example:
2059    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
2060    pub name: std::string::String,
2061
2062    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2063}
2064
2065impl GetClusterRequest {
2066    pub fn new() -> Self {
2067        std::default::Default::default()
2068    }
2069
2070    /// Sets the value of [name][crate::model::GetClusterRequest::name].
2071    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2072        self.name = v.into();
2073        self
2074    }
2075}
2076
2077impl wkt::message::Message for GetClusterRequest {
2078    fn typename() -> &'static str {
2079        "type.googleapis.com/google.cloud.vmwareengine.v1.GetClusterRequest"
2080    }
2081}
2082
2083#[doc(hidden)]
2084impl<'de> serde::de::Deserialize<'de> for GetClusterRequest {
2085    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2086    where
2087        D: serde::Deserializer<'de>,
2088    {
2089        #[allow(non_camel_case_types)]
2090        #[doc(hidden)]
2091        #[derive(PartialEq, Eq, Hash)]
2092        enum __FieldTag {
2093            __name,
2094            Unknown(std::string::String),
2095        }
2096        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2097            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2098            where
2099                D: serde::Deserializer<'de>,
2100            {
2101                struct Visitor;
2102                impl<'de> serde::de::Visitor<'de> for Visitor {
2103                    type Value = __FieldTag;
2104                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2105                        formatter.write_str("a field name for GetClusterRequest")
2106                    }
2107                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2108                    where
2109                        E: serde::de::Error,
2110                    {
2111                        use std::result::Result::Ok;
2112                        use std::string::ToString;
2113                        match value {
2114                            "name" => Ok(__FieldTag::__name),
2115                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2116                        }
2117                    }
2118                }
2119                deserializer.deserialize_identifier(Visitor)
2120            }
2121        }
2122        struct Visitor;
2123        impl<'de> serde::de::Visitor<'de> for Visitor {
2124            type Value = GetClusterRequest;
2125            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2126                formatter.write_str("struct GetClusterRequest")
2127            }
2128            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2129            where
2130                A: serde::de::MapAccess<'de>,
2131            {
2132                #[allow(unused_imports)]
2133                use serde::de::Error;
2134                use std::option::Option::Some;
2135                let mut fields = std::collections::HashSet::new();
2136                let mut result = Self::Value::new();
2137                while let Some(tag) = map.next_key::<__FieldTag>()? {
2138                    #[allow(clippy::match_single_binding)]
2139                    match tag {
2140                        __FieldTag::__name => {
2141                            if !fields.insert(__FieldTag::__name) {
2142                                return std::result::Result::Err(A::Error::duplicate_field(
2143                                    "multiple values for name",
2144                                ));
2145                            }
2146                            result.name = map
2147                                .next_value::<std::option::Option<std::string::String>>()?
2148                                .unwrap_or_default();
2149                        }
2150                        __FieldTag::Unknown(key) => {
2151                            let value = map.next_value::<serde_json::Value>()?;
2152                            result._unknown_fields.insert(key, value);
2153                        }
2154                    }
2155                }
2156                std::result::Result::Ok(result)
2157            }
2158        }
2159        deserializer.deserialize_any(Visitor)
2160    }
2161}
2162
2163#[doc(hidden)]
2164impl serde::ser::Serialize for GetClusterRequest {
2165    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2166    where
2167        S: serde::ser::Serializer,
2168    {
2169        use serde::ser::SerializeMap;
2170        #[allow(unused_imports)]
2171        use std::option::Option::Some;
2172        let mut state = serializer.serialize_map(std::option::Option::None)?;
2173        if !self.name.is_empty() {
2174            state.serialize_entry("name", &self.name)?;
2175        }
2176        if !self._unknown_fields.is_empty() {
2177            for (key, value) in self._unknown_fields.iter() {
2178                state.serialize_entry(key, &value)?;
2179            }
2180        }
2181        state.end()
2182    }
2183}
2184
2185/// Request message for
2186/// [VmwareEngine.CreateCluster][google.cloud.vmwareengine.v1.VmwareEngine.CreateCluster]
2187///
2188/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateCluster]: crate::client::VmwareEngine::create_cluster
2189#[derive(Clone, Debug, Default, PartialEq)]
2190#[non_exhaustive]
2191pub struct CreateClusterRequest {
2192    /// Required. The resource name of the private cloud to create a new cluster
2193    /// in. Resource names are schemeless URIs that follow the conventions in
2194    /// <https://cloud.google.com/apis/design/resource_names>.
2195    /// For example:
2196    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2197    pub parent: std::string::String,
2198
2199    /// Required. The user-provided identifier of the new `Cluster`.
2200    /// This identifier must be unique among clusters within the parent and becomes
2201    /// the final token in the name URI.
2202    /// The identifier must meet the following requirements:
2203    ///
2204    /// * Only contains 1-63 alphanumeric characters and hyphens
2205    /// * Begins with an alphabetical character
2206    /// * Ends with a non-hyphen character
2207    /// * Not formatted as a UUID
2208    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
2209    ///   (section 3.5)
2210    pub cluster_id: std::string::String,
2211
2212    /// Required. The initial description of the new cluster.
2213    pub cluster: std::option::Option<crate::model::Cluster>,
2214
2215    /// Optional. The request ID must be a valid UUID with the exception that zero
2216    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2217    pub request_id: std::string::String,
2218
2219    /// Optional. True if you want the request to be validated and not executed;
2220    /// false otherwise.
2221    pub validate_only: bool,
2222
2223    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2224}
2225
2226impl CreateClusterRequest {
2227    pub fn new() -> Self {
2228        std::default::Default::default()
2229    }
2230
2231    /// Sets the value of [parent][crate::model::CreateClusterRequest::parent].
2232    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2233        self.parent = v.into();
2234        self
2235    }
2236
2237    /// Sets the value of [cluster_id][crate::model::CreateClusterRequest::cluster_id].
2238    pub fn set_cluster_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2239        self.cluster_id = v.into();
2240        self
2241    }
2242
2243    /// Sets the value of [cluster][crate::model::CreateClusterRequest::cluster].
2244    pub fn set_cluster<T>(mut self, v: T) -> Self
2245    where
2246        T: std::convert::Into<crate::model::Cluster>,
2247    {
2248        self.cluster = std::option::Option::Some(v.into());
2249        self
2250    }
2251
2252    /// Sets or clears the value of [cluster][crate::model::CreateClusterRequest::cluster].
2253    pub fn set_or_clear_cluster<T>(mut self, v: std::option::Option<T>) -> Self
2254    where
2255        T: std::convert::Into<crate::model::Cluster>,
2256    {
2257        self.cluster = v.map(|x| x.into());
2258        self
2259    }
2260
2261    /// Sets the value of [request_id][crate::model::CreateClusterRequest::request_id].
2262    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2263        self.request_id = v.into();
2264        self
2265    }
2266
2267    /// Sets the value of [validate_only][crate::model::CreateClusterRequest::validate_only].
2268    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2269        self.validate_only = v.into();
2270        self
2271    }
2272}
2273
2274impl wkt::message::Message for CreateClusterRequest {
2275    fn typename() -> &'static str {
2276        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateClusterRequest"
2277    }
2278}
2279
2280#[doc(hidden)]
2281impl<'de> serde::de::Deserialize<'de> for CreateClusterRequest {
2282    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2283    where
2284        D: serde::Deserializer<'de>,
2285    {
2286        #[allow(non_camel_case_types)]
2287        #[doc(hidden)]
2288        #[derive(PartialEq, Eq, Hash)]
2289        enum __FieldTag {
2290            __parent,
2291            __cluster_id,
2292            __cluster,
2293            __request_id,
2294            __validate_only,
2295            Unknown(std::string::String),
2296        }
2297        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2298            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2299            where
2300                D: serde::Deserializer<'de>,
2301            {
2302                struct Visitor;
2303                impl<'de> serde::de::Visitor<'de> for Visitor {
2304                    type Value = __FieldTag;
2305                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2306                        formatter.write_str("a field name for CreateClusterRequest")
2307                    }
2308                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2309                    where
2310                        E: serde::de::Error,
2311                    {
2312                        use std::result::Result::Ok;
2313                        use std::string::ToString;
2314                        match value {
2315                            "parent" => Ok(__FieldTag::__parent),
2316                            "clusterId" => Ok(__FieldTag::__cluster_id),
2317                            "cluster_id" => Ok(__FieldTag::__cluster_id),
2318                            "cluster" => Ok(__FieldTag::__cluster),
2319                            "requestId" => Ok(__FieldTag::__request_id),
2320                            "request_id" => Ok(__FieldTag::__request_id),
2321                            "validateOnly" => Ok(__FieldTag::__validate_only),
2322                            "validate_only" => Ok(__FieldTag::__validate_only),
2323                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2324                        }
2325                    }
2326                }
2327                deserializer.deserialize_identifier(Visitor)
2328            }
2329        }
2330        struct Visitor;
2331        impl<'de> serde::de::Visitor<'de> for Visitor {
2332            type Value = CreateClusterRequest;
2333            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2334                formatter.write_str("struct CreateClusterRequest")
2335            }
2336            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2337            where
2338                A: serde::de::MapAccess<'de>,
2339            {
2340                #[allow(unused_imports)]
2341                use serde::de::Error;
2342                use std::option::Option::Some;
2343                let mut fields = std::collections::HashSet::new();
2344                let mut result = Self::Value::new();
2345                while let Some(tag) = map.next_key::<__FieldTag>()? {
2346                    #[allow(clippy::match_single_binding)]
2347                    match tag {
2348                        __FieldTag::__parent => {
2349                            if !fields.insert(__FieldTag::__parent) {
2350                                return std::result::Result::Err(A::Error::duplicate_field(
2351                                    "multiple values for parent",
2352                                ));
2353                            }
2354                            result.parent = map
2355                                .next_value::<std::option::Option<std::string::String>>()?
2356                                .unwrap_or_default();
2357                        }
2358                        __FieldTag::__cluster_id => {
2359                            if !fields.insert(__FieldTag::__cluster_id) {
2360                                return std::result::Result::Err(A::Error::duplicate_field(
2361                                    "multiple values for cluster_id",
2362                                ));
2363                            }
2364                            result.cluster_id = map
2365                                .next_value::<std::option::Option<std::string::String>>()?
2366                                .unwrap_or_default();
2367                        }
2368                        __FieldTag::__cluster => {
2369                            if !fields.insert(__FieldTag::__cluster) {
2370                                return std::result::Result::Err(A::Error::duplicate_field(
2371                                    "multiple values for cluster",
2372                                ));
2373                            }
2374                            result.cluster =
2375                                map.next_value::<std::option::Option<crate::model::Cluster>>()?;
2376                        }
2377                        __FieldTag::__request_id => {
2378                            if !fields.insert(__FieldTag::__request_id) {
2379                                return std::result::Result::Err(A::Error::duplicate_field(
2380                                    "multiple values for request_id",
2381                                ));
2382                            }
2383                            result.request_id = map
2384                                .next_value::<std::option::Option<std::string::String>>()?
2385                                .unwrap_or_default();
2386                        }
2387                        __FieldTag::__validate_only => {
2388                            if !fields.insert(__FieldTag::__validate_only) {
2389                                return std::result::Result::Err(A::Error::duplicate_field(
2390                                    "multiple values for validate_only",
2391                                ));
2392                            }
2393                            result.validate_only = map
2394                                .next_value::<std::option::Option<bool>>()?
2395                                .unwrap_or_default();
2396                        }
2397                        __FieldTag::Unknown(key) => {
2398                            let value = map.next_value::<serde_json::Value>()?;
2399                            result._unknown_fields.insert(key, value);
2400                        }
2401                    }
2402                }
2403                std::result::Result::Ok(result)
2404            }
2405        }
2406        deserializer.deserialize_any(Visitor)
2407    }
2408}
2409
2410#[doc(hidden)]
2411impl serde::ser::Serialize for CreateClusterRequest {
2412    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2413    where
2414        S: serde::ser::Serializer,
2415    {
2416        use serde::ser::SerializeMap;
2417        #[allow(unused_imports)]
2418        use std::option::Option::Some;
2419        let mut state = serializer.serialize_map(std::option::Option::None)?;
2420        if !self.parent.is_empty() {
2421            state.serialize_entry("parent", &self.parent)?;
2422        }
2423        if !self.cluster_id.is_empty() {
2424            state.serialize_entry("clusterId", &self.cluster_id)?;
2425        }
2426        if self.cluster.is_some() {
2427            state.serialize_entry("cluster", &self.cluster)?;
2428        }
2429        if !self.request_id.is_empty() {
2430            state.serialize_entry("requestId", &self.request_id)?;
2431        }
2432        if !wkt::internal::is_default(&self.validate_only) {
2433            state.serialize_entry("validateOnly", &self.validate_only)?;
2434        }
2435        if !self._unknown_fields.is_empty() {
2436            for (key, value) in self._unknown_fields.iter() {
2437                state.serialize_entry(key, &value)?;
2438            }
2439        }
2440        state.end()
2441    }
2442}
2443
2444/// Request message for
2445/// [VmwareEngine.UpdateCluster][google.cloud.vmwareengine.v1.VmwareEngine.UpdateCluster]
2446///
2447/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateCluster]: crate::client::VmwareEngine::update_cluster
2448#[derive(Clone, Debug, Default, PartialEq)]
2449#[non_exhaustive]
2450pub struct UpdateClusterRequest {
2451    /// Required. Field mask is used to specify the fields to be overwritten in the
2452    /// `Cluster` resource by the update. The fields specified in the `updateMask`
2453    /// are relative to the resource, not the full request. A field will be
2454    /// overwritten if it is in the mask. If the user does not provide a mask then
2455    /// all fields will be overwritten.
2456    pub update_mask: std::option::Option<wkt::FieldMask>,
2457
2458    /// Required. The description of the cluster.
2459    pub cluster: std::option::Option<crate::model::Cluster>,
2460
2461    /// Optional. The request ID must be a valid UUID with the exception that
2462    /// zero UUID is not supported (00000000-0000-0000-0000-000000000000).
2463    pub request_id: std::string::String,
2464
2465    /// Optional. True if you want the request to be validated and not executed;
2466    /// false otherwise.
2467    pub validate_only: bool,
2468
2469    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2470}
2471
2472impl UpdateClusterRequest {
2473    pub fn new() -> Self {
2474        std::default::Default::default()
2475    }
2476
2477    /// Sets the value of [update_mask][crate::model::UpdateClusterRequest::update_mask].
2478    pub fn set_update_mask<T>(mut self, v: T) -> Self
2479    where
2480        T: std::convert::Into<wkt::FieldMask>,
2481    {
2482        self.update_mask = std::option::Option::Some(v.into());
2483        self
2484    }
2485
2486    /// Sets or clears the value of [update_mask][crate::model::UpdateClusterRequest::update_mask].
2487    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
2488    where
2489        T: std::convert::Into<wkt::FieldMask>,
2490    {
2491        self.update_mask = v.map(|x| x.into());
2492        self
2493    }
2494
2495    /// Sets the value of [cluster][crate::model::UpdateClusterRequest::cluster].
2496    pub fn set_cluster<T>(mut self, v: T) -> Self
2497    where
2498        T: std::convert::Into<crate::model::Cluster>,
2499    {
2500        self.cluster = std::option::Option::Some(v.into());
2501        self
2502    }
2503
2504    /// Sets or clears the value of [cluster][crate::model::UpdateClusterRequest::cluster].
2505    pub fn set_or_clear_cluster<T>(mut self, v: std::option::Option<T>) -> Self
2506    where
2507        T: std::convert::Into<crate::model::Cluster>,
2508    {
2509        self.cluster = v.map(|x| x.into());
2510        self
2511    }
2512
2513    /// Sets the value of [request_id][crate::model::UpdateClusterRequest::request_id].
2514    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2515        self.request_id = v.into();
2516        self
2517    }
2518
2519    /// Sets the value of [validate_only][crate::model::UpdateClusterRequest::validate_only].
2520    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2521        self.validate_only = v.into();
2522        self
2523    }
2524}
2525
2526impl wkt::message::Message for UpdateClusterRequest {
2527    fn typename() -> &'static str {
2528        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateClusterRequest"
2529    }
2530}
2531
2532#[doc(hidden)]
2533impl<'de> serde::de::Deserialize<'de> for UpdateClusterRequest {
2534    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2535    where
2536        D: serde::Deserializer<'de>,
2537    {
2538        #[allow(non_camel_case_types)]
2539        #[doc(hidden)]
2540        #[derive(PartialEq, Eq, Hash)]
2541        enum __FieldTag {
2542            __update_mask,
2543            __cluster,
2544            __request_id,
2545            __validate_only,
2546            Unknown(std::string::String),
2547        }
2548        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2549            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2550            where
2551                D: serde::Deserializer<'de>,
2552            {
2553                struct Visitor;
2554                impl<'de> serde::de::Visitor<'de> for Visitor {
2555                    type Value = __FieldTag;
2556                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2557                        formatter.write_str("a field name for UpdateClusterRequest")
2558                    }
2559                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2560                    where
2561                        E: serde::de::Error,
2562                    {
2563                        use std::result::Result::Ok;
2564                        use std::string::ToString;
2565                        match value {
2566                            "updateMask" => Ok(__FieldTag::__update_mask),
2567                            "update_mask" => Ok(__FieldTag::__update_mask),
2568                            "cluster" => Ok(__FieldTag::__cluster),
2569                            "requestId" => Ok(__FieldTag::__request_id),
2570                            "request_id" => Ok(__FieldTag::__request_id),
2571                            "validateOnly" => Ok(__FieldTag::__validate_only),
2572                            "validate_only" => Ok(__FieldTag::__validate_only),
2573                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2574                        }
2575                    }
2576                }
2577                deserializer.deserialize_identifier(Visitor)
2578            }
2579        }
2580        struct Visitor;
2581        impl<'de> serde::de::Visitor<'de> for Visitor {
2582            type Value = UpdateClusterRequest;
2583            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2584                formatter.write_str("struct UpdateClusterRequest")
2585            }
2586            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2587            where
2588                A: serde::de::MapAccess<'de>,
2589            {
2590                #[allow(unused_imports)]
2591                use serde::de::Error;
2592                use std::option::Option::Some;
2593                let mut fields = std::collections::HashSet::new();
2594                let mut result = Self::Value::new();
2595                while let Some(tag) = map.next_key::<__FieldTag>()? {
2596                    #[allow(clippy::match_single_binding)]
2597                    match tag {
2598                        __FieldTag::__update_mask => {
2599                            if !fields.insert(__FieldTag::__update_mask) {
2600                                return std::result::Result::Err(A::Error::duplicate_field(
2601                                    "multiple values for update_mask",
2602                                ));
2603                            }
2604                            result.update_mask =
2605                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
2606                        }
2607                        __FieldTag::__cluster => {
2608                            if !fields.insert(__FieldTag::__cluster) {
2609                                return std::result::Result::Err(A::Error::duplicate_field(
2610                                    "multiple values for cluster",
2611                                ));
2612                            }
2613                            result.cluster =
2614                                map.next_value::<std::option::Option<crate::model::Cluster>>()?;
2615                        }
2616                        __FieldTag::__request_id => {
2617                            if !fields.insert(__FieldTag::__request_id) {
2618                                return std::result::Result::Err(A::Error::duplicate_field(
2619                                    "multiple values for request_id",
2620                                ));
2621                            }
2622                            result.request_id = map
2623                                .next_value::<std::option::Option<std::string::String>>()?
2624                                .unwrap_or_default();
2625                        }
2626                        __FieldTag::__validate_only => {
2627                            if !fields.insert(__FieldTag::__validate_only) {
2628                                return std::result::Result::Err(A::Error::duplicate_field(
2629                                    "multiple values for validate_only",
2630                                ));
2631                            }
2632                            result.validate_only = map
2633                                .next_value::<std::option::Option<bool>>()?
2634                                .unwrap_or_default();
2635                        }
2636                        __FieldTag::Unknown(key) => {
2637                            let value = map.next_value::<serde_json::Value>()?;
2638                            result._unknown_fields.insert(key, value);
2639                        }
2640                    }
2641                }
2642                std::result::Result::Ok(result)
2643            }
2644        }
2645        deserializer.deserialize_any(Visitor)
2646    }
2647}
2648
2649#[doc(hidden)]
2650impl serde::ser::Serialize for UpdateClusterRequest {
2651    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2652    where
2653        S: serde::ser::Serializer,
2654    {
2655        use serde::ser::SerializeMap;
2656        #[allow(unused_imports)]
2657        use std::option::Option::Some;
2658        let mut state = serializer.serialize_map(std::option::Option::None)?;
2659        if self.update_mask.is_some() {
2660            state.serialize_entry("updateMask", &self.update_mask)?;
2661        }
2662        if self.cluster.is_some() {
2663            state.serialize_entry("cluster", &self.cluster)?;
2664        }
2665        if !self.request_id.is_empty() {
2666            state.serialize_entry("requestId", &self.request_id)?;
2667        }
2668        if !wkt::internal::is_default(&self.validate_only) {
2669            state.serialize_entry("validateOnly", &self.validate_only)?;
2670        }
2671        if !self._unknown_fields.is_empty() {
2672            for (key, value) in self._unknown_fields.iter() {
2673                state.serialize_entry(key, &value)?;
2674            }
2675        }
2676        state.end()
2677    }
2678}
2679
2680/// Request message for
2681/// [VmwareEngine.DeleteCluster][google.cloud.vmwareengine.v1.VmwareEngine.DeleteCluster]
2682///
2683/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteCluster]: crate::client::VmwareEngine::delete_cluster
2684#[derive(Clone, Debug, Default, PartialEq)]
2685#[non_exhaustive]
2686pub struct DeleteClusterRequest {
2687    /// Required. The resource name of the cluster to delete.
2688    /// Resource names are schemeless URIs that follow the conventions in
2689    /// <https://cloud.google.com/apis/design/resource_names>.
2690    /// For example:
2691    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
2692    pub name: std::string::String,
2693
2694    /// Optional. The request ID must be a valid UUID with the exception that zero
2695    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2696    pub request_id: std::string::String,
2697
2698    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2699}
2700
2701impl DeleteClusterRequest {
2702    pub fn new() -> Self {
2703        std::default::Default::default()
2704    }
2705
2706    /// Sets the value of [name][crate::model::DeleteClusterRequest::name].
2707    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2708        self.name = v.into();
2709        self
2710    }
2711
2712    /// Sets the value of [request_id][crate::model::DeleteClusterRequest::request_id].
2713    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2714        self.request_id = v.into();
2715        self
2716    }
2717}
2718
2719impl wkt::message::Message for DeleteClusterRequest {
2720    fn typename() -> &'static str {
2721        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteClusterRequest"
2722    }
2723}
2724
2725#[doc(hidden)]
2726impl<'de> serde::de::Deserialize<'de> for DeleteClusterRequest {
2727    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2728    where
2729        D: serde::Deserializer<'de>,
2730    {
2731        #[allow(non_camel_case_types)]
2732        #[doc(hidden)]
2733        #[derive(PartialEq, Eq, Hash)]
2734        enum __FieldTag {
2735            __name,
2736            __request_id,
2737            Unknown(std::string::String),
2738        }
2739        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2740            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2741            where
2742                D: serde::Deserializer<'de>,
2743            {
2744                struct Visitor;
2745                impl<'de> serde::de::Visitor<'de> for Visitor {
2746                    type Value = __FieldTag;
2747                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2748                        formatter.write_str("a field name for DeleteClusterRequest")
2749                    }
2750                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2751                    where
2752                        E: serde::de::Error,
2753                    {
2754                        use std::result::Result::Ok;
2755                        use std::string::ToString;
2756                        match value {
2757                            "name" => Ok(__FieldTag::__name),
2758                            "requestId" => Ok(__FieldTag::__request_id),
2759                            "request_id" => Ok(__FieldTag::__request_id),
2760                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2761                        }
2762                    }
2763                }
2764                deserializer.deserialize_identifier(Visitor)
2765            }
2766        }
2767        struct Visitor;
2768        impl<'de> serde::de::Visitor<'de> for Visitor {
2769            type Value = DeleteClusterRequest;
2770            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2771                formatter.write_str("struct DeleteClusterRequest")
2772            }
2773            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2774            where
2775                A: serde::de::MapAccess<'de>,
2776            {
2777                #[allow(unused_imports)]
2778                use serde::de::Error;
2779                use std::option::Option::Some;
2780                let mut fields = std::collections::HashSet::new();
2781                let mut result = Self::Value::new();
2782                while let Some(tag) = map.next_key::<__FieldTag>()? {
2783                    #[allow(clippy::match_single_binding)]
2784                    match tag {
2785                        __FieldTag::__name => {
2786                            if !fields.insert(__FieldTag::__name) {
2787                                return std::result::Result::Err(A::Error::duplicate_field(
2788                                    "multiple values for name",
2789                                ));
2790                            }
2791                            result.name = map
2792                                .next_value::<std::option::Option<std::string::String>>()?
2793                                .unwrap_or_default();
2794                        }
2795                        __FieldTag::__request_id => {
2796                            if !fields.insert(__FieldTag::__request_id) {
2797                                return std::result::Result::Err(A::Error::duplicate_field(
2798                                    "multiple values for request_id",
2799                                ));
2800                            }
2801                            result.request_id = map
2802                                .next_value::<std::option::Option<std::string::String>>()?
2803                                .unwrap_or_default();
2804                        }
2805                        __FieldTag::Unknown(key) => {
2806                            let value = map.next_value::<serde_json::Value>()?;
2807                            result._unknown_fields.insert(key, value);
2808                        }
2809                    }
2810                }
2811                std::result::Result::Ok(result)
2812            }
2813        }
2814        deserializer.deserialize_any(Visitor)
2815    }
2816}
2817
2818#[doc(hidden)]
2819impl serde::ser::Serialize for DeleteClusterRequest {
2820    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2821    where
2822        S: serde::ser::Serializer,
2823    {
2824        use serde::ser::SerializeMap;
2825        #[allow(unused_imports)]
2826        use std::option::Option::Some;
2827        let mut state = serializer.serialize_map(std::option::Option::None)?;
2828        if !self.name.is_empty() {
2829            state.serialize_entry("name", &self.name)?;
2830        }
2831        if !self.request_id.is_empty() {
2832            state.serialize_entry("requestId", &self.request_id)?;
2833        }
2834        if !self._unknown_fields.is_empty() {
2835            for (key, value) in self._unknown_fields.iter() {
2836                state.serialize_entry(key, &value)?;
2837            }
2838        }
2839        state.end()
2840    }
2841}
2842
2843/// Request message for
2844/// [VmwareEngine.ListNodes][google.cloud.vmwareengine.v1.VmwareEngine.ListNodes]
2845///
2846/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNodes]: crate::client::VmwareEngine::list_nodes
2847#[derive(Clone, Debug, Default, PartialEq)]
2848#[non_exhaustive]
2849pub struct ListNodesRequest {
2850    /// Required. The resource name of the cluster to be queried for nodes.
2851    /// Resource names are schemeless URIs that follow the conventions in
2852    /// <https://cloud.google.com/apis/design/resource_names>.
2853    /// For example:
2854    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
2855    pub parent: std::string::String,
2856
2857    /// The maximum number of nodes to return in one page.
2858    /// The service may return fewer than this value.
2859    /// The maximum value is coerced to 1000.
2860    /// The default value of this field is 500.
2861    pub page_size: i32,
2862
2863    /// A page token, received from a previous `ListNodes` call.
2864    /// Provide this to retrieve the subsequent page.
2865    ///
2866    /// When paginating, all other parameters provided to
2867    /// `ListNodes` must match the call that provided the page
2868    /// token.
2869    pub page_token: std::string::String,
2870
2871    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2872}
2873
2874impl ListNodesRequest {
2875    pub fn new() -> Self {
2876        std::default::Default::default()
2877    }
2878
2879    /// Sets the value of [parent][crate::model::ListNodesRequest::parent].
2880    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2881        self.parent = v.into();
2882        self
2883    }
2884
2885    /// Sets the value of [page_size][crate::model::ListNodesRequest::page_size].
2886    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2887        self.page_size = v.into();
2888        self
2889    }
2890
2891    /// Sets the value of [page_token][crate::model::ListNodesRequest::page_token].
2892    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2893        self.page_token = v.into();
2894        self
2895    }
2896}
2897
2898impl wkt::message::Message for ListNodesRequest {
2899    fn typename() -> &'static str {
2900        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNodesRequest"
2901    }
2902}
2903
2904#[doc(hidden)]
2905impl<'de> serde::de::Deserialize<'de> for ListNodesRequest {
2906    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2907    where
2908        D: serde::Deserializer<'de>,
2909    {
2910        #[allow(non_camel_case_types)]
2911        #[doc(hidden)]
2912        #[derive(PartialEq, Eq, Hash)]
2913        enum __FieldTag {
2914            __parent,
2915            __page_size,
2916            __page_token,
2917            Unknown(std::string::String),
2918        }
2919        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2920            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2921            where
2922                D: serde::Deserializer<'de>,
2923            {
2924                struct Visitor;
2925                impl<'de> serde::de::Visitor<'de> for Visitor {
2926                    type Value = __FieldTag;
2927                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2928                        formatter.write_str("a field name for ListNodesRequest")
2929                    }
2930                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2931                    where
2932                        E: serde::de::Error,
2933                    {
2934                        use std::result::Result::Ok;
2935                        use std::string::ToString;
2936                        match value {
2937                            "parent" => Ok(__FieldTag::__parent),
2938                            "pageSize" => Ok(__FieldTag::__page_size),
2939                            "page_size" => Ok(__FieldTag::__page_size),
2940                            "pageToken" => Ok(__FieldTag::__page_token),
2941                            "page_token" => Ok(__FieldTag::__page_token),
2942                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2943                        }
2944                    }
2945                }
2946                deserializer.deserialize_identifier(Visitor)
2947            }
2948        }
2949        struct Visitor;
2950        impl<'de> serde::de::Visitor<'de> for Visitor {
2951            type Value = ListNodesRequest;
2952            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2953                formatter.write_str("struct ListNodesRequest")
2954            }
2955            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2956            where
2957                A: serde::de::MapAccess<'de>,
2958            {
2959                #[allow(unused_imports)]
2960                use serde::de::Error;
2961                use std::option::Option::Some;
2962                let mut fields = std::collections::HashSet::new();
2963                let mut result = Self::Value::new();
2964                while let Some(tag) = map.next_key::<__FieldTag>()? {
2965                    #[allow(clippy::match_single_binding)]
2966                    match tag {
2967                        __FieldTag::__parent => {
2968                            if !fields.insert(__FieldTag::__parent) {
2969                                return std::result::Result::Err(A::Error::duplicate_field(
2970                                    "multiple values for parent",
2971                                ));
2972                            }
2973                            result.parent = map
2974                                .next_value::<std::option::Option<std::string::String>>()?
2975                                .unwrap_or_default();
2976                        }
2977                        __FieldTag::__page_size => {
2978                            if !fields.insert(__FieldTag::__page_size) {
2979                                return std::result::Result::Err(A::Error::duplicate_field(
2980                                    "multiple values for page_size",
2981                                ));
2982                            }
2983                            struct __With(std::option::Option<i32>);
2984                            impl<'de> serde::de::Deserialize<'de> for __With {
2985                                fn deserialize<D>(
2986                                    deserializer: D,
2987                                ) -> std::result::Result<Self, D::Error>
2988                                where
2989                                    D: serde::de::Deserializer<'de>,
2990                                {
2991                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
2992                                }
2993                            }
2994                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
2995                        }
2996                        __FieldTag::__page_token => {
2997                            if !fields.insert(__FieldTag::__page_token) {
2998                                return std::result::Result::Err(A::Error::duplicate_field(
2999                                    "multiple values for page_token",
3000                                ));
3001                            }
3002                            result.page_token = map
3003                                .next_value::<std::option::Option<std::string::String>>()?
3004                                .unwrap_or_default();
3005                        }
3006                        __FieldTag::Unknown(key) => {
3007                            let value = map.next_value::<serde_json::Value>()?;
3008                            result._unknown_fields.insert(key, value);
3009                        }
3010                    }
3011                }
3012                std::result::Result::Ok(result)
3013            }
3014        }
3015        deserializer.deserialize_any(Visitor)
3016    }
3017}
3018
3019#[doc(hidden)]
3020impl serde::ser::Serialize for ListNodesRequest {
3021    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3022    where
3023        S: serde::ser::Serializer,
3024    {
3025        use serde::ser::SerializeMap;
3026        #[allow(unused_imports)]
3027        use std::option::Option::Some;
3028        let mut state = serializer.serialize_map(std::option::Option::None)?;
3029        if !self.parent.is_empty() {
3030            state.serialize_entry("parent", &self.parent)?;
3031        }
3032        if !wkt::internal::is_default(&self.page_size) {
3033            struct __With<'a>(&'a i32);
3034            impl<'a> serde::ser::Serialize for __With<'a> {
3035                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3036                where
3037                    S: serde::ser::Serializer,
3038                {
3039                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
3040                }
3041            }
3042            state.serialize_entry("pageSize", &__With(&self.page_size))?;
3043        }
3044        if !self.page_token.is_empty() {
3045            state.serialize_entry("pageToken", &self.page_token)?;
3046        }
3047        if !self._unknown_fields.is_empty() {
3048            for (key, value) in self._unknown_fields.iter() {
3049                state.serialize_entry(key, &value)?;
3050            }
3051        }
3052        state.end()
3053    }
3054}
3055
3056/// Response message for
3057/// [VmwareEngine.ListNodes][google.cloud.vmwareengine.v1.VmwareEngine.ListNodes]
3058///
3059/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNodes]: crate::client::VmwareEngine::list_nodes
3060#[derive(Clone, Debug, Default, PartialEq)]
3061#[non_exhaustive]
3062pub struct ListNodesResponse {
3063    /// The nodes.
3064    pub nodes: std::vec::Vec<crate::model::Node>,
3065
3066    /// A token, which can be sent as `page_token` to retrieve the next page.
3067    /// If this field is omitted, there are no subsequent pages.
3068    pub next_page_token: std::string::String,
3069
3070    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3071}
3072
3073impl ListNodesResponse {
3074    pub fn new() -> Self {
3075        std::default::Default::default()
3076    }
3077
3078    /// Sets the value of [nodes][crate::model::ListNodesResponse::nodes].
3079    pub fn set_nodes<T, V>(mut self, v: T) -> Self
3080    where
3081        T: std::iter::IntoIterator<Item = V>,
3082        V: std::convert::Into<crate::model::Node>,
3083    {
3084        use std::iter::Iterator;
3085        self.nodes = v.into_iter().map(|i| i.into()).collect();
3086        self
3087    }
3088
3089    /// Sets the value of [next_page_token][crate::model::ListNodesResponse::next_page_token].
3090    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3091        self.next_page_token = v.into();
3092        self
3093    }
3094}
3095
3096impl wkt::message::Message for ListNodesResponse {
3097    fn typename() -> &'static str {
3098        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNodesResponse"
3099    }
3100}
3101
3102#[doc(hidden)]
3103impl gax::paginator::internal::PageableResponse for ListNodesResponse {
3104    type PageItem = crate::model::Node;
3105
3106    fn items(self) -> std::vec::Vec<Self::PageItem> {
3107        self.nodes
3108    }
3109
3110    fn next_page_token(&self) -> std::string::String {
3111        use std::clone::Clone;
3112        self.next_page_token.clone()
3113    }
3114}
3115
3116#[doc(hidden)]
3117impl<'de> serde::de::Deserialize<'de> for ListNodesResponse {
3118    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3119    where
3120        D: serde::Deserializer<'de>,
3121    {
3122        #[allow(non_camel_case_types)]
3123        #[doc(hidden)]
3124        #[derive(PartialEq, Eq, Hash)]
3125        enum __FieldTag {
3126            __nodes,
3127            __next_page_token,
3128            Unknown(std::string::String),
3129        }
3130        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3131            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3132            where
3133                D: serde::Deserializer<'de>,
3134            {
3135                struct Visitor;
3136                impl<'de> serde::de::Visitor<'de> for Visitor {
3137                    type Value = __FieldTag;
3138                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3139                        formatter.write_str("a field name for ListNodesResponse")
3140                    }
3141                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3142                    where
3143                        E: serde::de::Error,
3144                    {
3145                        use std::result::Result::Ok;
3146                        use std::string::ToString;
3147                        match value {
3148                            "nodes" => Ok(__FieldTag::__nodes),
3149                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
3150                            "next_page_token" => Ok(__FieldTag::__next_page_token),
3151                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3152                        }
3153                    }
3154                }
3155                deserializer.deserialize_identifier(Visitor)
3156            }
3157        }
3158        struct Visitor;
3159        impl<'de> serde::de::Visitor<'de> for Visitor {
3160            type Value = ListNodesResponse;
3161            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3162                formatter.write_str("struct ListNodesResponse")
3163            }
3164            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3165            where
3166                A: serde::de::MapAccess<'de>,
3167            {
3168                #[allow(unused_imports)]
3169                use serde::de::Error;
3170                use std::option::Option::Some;
3171                let mut fields = std::collections::HashSet::new();
3172                let mut result = Self::Value::new();
3173                while let Some(tag) = map.next_key::<__FieldTag>()? {
3174                    #[allow(clippy::match_single_binding)]
3175                    match tag {
3176                        __FieldTag::__nodes => {
3177                            if !fields.insert(__FieldTag::__nodes) {
3178                                return std::result::Result::Err(A::Error::duplicate_field(
3179                                    "multiple values for nodes",
3180                                ));
3181                            }
3182                            result.nodes = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Node>>>()?.unwrap_or_default();
3183                        }
3184                        __FieldTag::__next_page_token => {
3185                            if !fields.insert(__FieldTag::__next_page_token) {
3186                                return std::result::Result::Err(A::Error::duplicate_field(
3187                                    "multiple values for next_page_token",
3188                                ));
3189                            }
3190                            result.next_page_token = map
3191                                .next_value::<std::option::Option<std::string::String>>()?
3192                                .unwrap_or_default();
3193                        }
3194                        __FieldTag::Unknown(key) => {
3195                            let value = map.next_value::<serde_json::Value>()?;
3196                            result._unknown_fields.insert(key, value);
3197                        }
3198                    }
3199                }
3200                std::result::Result::Ok(result)
3201            }
3202        }
3203        deserializer.deserialize_any(Visitor)
3204    }
3205}
3206
3207#[doc(hidden)]
3208impl serde::ser::Serialize for ListNodesResponse {
3209    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3210    where
3211        S: serde::ser::Serializer,
3212    {
3213        use serde::ser::SerializeMap;
3214        #[allow(unused_imports)]
3215        use std::option::Option::Some;
3216        let mut state = serializer.serialize_map(std::option::Option::None)?;
3217        if !self.nodes.is_empty() {
3218            state.serialize_entry("nodes", &self.nodes)?;
3219        }
3220        if !self.next_page_token.is_empty() {
3221            state.serialize_entry("nextPageToken", &self.next_page_token)?;
3222        }
3223        if !self._unknown_fields.is_empty() {
3224            for (key, value) in self._unknown_fields.iter() {
3225                state.serialize_entry(key, &value)?;
3226            }
3227        }
3228        state.end()
3229    }
3230}
3231
3232/// Request message for
3233/// [VmwareEngine.GetNode][google.cloud.vmwareengine.v1.VmwareEngine.GetNode]
3234///
3235/// [google.cloud.vmwareengine.v1.VmwareEngine.GetNode]: crate::client::VmwareEngine::get_node
3236#[derive(Clone, Debug, Default, PartialEq)]
3237#[non_exhaustive]
3238pub struct GetNodeRequest {
3239    /// Required. The resource name of the node to retrieve.
3240    /// For example:
3241    /// `projects/{project}/locations/{location}/privateClouds/{private_cloud}/clusters/{cluster}/nodes/{node}`
3242    pub name: std::string::String,
3243
3244    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3245}
3246
3247impl GetNodeRequest {
3248    pub fn new() -> Self {
3249        std::default::Default::default()
3250    }
3251
3252    /// Sets the value of [name][crate::model::GetNodeRequest::name].
3253    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3254        self.name = v.into();
3255        self
3256    }
3257}
3258
3259impl wkt::message::Message for GetNodeRequest {
3260    fn typename() -> &'static str {
3261        "type.googleapis.com/google.cloud.vmwareengine.v1.GetNodeRequest"
3262    }
3263}
3264
3265#[doc(hidden)]
3266impl<'de> serde::de::Deserialize<'de> for GetNodeRequest {
3267    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3268    where
3269        D: serde::Deserializer<'de>,
3270    {
3271        #[allow(non_camel_case_types)]
3272        #[doc(hidden)]
3273        #[derive(PartialEq, Eq, Hash)]
3274        enum __FieldTag {
3275            __name,
3276            Unknown(std::string::String),
3277        }
3278        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3279            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3280            where
3281                D: serde::Deserializer<'de>,
3282            {
3283                struct Visitor;
3284                impl<'de> serde::de::Visitor<'de> for Visitor {
3285                    type Value = __FieldTag;
3286                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3287                        formatter.write_str("a field name for GetNodeRequest")
3288                    }
3289                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3290                    where
3291                        E: serde::de::Error,
3292                    {
3293                        use std::result::Result::Ok;
3294                        use std::string::ToString;
3295                        match value {
3296                            "name" => Ok(__FieldTag::__name),
3297                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3298                        }
3299                    }
3300                }
3301                deserializer.deserialize_identifier(Visitor)
3302            }
3303        }
3304        struct Visitor;
3305        impl<'de> serde::de::Visitor<'de> for Visitor {
3306            type Value = GetNodeRequest;
3307            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3308                formatter.write_str("struct GetNodeRequest")
3309            }
3310            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3311            where
3312                A: serde::de::MapAccess<'de>,
3313            {
3314                #[allow(unused_imports)]
3315                use serde::de::Error;
3316                use std::option::Option::Some;
3317                let mut fields = std::collections::HashSet::new();
3318                let mut result = Self::Value::new();
3319                while let Some(tag) = map.next_key::<__FieldTag>()? {
3320                    #[allow(clippy::match_single_binding)]
3321                    match tag {
3322                        __FieldTag::__name => {
3323                            if !fields.insert(__FieldTag::__name) {
3324                                return std::result::Result::Err(A::Error::duplicate_field(
3325                                    "multiple values for name",
3326                                ));
3327                            }
3328                            result.name = map
3329                                .next_value::<std::option::Option<std::string::String>>()?
3330                                .unwrap_or_default();
3331                        }
3332                        __FieldTag::Unknown(key) => {
3333                            let value = map.next_value::<serde_json::Value>()?;
3334                            result._unknown_fields.insert(key, value);
3335                        }
3336                    }
3337                }
3338                std::result::Result::Ok(result)
3339            }
3340        }
3341        deserializer.deserialize_any(Visitor)
3342    }
3343}
3344
3345#[doc(hidden)]
3346impl serde::ser::Serialize for GetNodeRequest {
3347    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3348    where
3349        S: serde::ser::Serializer,
3350    {
3351        use serde::ser::SerializeMap;
3352        #[allow(unused_imports)]
3353        use std::option::Option::Some;
3354        let mut state = serializer.serialize_map(std::option::Option::None)?;
3355        if !self.name.is_empty() {
3356            state.serialize_entry("name", &self.name)?;
3357        }
3358        if !self._unknown_fields.is_empty() {
3359            for (key, value) in self._unknown_fields.iter() {
3360                state.serialize_entry(key, &value)?;
3361            }
3362        }
3363        state.end()
3364    }
3365}
3366
3367/// Request message for
3368/// [VmwareEngine.ListExternalAddresses][google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses]
3369///
3370/// [google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses]: crate::client::VmwareEngine::list_external_addresses
3371#[derive(Clone, Debug, Default, PartialEq)]
3372#[non_exhaustive]
3373pub struct ListExternalAddressesRequest {
3374    /// Required. The resource name of the private cloud to be queried for
3375    /// external IP addresses.
3376    /// Resource names are schemeless URIs that follow the conventions in
3377    /// <https://cloud.google.com/apis/design/resource_names>.
3378    /// For example:
3379    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3380    pub parent: std::string::String,
3381
3382    /// The maximum number of external IP addresses to return in one page.
3383    /// The service may return fewer than this value.
3384    /// The maximum value is coerced to 1000.
3385    /// The default value of this field is 500.
3386    pub page_size: i32,
3387
3388    /// A page token, received from a previous `ListExternalAddresses` call.
3389    /// Provide this to retrieve the subsequent page.
3390    ///
3391    /// When paginating, all other parameters provided to
3392    /// `ListExternalAddresses` must match the call that provided the page token.
3393    pub page_token: std::string::String,
3394
3395    /// A filter expression that matches resources returned in the response.
3396    /// The expression must specify the field name, a comparison
3397    /// operator, and the value that you want to use for filtering. The value
3398    /// must be a string, a number, or a boolean. The comparison operator
3399    /// must be `=`, `!=`, `>`, or `<`.
3400    ///
3401    /// For example, if you are filtering a list of IP addresses, you can
3402    /// exclude the ones named `example-ip` by specifying
3403    /// `name != "example-ip"`.
3404    ///
3405    /// To filter on multiple expressions, provide each separate expression within
3406    /// parentheses. For example:
3407    ///
3408    /// ```norust
3409    /// (name = "example-ip")
3410    /// (createTime > "2021-04-12T08:15:10.40Z")
3411    /// ```
3412    ///
3413    /// By default, each expression is an `AND` expression. However, you
3414    /// can include `AND` and `OR` expressions explicitly.
3415    /// For example:
3416    ///
3417    /// ```norust
3418    /// (name = "example-ip-1") AND
3419    /// (createTime > "2021-04-12T08:15:10.40Z") OR
3420    /// (name = "example-ip-2")
3421    /// ```
3422    pub filter: std::string::String,
3423
3424    /// Sorts list results by a certain order. By default, returned results
3425    /// are ordered by `name` in ascending order.
3426    /// You can also sort results in descending order based on the `name` value
3427    /// using `orderBy="name desc"`.
3428    /// Currently, only ordering by `name` is supported.
3429    pub order_by: std::string::String,
3430
3431    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3432}
3433
3434impl ListExternalAddressesRequest {
3435    pub fn new() -> Self {
3436        std::default::Default::default()
3437    }
3438
3439    /// Sets the value of [parent][crate::model::ListExternalAddressesRequest::parent].
3440    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3441        self.parent = v.into();
3442        self
3443    }
3444
3445    /// Sets the value of [page_size][crate::model::ListExternalAddressesRequest::page_size].
3446    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
3447        self.page_size = v.into();
3448        self
3449    }
3450
3451    /// Sets the value of [page_token][crate::model::ListExternalAddressesRequest::page_token].
3452    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3453        self.page_token = v.into();
3454        self
3455    }
3456
3457    /// Sets the value of [filter][crate::model::ListExternalAddressesRequest::filter].
3458    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3459        self.filter = v.into();
3460        self
3461    }
3462
3463    /// Sets the value of [order_by][crate::model::ListExternalAddressesRequest::order_by].
3464    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3465        self.order_by = v.into();
3466        self
3467    }
3468}
3469
3470impl wkt::message::Message for ListExternalAddressesRequest {
3471    fn typename() -> &'static str {
3472        "type.googleapis.com/google.cloud.vmwareengine.v1.ListExternalAddressesRequest"
3473    }
3474}
3475
3476#[doc(hidden)]
3477impl<'de> serde::de::Deserialize<'de> for ListExternalAddressesRequest {
3478    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3479    where
3480        D: serde::Deserializer<'de>,
3481    {
3482        #[allow(non_camel_case_types)]
3483        #[doc(hidden)]
3484        #[derive(PartialEq, Eq, Hash)]
3485        enum __FieldTag {
3486            __parent,
3487            __page_size,
3488            __page_token,
3489            __filter,
3490            __order_by,
3491            Unknown(std::string::String),
3492        }
3493        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3494            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3495            where
3496                D: serde::Deserializer<'de>,
3497            {
3498                struct Visitor;
3499                impl<'de> serde::de::Visitor<'de> for Visitor {
3500                    type Value = __FieldTag;
3501                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3502                        formatter.write_str("a field name for ListExternalAddressesRequest")
3503                    }
3504                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3505                    where
3506                        E: serde::de::Error,
3507                    {
3508                        use std::result::Result::Ok;
3509                        use std::string::ToString;
3510                        match value {
3511                            "parent" => Ok(__FieldTag::__parent),
3512                            "pageSize" => Ok(__FieldTag::__page_size),
3513                            "page_size" => Ok(__FieldTag::__page_size),
3514                            "pageToken" => Ok(__FieldTag::__page_token),
3515                            "page_token" => Ok(__FieldTag::__page_token),
3516                            "filter" => Ok(__FieldTag::__filter),
3517                            "orderBy" => Ok(__FieldTag::__order_by),
3518                            "order_by" => Ok(__FieldTag::__order_by),
3519                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3520                        }
3521                    }
3522                }
3523                deserializer.deserialize_identifier(Visitor)
3524            }
3525        }
3526        struct Visitor;
3527        impl<'de> serde::de::Visitor<'de> for Visitor {
3528            type Value = ListExternalAddressesRequest;
3529            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3530                formatter.write_str("struct ListExternalAddressesRequest")
3531            }
3532            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3533            where
3534                A: serde::de::MapAccess<'de>,
3535            {
3536                #[allow(unused_imports)]
3537                use serde::de::Error;
3538                use std::option::Option::Some;
3539                let mut fields = std::collections::HashSet::new();
3540                let mut result = Self::Value::new();
3541                while let Some(tag) = map.next_key::<__FieldTag>()? {
3542                    #[allow(clippy::match_single_binding)]
3543                    match tag {
3544                        __FieldTag::__parent => {
3545                            if !fields.insert(__FieldTag::__parent) {
3546                                return std::result::Result::Err(A::Error::duplicate_field(
3547                                    "multiple values for parent",
3548                                ));
3549                            }
3550                            result.parent = map
3551                                .next_value::<std::option::Option<std::string::String>>()?
3552                                .unwrap_or_default();
3553                        }
3554                        __FieldTag::__page_size => {
3555                            if !fields.insert(__FieldTag::__page_size) {
3556                                return std::result::Result::Err(A::Error::duplicate_field(
3557                                    "multiple values for page_size",
3558                                ));
3559                            }
3560                            struct __With(std::option::Option<i32>);
3561                            impl<'de> serde::de::Deserialize<'de> for __With {
3562                                fn deserialize<D>(
3563                                    deserializer: D,
3564                                ) -> std::result::Result<Self, D::Error>
3565                                where
3566                                    D: serde::de::Deserializer<'de>,
3567                                {
3568                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
3569                                }
3570                            }
3571                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
3572                        }
3573                        __FieldTag::__page_token => {
3574                            if !fields.insert(__FieldTag::__page_token) {
3575                                return std::result::Result::Err(A::Error::duplicate_field(
3576                                    "multiple values for page_token",
3577                                ));
3578                            }
3579                            result.page_token = map
3580                                .next_value::<std::option::Option<std::string::String>>()?
3581                                .unwrap_or_default();
3582                        }
3583                        __FieldTag::__filter => {
3584                            if !fields.insert(__FieldTag::__filter) {
3585                                return std::result::Result::Err(A::Error::duplicate_field(
3586                                    "multiple values for filter",
3587                                ));
3588                            }
3589                            result.filter = map
3590                                .next_value::<std::option::Option<std::string::String>>()?
3591                                .unwrap_or_default();
3592                        }
3593                        __FieldTag::__order_by => {
3594                            if !fields.insert(__FieldTag::__order_by) {
3595                                return std::result::Result::Err(A::Error::duplicate_field(
3596                                    "multiple values for order_by",
3597                                ));
3598                            }
3599                            result.order_by = map
3600                                .next_value::<std::option::Option<std::string::String>>()?
3601                                .unwrap_or_default();
3602                        }
3603                        __FieldTag::Unknown(key) => {
3604                            let value = map.next_value::<serde_json::Value>()?;
3605                            result._unknown_fields.insert(key, value);
3606                        }
3607                    }
3608                }
3609                std::result::Result::Ok(result)
3610            }
3611        }
3612        deserializer.deserialize_any(Visitor)
3613    }
3614}
3615
3616#[doc(hidden)]
3617impl serde::ser::Serialize for ListExternalAddressesRequest {
3618    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3619    where
3620        S: serde::ser::Serializer,
3621    {
3622        use serde::ser::SerializeMap;
3623        #[allow(unused_imports)]
3624        use std::option::Option::Some;
3625        let mut state = serializer.serialize_map(std::option::Option::None)?;
3626        if !self.parent.is_empty() {
3627            state.serialize_entry("parent", &self.parent)?;
3628        }
3629        if !wkt::internal::is_default(&self.page_size) {
3630            struct __With<'a>(&'a i32);
3631            impl<'a> serde::ser::Serialize for __With<'a> {
3632                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3633                where
3634                    S: serde::ser::Serializer,
3635                {
3636                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
3637                }
3638            }
3639            state.serialize_entry("pageSize", &__With(&self.page_size))?;
3640        }
3641        if !self.page_token.is_empty() {
3642            state.serialize_entry("pageToken", &self.page_token)?;
3643        }
3644        if !self.filter.is_empty() {
3645            state.serialize_entry("filter", &self.filter)?;
3646        }
3647        if !self.order_by.is_empty() {
3648            state.serialize_entry("orderBy", &self.order_by)?;
3649        }
3650        if !self._unknown_fields.is_empty() {
3651            for (key, value) in self._unknown_fields.iter() {
3652                state.serialize_entry(key, &value)?;
3653            }
3654        }
3655        state.end()
3656    }
3657}
3658
3659/// Response message for
3660/// [VmwareEngine.ListExternalAddresses][google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses]
3661///
3662/// [google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses]: crate::client::VmwareEngine::list_external_addresses
3663#[derive(Clone, Debug, Default, PartialEq)]
3664#[non_exhaustive]
3665pub struct ListExternalAddressesResponse {
3666    /// A list of external IP addresses.
3667    pub external_addresses: std::vec::Vec<crate::model::ExternalAddress>,
3668
3669    /// A token, which can be sent as `page_token` to retrieve the next page.
3670    /// If this field is omitted, there are no subsequent pages.
3671    pub next_page_token: std::string::String,
3672
3673    /// Locations that could not be reached when making an aggregated query using
3674    /// wildcards.
3675    pub unreachable: std::vec::Vec<std::string::String>,
3676
3677    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3678}
3679
3680impl ListExternalAddressesResponse {
3681    pub fn new() -> Self {
3682        std::default::Default::default()
3683    }
3684
3685    /// Sets the value of [external_addresses][crate::model::ListExternalAddressesResponse::external_addresses].
3686    pub fn set_external_addresses<T, V>(mut self, v: T) -> Self
3687    where
3688        T: std::iter::IntoIterator<Item = V>,
3689        V: std::convert::Into<crate::model::ExternalAddress>,
3690    {
3691        use std::iter::Iterator;
3692        self.external_addresses = v.into_iter().map(|i| i.into()).collect();
3693        self
3694    }
3695
3696    /// Sets the value of [next_page_token][crate::model::ListExternalAddressesResponse::next_page_token].
3697    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3698        self.next_page_token = v.into();
3699        self
3700    }
3701
3702    /// Sets the value of [unreachable][crate::model::ListExternalAddressesResponse::unreachable].
3703    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
3704    where
3705        T: std::iter::IntoIterator<Item = V>,
3706        V: std::convert::Into<std::string::String>,
3707    {
3708        use std::iter::Iterator;
3709        self.unreachable = v.into_iter().map(|i| i.into()).collect();
3710        self
3711    }
3712}
3713
3714impl wkt::message::Message for ListExternalAddressesResponse {
3715    fn typename() -> &'static str {
3716        "type.googleapis.com/google.cloud.vmwareengine.v1.ListExternalAddressesResponse"
3717    }
3718}
3719
3720#[doc(hidden)]
3721impl gax::paginator::internal::PageableResponse for ListExternalAddressesResponse {
3722    type PageItem = crate::model::ExternalAddress;
3723
3724    fn items(self) -> std::vec::Vec<Self::PageItem> {
3725        self.external_addresses
3726    }
3727
3728    fn next_page_token(&self) -> std::string::String {
3729        use std::clone::Clone;
3730        self.next_page_token.clone()
3731    }
3732}
3733
3734#[doc(hidden)]
3735impl<'de> serde::de::Deserialize<'de> for ListExternalAddressesResponse {
3736    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3737    where
3738        D: serde::Deserializer<'de>,
3739    {
3740        #[allow(non_camel_case_types)]
3741        #[doc(hidden)]
3742        #[derive(PartialEq, Eq, Hash)]
3743        enum __FieldTag {
3744            __external_addresses,
3745            __next_page_token,
3746            __unreachable,
3747            Unknown(std::string::String),
3748        }
3749        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3750            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3751            where
3752                D: serde::Deserializer<'de>,
3753            {
3754                struct Visitor;
3755                impl<'de> serde::de::Visitor<'de> for Visitor {
3756                    type Value = __FieldTag;
3757                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3758                        formatter.write_str("a field name for ListExternalAddressesResponse")
3759                    }
3760                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3761                    where
3762                        E: serde::de::Error,
3763                    {
3764                        use std::result::Result::Ok;
3765                        use std::string::ToString;
3766                        match value {
3767                            "externalAddresses" => Ok(__FieldTag::__external_addresses),
3768                            "external_addresses" => Ok(__FieldTag::__external_addresses),
3769                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
3770                            "next_page_token" => Ok(__FieldTag::__next_page_token),
3771                            "unreachable" => Ok(__FieldTag::__unreachable),
3772                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3773                        }
3774                    }
3775                }
3776                deserializer.deserialize_identifier(Visitor)
3777            }
3778        }
3779        struct Visitor;
3780        impl<'de> serde::de::Visitor<'de> for Visitor {
3781            type Value = ListExternalAddressesResponse;
3782            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3783                formatter.write_str("struct ListExternalAddressesResponse")
3784            }
3785            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3786            where
3787                A: serde::de::MapAccess<'de>,
3788            {
3789                #[allow(unused_imports)]
3790                use serde::de::Error;
3791                use std::option::Option::Some;
3792                let mut fields = std::collections::HashSet::new();
3793                let mut result = Self::Value::new();
3794                while let Some(tag) = map.next_key::<__FieldTag>()? {
3795                    #[allow(clippy::match_single_binding)]
3796                    match tag {
3797                        __FieldTag::__external_addresses => {
3798                            if !fields.insert(__FieldTag::__external_addresses) {
3799                                return std::result::Result::Err(A::Error::duplicate_field(
3800                                    "multiple values for external_addresses",
3801                                ));
3802                            }
3803                            result.external_addresses =
3804                                map.next_value::<std::option::Option<
3805                                    std::vec::Vec<crate::model::ExternalAddress>,
3806                                >>()?
3807                                .unwrap_or_default();
3808                        }
3809                        __FieldTag::__next_page_token => {
3810                            if !fields.insert(__FieldTag::__next_page_token) {
3811                                return std::result::Result::Err(A::Error::duplicate_field(
3812                                    "multiple values for next_page_token",
3813                                ));
3814                            }
3815                            result.next_page_token = map
3816                                .next_value::<std::option::Option<std::string::String>>()?
3817                                .unwrap_or_default();
3818                        }
3819                        __FieldTag::__unreachable => {
3820                            if !fields.insert(__FieldTag::__unreachable) {
3821                                return std::result::Result::Err(A::Error::duplicate_field(
3822                                    "multiple values for unreachable",
3823                                ));
3824                            }
3825                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
3826                        }
3827                        __FieldTag::Unknown(key) => {
3828                            let value = map.next_value::<serde_json::Value>()?;
3829                            result._unknown_fields.insert(key, value);
3830                        }
3831                    }
3832                }
3833                std::result::Result::Ok(result)
3834            }
3835        }
3836        deserializer.deserialize_any(Visitor)
3837    }
3838}
3839
3840#[doc(hidden)]
3841impl serde::ser::Serialize for ListExternalAddressesResponse {
3842    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3843    where
3844        S: serde::ser::Serializer,
3845    {
3846        use serde::ser::SerializeMap;
3847        #[allow(unused_imports)]
3848        use std::option::Option::Some;
3849        let mut state = serializer.serialize_map(std::option::Option::None)?;
3850        if !self.external_addresses.is_empty() {
3851            state.serialize_entry("externalAddresses", &self.external_addresses)?;
3852        }
3853        if !self.next_page_token.is_empty() {
3854            state.serialize_entry("nextPageToken", &self.next_page_token)?;
3855        }
3856        if !self.unreachable.is_empty() {
3857            state.serialize_entry("unreachable", &self.unreachable)?;
3858        }
3859        if !self._unknown_fields.is_empty() {
3860            for (key, value) in self._unknown_fields.iter() {
3861                state.serialize_entry(key, &value)?;
3862            }
3863        }
3864        state.end()
3865    }
3866}
3867
3868/// Request message for
3869/// [VmwareEngine.FetchNetworkPolicyExternalAddresses][google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses]
3870///
3871/// [google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses]: crate::client::VmwareEngine::fetch_network_policy_external_addresses
3872#[derive(Clone, Debug, Default, PartialEq)]
3873#[non_exhaustive]
3874pub struct FetchNetworkPolicyExternalAddressesRequest {
3875    /// Required. The resource name of the network policy to query for assigned
3876    /// external IP addresses. Resource names are schemeless URIs that follow the
3877    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
3878    /// example:
3879    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
3880    pub network_policy: std::string::String,
3881
3882    /// The maximum number of external IP addresses to return in one page.
3883    /// The service may return fewer than this value.
3884    /// The maximum value is coerced to 1000.
3885    /// The default value of this field is 500.
3886    pub page_size: i32,
3887
3888    /// A page token, received from a previous
3889    /// `FetchNetworkPolicyExternalAddresses` call. Provide this to retrieve the
3890    /// subsequent page.
3891    ///
3892    /// When paginating, all parameters provided to
3893    /// `FetchNetworkPolicyExternalAddresses`, except for `page_size` and
3894    /// `page_token`, must match the call that provided the page token.
3895    pub page_token: std::string::String,
3896
3897    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3898}
3899
3900impl FetchNetworkPolicyExternalAddressesRequest {
3901    pub fn new() -> Self {
3902        std::default::Default::default()
3903    }
3904
3905    /// Sets the value of [network_policy][crate::model::FetchNetworkPolicyExternalAddressesRequest::network_policy].
3906    pub fn set_network_policy<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3907        self.network_policy = v.into();
3908        self
3909    }
3910
3911    /// Sets the value of [page_size][crate::model::FetchNetworkPolicyExternalAddressesRequest::page_size].
3912    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
3913        self.page_size = v.into();
3914        self
3915    }
3916
3917    /// Sets the value of [page_token][crate::model::FetchNetworkPolicyExternalAddressesRequest::page_token].
3918    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3919        self.page_token = v.into();
3920        self
3921    }
3922}
3923
3924impl wkt::message::Message for FetchNetworkPolicyExternalAddressesRequest {
3925    fn typename() -> &'static str {
3926        "type.googleapis.com/google.cloud.vmwareengine.v1.FetchNetworkPolicyExternalAddressesRequest"
3927    }
3928}
3929
3930#[doc(hidden)]
3931impl<'de> serde::de::Deserialize<'de> for FetchNetworkPolicyExternalAddressesRequest {
3932    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3933    where
3934        D: serde::Deserializer<'de>,
3935    {
3936        #[allow(non_camel_case_types)]
3937        #[doc(hidden)]
3938        #[derive(PartialEq, Eq, Hash)]
3939        enum __FieldTag {
3940            __network_policy,
3941            __page_size,
3942            __page_token,
3943            Unknown(std::string::String),
3944        }
3945        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3946            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3947            where
3948                D: serde::Deserializer<'de>,
3949            {
3950                struct Visitor;
3951                impl<'de> serde::de::Visitor<'de> for Visitor {
3952                    type Value = __FieldTag;
3953                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3954                        formatter.write_str(
3955                            "a field name for FetchNetworkPolicyExternalAddressesRequest",
3956                        )
3957                    }
3958                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3959                    where
3960                        E: serde::de::Error,
3961                    {
3962                        use std::result::Result::Ok;
3963                        use std::string::ToString;
3964                        match value {
3965                            "networkPolicy" => Ok(__FieldTag::__network_policy),
3966                            "network_policy" => Ok(__FieldTag::__network_policy),
3967                            "pageSize" => Ok(__FieldTag::__page_size),
3968                            "page_size" => Ok(__FieldTag::__page_size),
3969                            "pageToken" => Ok(__FieldTag::__page_token),
3970                            "page_token" => Ok(__FieldTag::__page_token),
3971                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3972                        }
3973                    }
3974                }
3975                deserializer.deserialize_identifier(Visitor)
3976            }
3977        }
3978        struct Visitor;
3979        impl<'de> serde::de::Visitor<'de> for Visitor {
3980            type Value = FetchNetworkPolicyExternalAddressesRequest;
3981            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3982                formatter.write_str("struct FetchNetworkPolicyExternalAddressesRequest")
3983            }
3984            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3985            where
3986                A: serde::de::MapAccess<'de>,
3987            {
3988                #[allow(unused_imports)]
3989                use serde::de::Error;
3990                use std::option::Option::Some;
3991                let mut fields = std::collections::HashSet::new();
3992                let mut result = Self::Value::new();
3993                while let Some(tag) = map.next_key::<__FieldTag>()? {
3994                    #[allow(clippy::match_single_binding)]
3995                    match tag {
3996                        __FieldTag::__network_policy => {
3997                            if !fields.insert(__FieldTag::__network_policy) {
3998                                return std::result::Result::Err(A::Error::duplicate_field(
3999                                    "multiple values for network_policy",
4000                                ));
4001                            }
4002                            result.network_policy = map
4003                                .next_value::<std::option::Option<std::string::String>>()?
4004                                .unwrap_or_default();
4005                        }
4006                        __FieldTag::__page_size => {
4007                            if !fields.insert(__FieldTag::__page_size) {
4008                                return std::result::Result::Err(A::Error::duplicate_field(
4009                                    "multiple values for page_size",
4010                                ));
4011                            }
4012                            struct __With(std::option::Option<i32>);
4013                            impl<'de> serde::de::Deserialize<'de> for __With {
4014                                fn deserialize<D>(
4015                                    deserializer: D,
4016                                ) -> std::result::Result<Self, D::Error>
4017                                where
4018                                    D: serde::de::Deserializer<'de>,
4019                                {
4020                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
4021                                }
4022                            }
4023                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
4024                        }
4025                        __FieldTag::__page_token => {
4026                            if !fields.insert(__FieldTag::__page_token) {
4027                                return std::result::Result::Err(A::Error::duplicate_field(
4028                                    "multiple values for page_token",
4029                                ));
4030                            }
4031                            result.page_token = map
4032                                .next_value::<std::option::Option<std::string::String>>()?
4033                                .unwrap_or_default();
4034                        }
4035                        __FieldTag::Unknown(key) => {
4036                            let value = map.next_value::<serde_json::Value>()?;
4037                            result._unknown_fields.insert(key, value);
4038                        }
4039                    }
4040                }
4041                std::result::Result::Ok(result)
4042            }
4043        }
4044        deserializer.deserialize_any(Visitor)
4045    }
4046}
4047
4048#[doc(hidden)]
4049impl serde::ser::Serialize for FetchNetworkPolicyExternalAddressesRequest {
4050    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4051    where
4052        S: serde::ser::Serializer,
4053    {
4054        use serde::ser::SerializeMap;
4055        #[allow(unused_imports)]
4056        use std::option::Option::Some;
4057        let mut state = serializer.serialize_map(std::option::Option::None)?;
4058        if !self.network_policy.is_empty() {
4059            state.serialize_entry("networkPolicy", &self.network_policy)?;
4060        }
4061        if !wkt::internal::is_default(&self.page_size) {
4062            struct __With<'a>(&'a i32);
4063            impl<'a> serde::ser::Serialize for __With<'a> {
4064                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4065                where
4066                    S: serde::ser::Serializer,
4067                {
4068                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
4069                }
4070            }
4071            state.serialize_entry("pageSize", &__With(&self.page_size))?;
4072        }
4073        if !self.page_token.is_empty() {
4074            state.serialize_entry("pageToken", &self.page_token)?;
4075        }
4076        if !self._unknown_fields.is_empty() {
4077            for (key, value) in self._unknown_fields.iter() {
4078                state.serialize_entry(key, &value)?;
4079            }
4080        }
4081        state.end()
4082    }
4083}
4084
4085/// Response message for
4086/// [VmwareEngine.FetchNetworkPolicyExternalAddresses][google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses]
4087///
4088/// [google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses]: crate::client::VmwareEngine::fetch_network_policy_external_addresses
4089#[derive(Clone, Debug, Default, PartialEq)]
4090#[non_exhaustive]
4091pub struct FetchNetworkPolicyExternalAddressesResponse {
4092    /// A list of external IP addresses assigned to VMware workload VMs within the
4093    /// scope of the given network policy.
4094    pub external_addresses: std::vec::Vec<crate::model::ExternalAddress>,
4095
4096    /// A token, which can be sent as `page_token` to retrieve the next page.
4097    /// If this field is omitted, there are no subsequent pages.
4098    pub next_page_token: std::string::String,
4099
4100    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4101}
4102
4103impl FetchNetworkPolicyExternalAddressesResponse {
4104    pub fn new() -> Self {
4105        std::default::Default::default()
4106    }
4107
4108    /// Sets the value of [external_addresses][crate::model::FetchNetworkPolicyExternalAddressesResponse::external_addresses].
4109    pub fn set_external_addresses<T, V>(mut self, v: T) -> Self
4110    where
4111        T: std::iter::IntoIterator<Item = V>,
4112        V: std::convert::Into<crate::model::ExternalAddress>,
4113    {
4114        use std::iter::Iterator;
4115        self.external_addresses = v.into_iter().map(|i| i.into()).collect();
4116        self
4117    }
4118
4119    /// Sets the value of [next_page_token][crate::model::FetchNetworkPolicyExternalAddressesResponse::next_page_token].
4120    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4121        self.next_page_token = v.into();
4122        self
4123    }
4124}
4125
4126impl wkt::message::Message for FetchNetworkPolicyExternalAddressesResponse {
4127    fn typename() -> &'static str {
4128        "type.googleapis.com/google.cloud.vmwareengine.v1.FetchNetworkPolicyExternalAddressesResponse"
4129    }
4130}
4131
4132#[doc(hidden)]
4133impl gax::paginator::internal::PageableResponse for FetchNetworkPolicyExternalAddressesResponse {
4134    type PageItem = crate::model::ExternalAddress;
4135
4136    fn items(self) -> std::vec::Vec<Self::PageItem> {
4137        self.external_addresses
4138    }
4139
4140    fn next_page_token(&self) -> std::string::String {
4141        use std::clone::Clone;
4142        self.next_page_token.clone()
4143    }
4144}
4145
4146#[doc(hidden)]
4147impl<'de> serde::de::Deserialize<'de> for FetchNetworkPolicyExternalAddressesResponse {
4148    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4149    where
4150        D: serde::Deserializer<'de>,
4151    {
4152        #[allow(non_camel_case_types)]
4153        #[doc(hidden)]
4154        #[derive(PartialEq, Eq, Hash)]
4155        enum __FieldTag {
4156            __external_addresses,
4157            __next_page_token,
4158            Unknown(std::string::String),
4159        }
4160        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
4161            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4162            where
4163                D: serde::Deserializer<'de>,
4164            {
4165                struct Visitor;
4166                impl<'de> serde::de::Visitor<'de> for Visitor {
4167                    type Value = __FieldTag;
4168                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4169                        formatter.write_str(
4170                            "a field name for FetchNetworkPolicyExternalAddressesResponse",
4171                        )
4172                    }
4173                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4174                    where
4175                        E: serde::de::Error,
4176                    {
4177                        use std::result::Result::Ok;
4178                        use std::string::ToString;
4179                        match value {
4180                            "externalAddresses" => Ok(__FieldTag::__external_addresses),
4181                            "external_addresses" => Ok(__FieldTag::__external_addresses),
4182                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
4183                            "next_page_token" => Ok(__FieldTag::__next_page_token),
4184                            _ => Ok(__FieldTag::Unknown(value.to_string())),
4185                        }
4186                    }
4187                }
4188                deserializer.deserialize_identifier(Visitor)
4189            }
4190        }
4191        struct Visitor;
4192        impl<'de> serde::de::Visitor<'de> for Visitor {
4193            type Value = FetchNetworkPolicyExternalAddressesResponse;
4194            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4195                formatter.write_str("struct FetchNetworkPolicyExternalAddressesResponse")
4196            }
4197            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
4198            where
4199                A: serde::de::MapAccess<'de>,
4200            {
4201                #[allow(unused_imports)]
4202                use serde::de::Error;
4203                use std::option::Option::Some;
4204                let mut fields = std::collections::HashSet::new();
4205                let mut result = Self::Value::new();
4206                while let Some(tag) = map.next_key::<__FieldTag>()? {
4207                    #[allow(clippy::match_single_binding)]
4208                    match tag {
4209                        __FieldTag::__external_addresses => {
4210                            if !fields.insert(__FieldTag::__external_addresses) {
4211                                return std::result::Result::Err(A::Error::duplicate_field(
4212                                    "multiple values for external_addresses",
4213                                ));
4214                            }
4215                            result.external_addresses =
4216                                map.next_value::<std::option::Option<
4217                                    std::vec::Vec<crate::model::ExternalAddress>,
4218                                >>()?
4219                                .unwrap_or_default();
4220                        }
4221                        __FieldTag::__next_page_token => {
4222                            if !fields.insert(__FieldTag::__next_page_token) {
4223                                return std::result::Result::Err(A::Error::duplicate_field(
4224                                    "multiple values for next_page_token",
4225                                ));
4226                            }
4227                            result.next_page_token = map
4228                                .next_value::<std::option::Option<std::string::String>>()?
4229                                .unwrap_or_default();
4230                        }
4231                        __FieldTag::Unknown(key) => {
4232                            let value = map.next_value::<serde_json::Value>()?;
4233                            result._unknown_fields.insert(key, value);
4234                        }
4235                    }
4236                }
4237                std::result::Result::Ok(result)
4238            }
4239        }
4240        deserializer.deserialize_any(Visitor)
4241    }
4242}
4243
4244#[doc(hidden)]
4245impl serde::ser::Serialize for FetchNetworkPolicyExternalAddressesResponse {
4246    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4247    where
4248        S: serde::ser::Serializer,
4249    {
4250        use serde::ser::SerializeMap;
4251        #[allow(unused_imports)]
4252        use std::option::Option::Some;
4253        let mut state = serializer.serialize_map(std::option::Option::None)?;
4254        if !self.external_addresses.is_empty() {
4255            state.serialize_entry("externalAddresses", &self.external_addresses)?;
4256        }
4257        if !self.next_page_token.is_empty() {
4258            state.serialize_entry("nextPageToken", &self.next_page_token)?;
4259        }
4260        if !self._unknown_fields.is_empty() {
4261            for (key, value) in self._unknown_fields.iter() {
4262                state.serialize_entry(key, &value)?;
4263            }
4264        }
4265        state.end()
4266    }
4267}
4268
4269/// Request message for
4270/// [VmwareEngine.GetExternalAddress][google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAddress]
4271///
4272/// [google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAddress]: crate::client::VmwareEngine::get_external_address
4273#[derive(Clone, Debug, Default, PartialEq)]
4274#[non_exhaustive]
4275pub struct GetExternalAddressRequest {
4276    /// Required. The resource name of the external IP address to retrieve.
4277    /// Resource names are schemeless URIs that follow the conventions in
4278    /// <https://cloud.google.com/apis/design/resource_names>.
4279    /// For example:
4280    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-ip`
4281    pub name: std::string::String,
4282
4283    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4284}
4285
4286impl GetExternalAddressRequest {
4287    pub fn new() -> Self {
4288        std::default::Default::default()
4289    }
4290
4291    /// Sets the value of [name][crate::model::GetExternalAddressRequest::name].
4292    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4293        self.name = v.into();
4294        self
4295    }
4296}
4297
4298impl wkt::message::Message for GetExternalAddressRequest {
4299    fn typename() -> &'static str {
4300        "type.googleapis.com/google.cloud.vmwareengine.v1.GetExternalAddressRequest"
4301    }
4302}
4303
4304#[doc(hidden)]
4305impl<'de> serde::de::Deserialize<'de> for GetExternalAddressRequest {
4306    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4307    where
4308        D: serde::Deserializer<'de>,
4309    {
4310        #[allow(non_camel_case_types)]
4311        #[doc(hidden)]
4312        #[derive(PartialEq, Eq, Hash)]
4313        enum __FieldTag {
4314            __name,
4315            Unknown(std::string::String),
4316        }
4317        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
4318            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4319            where
4320                D: serde::Deserializer<'de>,
4321            {
4322                struct Visitor;
4323                impl<'de> serde::de::Visitor<'de> for Visitor {
4324                    type Value = __FieldTag;
4325                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4326                        formatter.write_str("a field name for GetExternalAddressRequest")
4327                    }
4328                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4329                    where
4330                        E: serde::de::Error,
4331                    {
4332                        use std::result::Result::Ok;
4333                        use std::string::ToString;
4334                        match value {
4335                            "name" => Ok(__FieldTag::__name),
4336                            _ => Ok(__FieldTag::Unknown(value.to_string())),
4337                        }
4338                    }
4339                }
4340                deserializer.deserialize_identifier(Visitor)
4341            }
4342        }
4343        struct Visitor;
4344        impl<'de> serde::de::Visitor<'de> for Visitor {
4345            type Value = GetExternalAddressRequest;
4346            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4347                formatter.write_str("struct GetExternalAddressRequest")
4348            }
4349            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
4350            where
4351                A: serde::de::MapAccess<'de>,
4352            {
4353                #[allow(unused_imports)]
4354                use serde::de::Error;
4355                use std::option::Option::Some;
4356                let mut fields = std::collections::HashSet::new();
4357                let mut result = Self::Value::new();
4358                while let Some(tag) = map.next_key::<__FieldTag>()? {
4359                    #[allow(clippy::match_single_binding)]
4360                    match tag {
4361                        __FieldTag::__name => {
4362                            if !fields.insert(__FieldTag::__name) {
4363                                return std::result::Result::Err(A::Error::duplicate_field(
4364                                    "multiple values for name",
4365                                ));
4366                            }
4367                            result.name = map
4368                                .next_value::<std::option::Option<std::string::String>>()?
4369                                .unwrap_or_default();
4370                        }
4371                        __FieldTag::Unknown(key) => {
4372                            let value = map.next_value::<serde_json::Value>()?;
4373                            result._unknown_fields.insert(key, value);
4374                        }
4375                    }
4376                }
4377                std::result::Result::Ok(result)
4378            }
4379        }
4380        deserializer.deserialize_any(Visitor)
4381    }
4382}
4383
4384#[doc(hidden)]
4385impl serde::ser::Serialize for GetExternalAddressRequest {
4386    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4387    where
4388        S: serde::ser::Serializer,
4389    {
4390        use serde::ser::SerializeMap;
4391        #[allow(unused_imports)]
4392        use std::option::Option::Some;
4393        let mut state = serializer.serialize_map(std::option::Option::None)?;
4394        if !self.name.is_empty() {
4395            state.serialize_entry("name", &self.name)?;
4396        }
4397        if !self._unknown_fields.is_empty() {
4398            for (key, value) in self._unknown_fields.iter() {
4399                state.serialize_entry(key, &value)?;
4400            }
4401        }
4402        state.end()
4403    }
4404}
4405
4406/// Request message for
4407/// [VmwareEngine.CreateExternalAddress][google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAddress]
4408///
4409/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAddress]: crate::client::VmwareEngine::create_external_address
4410#[derive(Clone, Debug, Default, PartialEq)]
4411#[non_exhaustive]
4412pub struct CreateExternalAddressRequest {
4413    /// Required. The resource name of the private cloud
4414    /// to create a new external IP address in.
4415    /// Resource names are schemeless URIs that follow the conventions in
4416    /// <https://cloud.google.com/apis/design/resource_names>.
4417    /// For example:
4418    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
4419    pub parent: std::string::String,
4420
4421    /// Required. The initial description of a new external IP address.
4422    pub external_address: std::option::Option<crate::model::ExternalAddress>,
4423
4424    /// Required. The user-provided identifier of the `ExternalAddress` to be
4425    /// created. This identifier must be unique among `ExternalAddress` resources
4426    /// within the parent and becomes the final token in the name URI. The
4427    /// identifier must meet the following requirements:
4428    ///
4429    /// * Only contains 1-63 alphanumeric characters and hyphens
4430    /// * Begins with an alphabetical character
4431    /// * Ends with a non-hyphen character
4432    /// * Not formatted as a UUID
4433    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
4434    ///   (section 3.5)
4435    pub external_address_id: std::string::String,
4436
4437    /// Optional. A request ID to identify requests. Specify a unique request ID
4438    /// so that if you must retry your request, the server will know to ignore
4439    /// the request if it has already been completed. The server guarantees that a
4440    /// request doesn't result in creation of duplicate commitments for at least 60
4441    /// minutes.
4442    ///
4443    /// For example, consider a situation where you make an initial request and the
4444    /// request times out. If you make the request again with the same request ID,
4445    /// the server can check if the original operation with the same request ID was
4446    /// received, and if so, will ignore the second request. This prevents clients
4447    /// from accidentally creating duplicate commitments.
4448    ///
4449    /// The request ID must be a valid UUID with the exception that zero UUID is
4450    /// not supported (00000000-0000-0000-0000-000000000000).
4451    pub request_id: std::string::String,
4452
4453    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4454}
4455
4456impl CreateExternalAddressRequest {
4457    pub fn new() -> Self {
4458        std::default::Default::default()
4459    }
4460
4461    /// Sets the value of [parent][crate::model::CreateExternalAddressRequest::parent].
4462    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4463        self.parent = v.into();
4464        self
4465    }
4466
4467    /// Sets the value of [external_address][crate::model::CreateExternalAddressRequest::external_address].
4468    pub fn set_external_address<T>(mut self, v: T) -> Self
4469    where
4470        T: std::convert::Into<crate::model::ExternalAddress>,
4471    {
4472        self.external_address = std::option::Option::Some(v.into());
4473        self
4474    }
4475
4476    /// Sets or clears the value of [external_address][crate::model::CreateExternalAddressRequest::external_address].
4477    pub fn set_or_clear_external_address<T>(mut self, v: std::option::Option<T>) -> Self
4478    where
4479        T: std::convert::Into<crate::model::ExternalAddress>,
4480    {
4481        self.external_address = v.map(|x| x.into());
4482        self
4483    }
4484
4485    /// Sets the value of [external_address_id][crate::model::CreateExternalAddressRequest::external_address_id].
4486    pub fn set_external_address_id<T: std::convert::Into<std::string::String>>(
4487        mut self,
4488        v: T,
4489    ) -> Self {
4490        self.external_address_id = v.into();
4491        self
4492    }
4493
4494    /// Sets the value of [request_id][crate::model::CreateExternalAddressRequest::request_id].
4495    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4496        self.request_id = v.into();
4497        self
4498    }
4499}
4500
4501impl wkt::message::Message for CreateExternalAddressRequest {
4502    fn typename() -> &'static str {
4503        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateExternalAddressRequest"
4504    }
4505}
4506
4507#[doc(hidden)]
4508impl<'de> serde::de::Deserialize<'de> for CreateExternalAddressRequest {
4509    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4510    where
4511        D: serde::Deserializer<'de>,
4512    {
4513        #[allow(non_camel_case_types)]
4514        #[doc(hidden)]
4515        #[derive(PartialEq, Eq, Hash)]
4516        enum __FieldTag {
4517            __parent,
4518            __external_address,
4519            __external_address_id,
4520            __request_id,
4521            Unknown(std::string::String),
4522        }
4523        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
4524            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4525            where
4526                D: serde::Deserializer<'de>,
4527            {
4528                struct Visitor;
4529                impl<'de> serde::de::Visitor<'de> for Visitor {
4530                    type Value = __FieldTag;
4531                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4532                        formatter.write_str("a field name for CreateExternalAddressRequest")
4533                    }
4534                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4535                    where
4536                        E: serde::de::Error,
4537                    {
4538                        use std::result::Result::Ok;
4539                        use std::string::ToString;
4540                        match value {
4541                            "parent" => Ok(__FieldTag::__parent),
4542                            "externalAddress" => Ok(__FieldTag::__external_address),
4543                            "external_address" => Ok(__FieldTag::__external_address),
4544                            "externalAddressId" => Ok(__FieldTag::__external_address_id),
4545                            "external_address_id" => Ok(__FieldTag::__external_address_id),
4546                            "requestId" => Ok(__FieldTag::__request_id),
4547                            "request_id" => Ok(__FieldTag::__request_id),
4548                            _ => Ok(__FieldTag::Unknown(value.to_string())),
4549                        }
4550                    }
4551                }
4552                deserializer.deserialize_identifier(Visitor)
4553            }
4554        }
4555        struct Visitor;
4556        impl<'de> serde::de::Visitor<'de> for Visitor {
4557            type Value = CreateExternalAddressRequest;
4558            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4559                formatter.write_str("struct CreateExternalAddressRequest")
4560            }
4561            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
4562            where
4563                A: serde::de::MapAccess<'de>,
4564            {
4565                #[allow(unused_imports)]
4566                use serde::de::Error;
4567                use std::option::Option::Some;
4568                let mut fields = std::collections::HashSet::new();
4569                let mut result = Self::Value::new();
4570                while let Some(tag) = map.next_key::<__FieldTag>()? {
4571                    #[allow(clippy::match_single_binding)]
4572                    match tag {
4573                        __FieldTag::__parent => {
4574                            if !fields.insert(__FieldTag::__parent) {
4575                                return std::result::Result::Err(A::Error::duplicate_field(
4576                                    "multiple values for parent",
4577                                ));
4578                            }
4579                            result.parent = map
4580                                .next_value::<std::option::Option<std::string::String>>()?
4581                                .unwrap_or_default();
4582                        }
4583                        __FieldTag::__external_address => {
4584                            if !fields.insert(__FieldTag::__external_address) {
4585                                return std::result::Result::Err(A::Error::duplicate_field(
4586                                    "multiple values for external_address",
4587                                ));
4588                            }
4589                            result.external_address = map
4590                                .next_value::<std::option::Option<crate::model::ExternalAddress>>(
4591                                )?;
4592                        }
4593                        __FieldTag::__external_address_id => {
4594                            if !fields.insert(__FieldTag::__external_address_id) {
4595                                return std::result::Result::Err(A::Error::duplicate_field(
4596                                    "multiple values for external_address_id",
4597                                ));
4598                            }
4599                            result.external_address_id = map
4600                                .next_value::<std::option::Option<std::string::String>>()?
4601                                .unwrap_or_default();
4602                        }
4603                        __FieldTag::__request_id => {
4604                            if !fields.insert(__FieldTag::__request_id) {
4605                                return std::result::Result::Err(A::Error::duplicate_field(
4606                                    "multiple values for request_id",
4607                                ));
4608                            }
4609                            result.request_id = map
4610                                .next_value::<std::option::Option<std::string::String>>()?
4611                                .unwrap_or_default();
4612                        }
4613                        __FieldTag::Unknown(key) => {
4614                            let value = map.next_value::<serde_json::Value>()?;
4615                            result._unknown_fields.insert(key, value);
4616                        }
4617                    }
4618                }
4619                std::result::Result::Ok(result)
4620            }
4621        }
4622        deserializer.deserialize_any(Visitor)
4623    }
4624}
4625
4626#[doc(hidden)]
4627impl serde::ser::Serialize for CreateExternalAddressRequest {
4628    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4629    where
4630        S: serde::ser::Serializer,
4631    {
4632        use serde::ser::SerializeMap;
4633        #[allow(unused_imports)]
4634        use std::option::Option::Some;
4635        let mut state = serializer.serialize_map(std::option::Option::None)?;
4636        if !self.parent.is_empty() {
4637            state.serialize_entry("parent", &self.parent)?;
4638        }
4639        if self.external_address.is_some() {
4640            state.serialize_entry("externalAddress", &self.external_address)?;
4641        }
4642        if !self.external_address_id.is_empty() {
4643            state.serialize_entry("externalAddressId", &self.external_address_id)?;
4644        }
4645        if !self.request_id.is_empty() {
4646            state.serialize_entry("requestId", &self.request_id)?;
4647        }
4648        if !self._unknown_fields.is_empty() {
4649            for (key, value) in self._unknown_fields.iter() {
4650                state.serialize_entry(key, &value)?;
4651            }
4652        }
4653        state.end()
4654    }
4655}
4656
4657/// Request message for
4658/// [VmwareEngine.UpdateExternalAddress][google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAddress]
4659///
4660/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAddress]: crate::client::VmwareEngine::update_external_address
4661#[derive(Clone, Debug, Default, PartialEq)]
4662#[non_exhaustive]
4663pub struct UpdateExternalAddressRequest {
4664    /// Required. Field mask is used to specify the fields to be overwritten in the
4665    /// `ExternalAddress` resource by the update.
4666    /// The fields specified in the `update_mask` are relative to the resource, not
4667    /// the full request. A field will be overwritten if it is in the mask. If the
4668    /// user does not provide a mask then all fields will be overwritten.
4669    pub update_mask: std::option::Option<wkt::FieldMask>,
4670
4671    /// Required. External IP address description.
4672    pub external_address: std::option::Option<crate::model::ExternalAddress>,
4673
4674    /// Optional. A request ID to identify requests. Specify a unique request ID
4675    /// so that if you must retry your request, the server will know to ignore
4676    /// the request if it has already been completed. The server guarantees that a
4677    /// request doesn't result in creation of duplicate commitments for at least 60
4678    /// minutes.
4679    ///
4680    /// For example, consider a situation where you make an initial request and the
4681    /// request times out. If you make the request again with the same request ID,
4682    /// the server can check if the original operation with the same request ID was
4683    /// received, and if so, will ignore the second request. This prevents clients
4684    /// from accidentally creating duplicate commitments.
4685    ///
4686    /// The request ID must be a valid UUID with the exception that zero UUID is
4687    /// not supported (00000000-0000-0000-0000-000000000000).
4688    pub request_id: std::string::String,
4689
4690    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4691}
4692
4693impl UpdateExternalAddressRequest {
4694    pub fn new() -> Self {
4695        std::default::Default::default()
4696    }
4697
4698    /// Sets the value of [update_mask][crate::model::UpdateExternalAddressRequest::update_mask].
4699    pub fn set_update_mask<T>(mut self, v: T) -> Self
4700    where
4701        T: std::convert::Into<wkt::FieldMask>,
4702    {
4703        self.update_mask = std::option::Option::Some(v.into());
4704        self
4705    }
4706
4707    /// Sets or clears the value of [update_mask][crate::model::UpdateExternalAddressRequest::update_mask].
4708    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
4709    where
4710        T: std::convert::Into<wkt::FieldMask>,
4711    {
4712        self.update_mask = v.map(|x| x.into());
4713        self
4714    }
4715
4716    /// Sets the value of [external_address][crate::model::UpdateExternalAddressRequest::external_address].
4717    pub fn set_external_address<T>(mut self, v: T) -> Self
4718    where
4719        T: std::convert::Into<crate::model::ExternalAddress>,
4720    {
4721        self.external_address = std::option::Option::Some(v.into());
4722        self
4723    }
4724
4725    /// Sets or clears the value of [external_address][crate::model::UpdateExternalAddressRequest::external_address].
4726    pub fn set_or_clear_external_address<T>(mut self, v: std::option::Option<T>) -> Self
4727    where
4728        T: std::convert::Into<crate::model::ExternalAddress>,
4729    {
4730        self.external_address = v.map(|x| x.into());
4731        self
4732    }
4733
4734    /// Sets the value of [request_id][crate::model::UpdateExternalAddressRequest::request_id].
4735    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4736        self.request_id = v.into();
4737        self
4738    }
4739}
4740
4741impl wkt::message::Message for UpdateExternalAddressRequest {
4742    fn typename() -> &'static str {
4743        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateExternalAddressRequest"
4744    }
4745}
4746
4747#[doc(hidden)]
4748impl<'de> serde::de::Deserialize<'de> for UpdateExternalAddressRequest {
4749    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4750    where
4751        D: serde::Deserializer<'de>,
4752    {
4753        #[allow(non_camel_case_types)]
4754        #[doc(hidden)]
4755        #[derive(PartialEq, Eq, Hash)]
4756        enum __FieldTag {
4757            __update_mask,
4758            __external_address,
4759            __request_id,
4760            Unknown(std::string::String),
4761        }
4762        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
4763            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4764            where
4765                D: serde::Deserializer<'de>,
4766            {
4767                struct Visitor;
4768                impl<'de> serde::de::Visitor<'de> for Visitor {
4769                    type Value = __FieldTag;
4770                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4771                        formatter.write_str("a field name for UpdateExternalAddressRequest")
4772                    }
4773                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4774                    where
4775                        E: serde::de::Error,
4776                    {
4777                        use std::result::Result::Ok;
4778                        use std::string::ToString;
4779                        match value {
4780                            "updateMask" => Ok(__FieldTag::__update_mask),
4781                            "update_mask" => Ok(__FieldTag::__update_mask),
4782                            "externalAddress" => Ok(__FieldTag::__external_address),
4783                            "external_address" => Ok(__FieldTag::__external_address),
4784                            "requestId" => Ok(__FieldTag::__request_id),
4785                            "request_id" => Ok(__FieldTag::__request_id),
4786                            _ => Ok(__FieldTag::Unknown(value.to_string())),
4787                        }
4788                    }
4789                }
4790                deserializer.deserialize_identifier(Visitor)
4791            }
4792        }
4793        struct Visitor;
4794        impl<'de> serde::de::Visitor<'de> for Visitor {
4795            type Value = UpdateExternalAddressRequest;
4796            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4797                formatter.write_str("struct UpdateExternalAddressRequest")
4798            }
4799            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
4800            where
4801                A: serde::de::MapAccess<'de>,
4802            {
4803                #[allow(unused_imports)]
4804                use serde::de::Error;
4805                use std::option::Option::Some;
4806                let mut fields = std::collections::HashSet::new();
4807                let mut result = Self::Value::new();
4808                while let Some(tag) = map.next_key::<__FieldTag>()? {
4809                    #[allow(clippy::match_single_binding)]
4810                    match tag {
4811                        __FieldTag::__update_mask => {
4812                            if !fields.insert(__FieldTag::__update_mask) {
4813                                return std::result::Result::Err(A::Error::duplicate_field(
4814                                    "multiple values for update_mask",
4815                                ));
4816                            }
4817                            result.update_mask =
4818                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
4819                        }
4820                        __FieldTag::__external_address => {
4821                            if !fields.insert(__FieldTag::__external_address) {
4822                                return std::result::Result::Err(A::Error::duplicate_field(
4823                                    "multiple values for external_address",
4824                                ));
4825                            }
4826                            result.external_address = map
4827                                .next_value::<std::option::Option<crate::model::ExternalAddress>>(
4828                                )?;
4829                        }
4830                        __FieldTag::__request_id => {
4831                            if !fields.insert(__FieldTag::__request_id) {
4832                                return std::result::Result::Err(A::Error::duplicate_field(
4833                                    "multiple values for request_id",
4834                                ));
4835                            }
4836                            result.request_id = map
4837                                .next_value::<std::option::Option<std::string::String>>()?
4838                                .unwrap_or_default();
4839                        }
4840                        __FieldTag::Unknown(key) => {
4841                            let value = map.next_value::<serde_json::Value>()?;
4842                            result._unknown_fields.insert(key, value);
4843                        }
4844                    }
4845                }
4846                std::result::Result::Ok(result)
4847            }
4848        }
4849        deserializer.deserialize_any(Visitor)
4850    }
4851}
4852
4853#[doc(hidden)]
4854impl serde::ser::Serialize for UpdateExternalAddressRequest {
4855    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4856    where
4857        S: serde::ser::Serializer,
4858    {
4859        use serde::ser::SerializeMap;
4860        #[allow(unused_imports)]
4861        use std::option::Option::Some;
4862        let mut state = serializer.serialize_map(std::option::Option::None)?;
4863        if self.update_mask.is_some() {
4864            state.serialize_entry("updateMask", &self.update_mask)?;
4865        }
4866        if self.external_address.is_some() {
4867            state.serialize_entry("externalAddress", &self.external_address)?;
4868        }
4869        if !self.request_id.is_empty() {
4870            state.serialize_entry("requestId", &self.request_id)?;
4871        }
4872        if !self._unknown_fields.is_empty() {
4873            for (key, value) in self._unknown_fields.iter() {
4874                state.serialize_entry(key, &value)?;
4875            }
4876        }
4877        state.end()
4878    }
4879}
4880
4881/// Request message for
4882/// [VmwareEngine.DeleteExternalAddress][google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAddress]
4883///
4884/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAddress]: crate::client::VmwareEngine::delete_external_address
4885#[derive(Clone, Debug, Default, PartialEq)]
4886#[non_exhaustive]
4887pub struct DeleteExternalAddressRequest {
4888    /// Required. The resource name of the external IP address to delete.
4889    /// Resource names are schemeless URIs that follow the conventions in
4890    /// <https://cloud.google.com/apis/design/resource_names>.
4891    /// For example:
4892    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-ip`
4893    pub name: std::string::String,
4894
4895    /// Optional. A request ID to identify requests. Specify a unique request ID
4896    /// so that if you must retry your request, the server will know to ignore
4897    /// the request if it has already been completed. The server guarantees that a
4898    /// request doesn't result in creation of duplicate commitments for at least 60
4899    /// minutes.
4900    ///
4901    /// For example, consider a situation where you make an initial request and the
4902    /// request times out. If you make the request again with the same request
4903    /// ID, the server can check if the original operation with the same request ID
4904    /// was received, and if so, will ignore the second request. This prevents
4905    /// clients from accidentally creating duplicate commitments.
4906    ///
4907    /// The request ID must be a valid UUID with the exception that zero UUID is
4908    /// not supported (00000000-0000-0000-0000-000000000000).
4909    pub request_id: std::string::String,
4910
4911    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4912}
4913
4914impl DeleteExternalAddressRequest {
4915    pub fn new() -> Self {
4916        std::default::Default::default()
4917    }
4918
4919    /// Sets the value of [name][crate::model::DeleteExternalAddressRequest::name].
4920    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4921        self.name = v.into();
4922        self
4923    }
4924
4925    /// Sets the value of [request_id][crate::model::DeleteExternalAddressRequest::request_id].
4926    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4927        self.request_id = v.into();
4928        self
4929    }
4930}
4931
4932impl wkt::message::Message for DeleteExternalAddressRequest {
4933    fn typename() -> &'static str {
4934        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteExternalAddressRequest"
4935    }
4936}
4937
4938#[doc(hidden)]
4939impl<'de> serde::de::Deserialize<'de> for DeleteExternalAddressRequest {
4940    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4941    where
4942        D: serde::Deserializer<'de>,
4943    {
4944        #[allow(non_camel_case_types)]
4945        #[doc(hidden)]
4946        #[derive(PartialEq, Eq, Hash)]
4947        enum __FieldTag {
4948            __name,
4949            __request_id,
4950            Unknown(std::string::String),
4951        }
4952        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
4953            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4954            where
4955                D: serde::Deserializer<'de>,
4956            {
4957                struct Visitor;
4958                impl<'de> serde::de::Visitor<'de> for Visitor {
4959                    type Value = __FieldTag;
4960                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4961                        formatter.write_str("a field name for DeleteExternalAddressRequest")
4962                    }
4963                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4964                    where
4965                        E: serde::de::Error,
4966                    {
4967                        use std::result::Result::Ok;
4968                        use std::string::ToString;
4969                        match value {
4970                            "name" => Ok(__FieldTag::__name),
4971                            "requestId" => Ok(__FieldTag::__request_id),
4972                            "request_id" => Ok(__FieldTag::__request_id),
4973                            _ => Ok(__FieldTag::Unknown(value.to_string())),
4974                        }
4975                    }
4976                }
4977                deserializer.deserialize_identifier(Visitor)
4978            }
4979        }
4980        struct Visitor;
4981        impl<'de> serde::de::Visitor<'de> for Visitor {
4982            type Value = DeleteExternalAddressRequest;
4983            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
4984                formatter.write_str("struct DeleteExternalAddressRequest")
4985            }
4986            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
4987            where
4988                A: serde::de::MapAccess<'de>,
4989            {
4990                #[allow(unused_imports)]
4991                use serde::de::Error;
4992                use std::option::Option::Some;
4993                let mut fields = std::collections::HashSet::new();
4994                let mut result = Self::Value::new();
4995                while let Some(tag) = map.next_key::<__FieldTag>()? {
4996                    #[allow(clippy::match_single_binding)]
4997                    match tag {
4998                        __FieldTag::__name => {
4999                            if !fields.insert(__FieldTag::__name) {
5000                                return std::result::Result::Err(A::Error::duplicate_field(
5001                                    "multiple values for name",
5002                                ));
5003                            }
5004                            result.name = map
5005                                .next_value::<std::option::Option<std::string::String>>()?
5006                                .unwrap_or_default();
5007                        }
5008                        __FieldTag::__request_id => {
5009                            if !fields.insert(__FieldTag::__request_id) {
5010                                return std::result::Result::Err(A::Error::duplicate_field(
5011                                    "multiple values for request_id",
5012                                ));
5013                            }
5014                            result.request_id = map
5015                                .next_value::<std::option::Option<std::string::String>>()?
5016                                .unwrap_or_default();
5017                        }
5018                        __FieldTag::Unknown(key) => {
5019                            let value = map.next_value::<serde_json::Value>()?;
5020                            result._unknown_fields.insert(key, value);
5021                        }
5022                    }
5023                }
5024                std::result::Result::Ok(result)
5025            }
5026        }
5027        deserializer.deserialize_any(Visitor)
5028    }
5029}
5030
5031#[doc(hidden)]
5032impl serde::ser::Serialize for DeleteExternalAddressRequest {
5033    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5034    where
5035        S: serde::ser::Serializer,
5036    {
5037        use serde::ser::SerializeMap;
5038        #[allow(unused_imports)]
5039        use std::option::Option::Some;
5040        let mut state = serializer.serialize_map(std::option::Option::None)?;
5041        if !self.name.is_empty() {
5042            state.serialize_entry("name", &self.name)?;
5043        }
5044        if !self.request_id.is_empty() {
5045            state.serialize_entry("requestId", &self.request_id)?;
5046        }
5047        if !self._unknown_fields.is_empty() {
5048            for (key, value) in self._unknown_fields.iter() {
5049                state.serialize_entry(key, &value)?;
5050            }
5051        }
5052        state.end()
5053    }
5054}
5055
5056/// Request message for
5057/// [VmwareEngine.ListSubnets][google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets]
5058///
5059/// [google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets]: crate::client::VmwareEngine::list_subnets
5060#[derive(Clone, Debug, Default, PartialEq)]
5061#[non_exhaustive]
5062pub struct ListSubnetsRequest {
5063    /// Required. The resource name of the private cloud to be queried for
5064    /// subnets.
5065    /// Resource names are schemeless URIs that follow the conventions in
5066    /// <https://cloud.google.com/apis/design/resource_names>.
5067    /// For example:
5068    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
5069    pub parent: std::string::String,
5070
5071    /// The maximum number of subnets to return in one page.
5072    /// The service may return fewer than this value.
5073    /// The maximum value is coerced to 1000.
5074    /// The default value of this field is 500.
5075    pub page_size: i32,
5076
5077    /// A page token, received from a previous `ListSubnetsRequest` call.
5078    /// Provide this to retrieve the subsequent page.
5079    ///
5080    /// When paginating, all other parameters provided to
5081    /// `ListSubnetsRequest` must match the call that provided the page token.
5082    pub page_token: std::string::String,
5083
5084    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5085}
5086
5087impl ListSubnetsRequest {
5088    pub fn new() -> Self {
5089        std::default::Default::default()
5090    }
5091
5092    /// Sets the value of [parent][crate::model::ListSubnetsRequest::parent].
5093    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5094        self.parent = v.into();
5095        self
5096    }
5097
5098    /// Sets the value of [page_size][crate::model::ListSubnetsRequest::page_size].
5099    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
5100        self.page_size = v.into();
5101        self
5102    }
5103
5104    /// Sets the value of [page_token][crate::model::ListSubnetsRequest::page_token].
5105    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5106        self.page_token = v.into();
5107        self
5108    }
5109}
5110
5111impl wkt::message::Message for ListSubnetsRequest {
5112    fn typename() -> &'static str {
5113        "type.googleapis.com/google.cloud.vmwareengine.v1.ListSubnetsRequest"
5114    }
5115}
5116
5117#[doc(hidden)]
5118impl<'de> serde::de::Deserialize<'de> for ListSubnetsRequest {
5119    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5120    where
5121        D: serde::Deserializer<'de>,
5122    {
5123        #[allow(non_camel_case_types)]
5124        #[doc(hidden)]
5125        #[derive(PartialEq, Eq, Hash)]
5126        enum __FieldTag {
5127            __parent,
5128            __page_size,
5129            __page_token,
5130            Unknown(std::string::String),
5131        }
5132        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
5133            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5134            where
5135                D: serde::Deserializer<'de>,
5136            {
5137                struct Visitor;
5138                impl<'de> serde::de::Visitor<'de> for Visitor {
5139                    type Value = __FieldTag;
5140                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5141                        formatter.write_str("a field name for ListSubnetsRequest")
5142                    }
5143                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5144                    where
5145                        E: serde::de::Error,
5146                    {
5147                        use std::result::Result::Ok;
5148                        use std::string::ToString;
5149                        match value {
5150                            "parent" => Ok(__FieldTag::__parent),
5151                            "pageSize" => Ok(__FieldTag::__page_size),
5152                            "page_size" => Ok(__FieldTag::__page_size),
5153                            "pageToken" => Ok(__FieldTag::__page_token),
5154                            "page_token" => Ok(__FieldTag::__page_token),
5155                            _ => Ok(__FieldTag::Unknown(value.to_string())),
5156                        }
5157                    }
5158                }
5159                deserializer.deserialize_identifier(Visitor)
5160            }
5161        }
5162        struct Visitor;
5163        impl<'de> serde::de::Visitor<'de> for Visitor {
5164            type Value = ListSubnetsRequest;
5165            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5166                formatter.write_str("struct ListSubnetsRequest")
5167            }
5168            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
5169            where
5170                A: serde::de::MapAccess<'de>,
5171            {
5172                #[allow(unused_imports)]
5173                use serde::de::Error;
5174                use std::option::Option::Some;
5175                let mut fields = std::collections::HashSet::new();
5176                let mut result = Self::Value::new();
5177                while let Some(tag) = map.next_key::<__FieldTag>()? {
5178                    #[allow(clippy::match_single_binding)]
5179                    match tag {
5180                        __FieldTag::__parent => {
5181                            if !fields.insert(__FieldTag::__parent) {
5182                                return std::result::Result::Err(A::Error::duplicate_field(
5183                                    "multiple values for parent",
5184                                ));
5185                            }
5186                            result.parent = map
5187                                .next_value::<std::option::Option<std::string::String>>()?
5188                                .unwrap_or_default();
5189                        }
5190                        __FieldTag::__page_size => {
5191                            if !fields.insert(__FieldTag::__page_size) {
5192                                return std::result::Result::Err(A::Error::duplicate_field(
5193                                    "multiple values for page_size",
5194                                ));
5195                            }
5196                            struct __With(std::option::Option<i32>);
5197                            impl<'de> serde::de::Deserialize<'de> for __With {
5198                                fn deserialize<D>(
5199                                    deserializer: D,
5200                                ) -> std::result::Result<Self, D::Error>
5201                                where
5202                                    D: serde::de::Deserializer<'de>,
5203                                {
5204                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
5205                                }
5206                            }
5207                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
5208                        }
5209                        __FieldTag::__page_token => {
5210                            if !fields.insert(__FieldTag::__page_token) {
5211                                return std::result::Result::Err(A::Error::duplicate_field(
5212                                    "multiple values for page_token",
5213                                ));
5214                            }
5215                            result.page_token = map
5216                                .next_value::<std::option::Option<std::string::String>>()?
5217                                .unwrap_or_default();
5218                        }
5219                        __FieldTag::Unknown(key) => {
5220                            let value = map.next_value::<serde_json::Value>()?;
5221                            result._unknown_fields.insert(key, value);
5222                        }
5223                    }
5224                }
5225                std::result::Result::Ok(result)
5226            }
5227        }
5228        deserializer.deserialize_any(Visitor)
5229    }
5230}
5231
5232#[doc(hidden)]
5233impl serde::ser::Serialize for ListSubnetsRequest {
5234    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5235    where
5236        S: serde::ser::Serializer,
5237    {
5238        use serde::ser::SerializeMap;
5239        #[allow(unused_imports)]
5240        use std::option::Option::Some;
5241        let mut state = serializer.serialize_map(std::option::Option::None)?;
5242        if !self.parent.is_empty() {
5243            state.serialize_entry("parent", &self.parent)?;
5244        }
5245        if !wkt::internal::is_default(&self.page_size) {
5246            struct __With<'a>(&'a i32);
5247            impl<'a> serde::ser::Serialize for __With<'a> {
5248                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5249                where
5250                    S: serde::ser::Serializer,
5251                {
5252                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
5253                }
5254            }
5255            state.serialize_entry("pageSize", &__With(&self.page_size))?;
5256        }
5257        if !self.page_token.is_empty() {
5258            state.serialize_entry("pageToken", &self.page_token)?;
5259        }
5260        if !self._unknown_fields.is_empty() {
5261            for (key, value) in self._unknown_fields.iter() {
5262                state.serialize_entry(key, &value)?;
5263            }
5264        }
5265        state.end()
5266    }
5267}
5268
5269/// Response message for
5270/// [VmwareEngine.ListSubnets][google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets]
5271///
5272/// [google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets]: crate::client::VmwareEngine::list_subnets
5273#[derive(Clone, Debug, Default, PartialEq)]
5274#[non_exhaustive]
5275pub struct ListSubnetsResponse {
5276    /// A list of subnets.
5277    pub subnets: std::vec::Vec<crate::model::Subnet>,
5278
5279    /// A token, which can be sent as `page_token` to retrieve the next page.
5280    /// If this field is omitted, there are no subsequent pages.
5281    pub next_page_token: std::string::String,
5282
5283    /// Locations that could not be reached when making an aggregated query using
5284    /// wildcards.
5285    pub unreachable: std::vec::Vec<std::string::String>,
5286
5287    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5288}
5289
5290impl ListSubnetsResponse {
5291    pub fn new() -> Self {
5292        std::default::Default::default()
5293    }
5294
5295    /// Sets the value of [subnets][crate::model::ListSubnetsResponse::subnets].
5296    pub fn set_subnets<T, V>(mut self, v: T) -> Self
5297    where
5298        T: std::iter::IntoIterator<Item = V>,
5299        V: std::convert::Into<crate::model::Subnet>,
5300    {
5301        use std::iter::Iterator;
5302        self.subnets = v.into_iter().map(|i| i.into()).collect();
5303        self
5304    }
5305
5306    /// Sets the value of [next_page_token][crate::model::ListSubnetsResponse::next_page_token].
5307    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5308        self.next_page_token = v.into();
5309        self
5310    }
5311
5312    /// Sets the value of [unreachable][crate::model::ListSubnetsResponse::unreachable].
5313    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
5314    where
5315        T: std::iter::IntoIterator<Item = V>,
5316        V: std::convert::Into<std::string::String>,
5317    {
5318        use std::iter::Iterator;
5319        self.unreachable = v.into_iter().map(|i| i.into()).collect();
5320        self
5321    }
5322}
5323
5324impl wkt::message::Message for ListSubnetsResponse {
5325    fn typename() -> &'static str {
5326        "type.googleapis.com/google.cloud.vmwareengine.v1.ListSubnetsResponse"
5327    }
5328}
5329
5330#[doc(hidden)]
5331impl gax::paginator::internal::PageableResponse for ListSubnetsResponse {
5332    type PageItem = crate::model::Subnet;
5333
5334    fn items(self) -> std::vec::Vec<Self::PageItem> {
5335        self.subnets
5336    }
5337
5338    fn next_page_token(&self) -> std::string::String {
5339        use std::clone::Clone;
5340        self.next_page_token.clone()
5341    }
5342}
5343
5344#[doc(hidden)]
5345impl<'de> serde::de::Deserialize<'de> for ListSubnetsResponse {
5346    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5347    where
5348        D: serde::Deserializer<'de>,
5349    {
5350        #[allow(non_camel_case_types)]
5351        #[doc(hidden)]
5352        #[derive(PartialEq, Eq, Hash)]
5353        enum __FieldTag {
5354            __subnets,
5355            __next_page_token,
5356            __unreachable,
5357            Unknown(std::string::String),
5358        }
5359        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
5360            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5361            where
5362                D: serde::Deserializer<'de>,
5363            {
5364                struct Visitor;
5365                impl<'de> serde::de::Visitor<'de> for Visitor {
5366                    type Value = __FieldTag;
5367                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5368                        formatter.write_str("a field name for ListSubnetsResponse")
5369                    }
5370                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5371                    where
5372                        E: serde::de::Error,
5373                    {
5374                        use std::result::Result::Ok;
5375                        use std::string::ToString;
5376                        match value {
5377                            "subnets" => Ok(__FieldTag::__subnets),
5378                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
5379                            "next_page_token" => Ok(__FieldTag::__next_page_token),
5380                            "unreachable" => Ok(__FieldTag::__unreachable),
5381                            _ => Ok(__FieldTag::Unknown(value.to_string())),
5382                        }
5383                    }
5384                }
5385                deserializer.deserialize_identifier(Visitor)
5386            }
5387        }
5388        struct Visitor;
5389        impl<'de> serde::de::Visitor<'de> for Visitor {
5390            type Value = ListSubnetsResponse;
5391            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5392                formatter.write_str("struct ListSubnetsResponse")
5393            }
5394            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
5395            where
5396                A: serde::de::MapAccess<'de>,
5397            {
5398                #[allow(unused_imports)]
5399                use serde::de::Error;
5400                use std::option::Option::Some;
5401                let mut fields = std::collections::HashSet::new();
5402                let mut result = Self::Value::new();
5403                while let Some(tag) = map.next_key::<__FieldTag>()? {
5404                    #[allow(clippy::match_single_binding)]
5405                    match tag {
5406                        __FieldTag::__subnets => {
5407                            if !fields.insert(__FieldTag::__subnets) {
5408                                return std::result::Result::Err(A::Error::duplicate_field(
5409                                    "multiple values for subnets",
5410                                ));
5411                            }
5412                            result.subnets = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Subnet>>>()?.unwrap_or_default();
5413                        }
5414                        __FieldTag::__next_page_token => {
5415                            if !fields.insert(__FieldTag::__next_page_token) {
5416                                return std::result::Result::Err(A::Error::duplicate_field(
5417                                    "multiple values for next_page_token",
5418                                ));
5419                            }
5420                            result.next_page_token = map
5421                                .next_value::<std::option::Option<std::string::String>>()?
5422                                .unwrap_or_default();
5423                        }
5424                        __FieldTag::__unreachable => {
5425                            if !fields.insert(__FieldTag::__unreachable) {
5426                                return std::result::Result::Err(A::Error::duplicate_field(
5427                                    "multiple values for unreachable",
5428                                ));
5429                            }
5430                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
5431                        }
5432                        __FieldTag::Unknown(key) => {
5433                            let value = map.next_value::<serde_json::Value>()?;
5434                            result._unknown_fields.insert(key, value);
5435                        }
5436                    }
5437                }
5438                std::result::Result::Ok(result)
5439            }
5440        }
5441        deserializer.deserialize_any(Visitor)
5442    }
5443}
5444
5445#[doc(hidden)]
5446impl serde::ser::Serialize for ListSubnetsResponse {
5447    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5448    where
5449        S: serde::ser::Serializer,
5450    {
5451        use serde::ser::SerializeMap;
5452        #[allow(unused_imports)]
5453        use std::option::Option::Some;
5454        let mut state = serializer.serialize_map(std::option::Option::None)?;
5455        if !self.subnets.is_empty() {
5456            state.serialize_entry("subnets", &self.subnets)?;
5457        }
5458        if !self.next_page_token.is_empty() {
5459            state.serialize_entry("nextPageToken", &self.next_page_token)?;
5460        }
5461        if !self.unreachable.is_empty() {
5462            state.serialize_entry("unreachable", &self.unreachable)?;
5463        }
5464        if !self._unknown_fields.is_empty() {
5465            for (key, value) in self._unknown_fields.iter() {
5466                state.serialize_entry(key, &value)?;
5467            }
5468        }
5469        state.end()
5470    }
5471}
5472
5473/// Request message for
5474/// [VmwareEngine.GetSubnet][google.cloud.vmwareengine.v1.VmwareEngine.GetSubnet]
5475///
5476/// [google.cloud.vmwareengine.v1.VmwareEngine.GetSubnet]: crate::client::VmwareEngine::get_subnet
5477#[derive(Clone, Debug, Default, PartialEq)]
5478#[non_exhaustive]
5479pub struct GetSubnetRequest {
5480    /// Required. The resource name of the subnet to retrieve.
5481    /// Resource names are schemeless URIs that follow the conventions in
5482    /// <https://cloud.google.com/apis/design/resource_names>.
5483    /// For example:
5484    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/subnets/my-subnet`
5485    pub name: std::string::String,
5486
5487    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5488}
5489
5490impl GetSubnetRequest {
5491    pub fn new() -> Self {
5492        std::default::Default::default()
5493    }
5494
5495    /// Sets the value of [name][crate::model::GetSubnetRequest::name].
5496    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5497        self.name = v.into();
5498        self
5499    }
5500}
5501
5502impl wkt::message::Message for GetSubnetRequest {
5503    fn typename() -> &'static str {
5504        "type.googleapis.com/google.cloud.vmwareengine.v1.GetSubnetRequest"
5505    }
5506}
5507
5508#[doc(hidden)]
5509impl<'de> serde::de::Deserialize<'de> for GetSubnetRequest {
5510    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5511    where
5512        D: serde::Deserializer<'de>,
5513    {
5514        #[allow(non_camel_case_types)]
5515        #[doc(hidden)]
5516        #[derive(PartialEq, Eq, Hash)]
5517        enum __FieldTag {
5518            __name,
5519            Unknown(std::string::String),
5520        }
5521        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
5522            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5523            where
5524                D: serde::Deserializer<'de>,
5525            {
5526                struct Visitor;
5527                impl<'de> serde::de::Visitor<'de> for Visitor {
5528                    type Value = __FieldTag;
5529                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5530                        formatter.write_str("a field name for GetSubnetRequest")
5531                    }
5532                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5533                    where
5534                        E: serde::de::Error,
5535                    {
5536                        use std::result::Result::Ok;
5537                        use std::string::ToString;
5538                        match value {
5539                            "name" => Ok(__FieldTag::__name),
5540                            _ => Ok(__FieldTag::Unknown(value.to_string())),
5541                        }
5542                    }
5543                }
5544                deserializer.deserialize_identifier(Visitor)
5545            }
5546        }
5547        struct Visitor;
5548        impl<'de> serde::de::Visitor<'de> for Visitor {
5549            type Value = GetSubnetRequest;
5550            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5551                formatter.write_str("struct GetSubnetRequest")
5552            }
5553            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
5554            where
5555                A: serde::de::MapAccess<'de>,
5556            {
5557                #[allow(unused_imports)]
5558                use serde::de::Error;
5559                use std::option::Option::Some;
5560                let mut fields = std::collections::HashSet::new();
5561                let mut result = Self::Value::new();
5562                while let Some(tag) = map.next_key::<__FieldTag>()? {
5563                    #[allow(clippy::match_single_binding)]
5564                    match tag {
5565                        __FieldTag::__name => {
5566                            if !fields.insert(__FieldTag::__name) {
5567                                return std::result::Result::Err(A::Error::duplicate_field(
5568                                    "multiple values for name",
5569                                ));
5570                            }
5571                            result.name = map
5572                                .next_value::<std::option::Option<std::string::String>>()?
5573                                .unwrap_or_default();
5574                        }
5575                        __FieldTag::Unknown(key) => {
5576                            let value = map.next_value::<serde_json::Value>()?;
5577                            result._unknown_fields.insert(key, value);
5578                        }
5579                    }
5580                }
5581                std::result::Result::Ok(result)
5582            }
5583        }
5584        deserializer.deserialize_any(Visitor)
5585    }
5586}
5587
5588#[doc(hidden)]
5589impl serde::ser::Serialize for GetSubnetRequest {
5590    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5591    where
5592        S: serde::ser::Serializer,
5593    {
5594        use serde::ser::SerializeMap;
5595        #[allow(unused_imports)]
5596        use std::option::Option::Some;
5597        let mut state = serializer.serialize_map(std::option::Option::None)?;
5598        if !self.name.is_empty() {
5599            state.serialize_entry("name", &self.name)?;
5600        }
5601        if !self._unknown_fields.is_empty() {
5602            for (key, value) in self._unknown_fields.iter() {
5603                state.serialize_entry(key, &value)?;
5604            }
5605        }
5606        state.end()
5607    }
5608}
5609
5610/// Request message for
5611/// [VmwareEngine.UpdateSubnet][google.cloud.vmwareengine.v1.VmwareEngine.UpdateSubnet]
5612///
5613/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateSubnet]: crate::client::VmwareEngine::update_subnet
5614#[derive(Clone, Debug, Default, PartialEq)]
5615#[non_exhaustive]
5616pub struct UpdateSubnetRequest {
5617    /// Required. Field mask is used to specify the fields to be overwritten in the
5618    /// `Subnet` resource by the update.
5619    /// The fields specified in the `update_mask` are relative to the resource, not
5620    /// the full request. A field will be overwritten if it is in the mask. If the
5621    /// user does not provide a mask then all fields will be overwritten.
5622    pub update_mask: std::option::Option<wkt::FieldMask>,
5623
5624    /// Required. Subnet description.
5625    pub subnet: std::option::Option<crate::model::Subnet>,
5626
5627    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5628}
5629
5630impl UpdateSubnetRequest {
5631    pub fn new() -> Self {
5632        std::default::Default::default()
5633    }
5634
5635    /// Sets the value of [update_mask][crate::model::UpdateSubnetRequest::update_mask].
5636    pub fn set_update_mask<T>(mut self, v: T) -> Self
5637    where
5638        T: std::convert::Into<wkt::FieldMask>,
5639    {
5640        self.update_mask = std::option::Option::Some(v.into());
5641        self
5642    }
5643
5644    /// Sets or clears the value of [update_mask][crate::model::UpdateSubnetRequest::update_mask].
5645    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
5646    where
5647        T: std::convert::Into<wkt::FieldMask>,
5648    {
5649        self.update_mask = v.map(|x| x.into());
5650        self
5651    }
5652
5653    /// Sets the value of [subnet][crate::model::UpdateSubnetRequest::subnet].
5654    pub fn set_subnet<T>(mut self, v: T) -> Self
5655    where
5656        T: std::convert::Into<crate::model::Subnet>,
5657    {
5658        self.subnet = std::option::Option::Some(v.into());
5659        self
5660    }
5661
5662    /// Sets or clears the value of [subnet][crate::model::UpdateSubnetRequest::subnet].
5663    pub fn set_or_clear_subnet<T>(mut self, v: std::option::Option<T>) -> Self
5664    where
5665        T: std::convert::Into<crate::model::Subnet>,
5666    {
5667        self.subnet = v.map(|x| x.into());
5668        self
5669    }
5670}
5671
5672impl wkt::message::Message for UpdateSubnetRequest {
5673    fn typename() -> &'static str {
5674        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateSubnetRequest"
5675    }
5676}
5677
5678#[doc(hidden)]
5679impl<'de> serde::de::Deserialize<'de> for UpdateSubnetRequest {
5680    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5681    where
5682        D: serde::Deserializer<'de>,
5683    {
5684        #[allow(non_camel_case_types)]
5685        #[doc(hidden)]
5686        #[derive(PartialEq, Eq, Hash)]
5687        enum __FieldTag {
5688            __update_mask,
5689            __subnet,
5690            Unknown(std::string::String),
5691        }
5692        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
5693            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5694            where
5695                D: serde::Deserializer<'de>,
5696            {
5697                struct Visitor;
5698                impl<'de> serde::de::Visitor<'de> for Visitor {
5699                    type Value = __FieldTag;
5700                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5701                        formatter.write_str("a field name for UpdateSubnetRequest")
5702                    }
5703                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5704                    where
5705                        E: serde::de::Error,
5706                    {
5707                        use std::result::Result::Ok;
5708                        use std::string::ToString;
5709                        match value {
5710                            "updateMask" => Ok(__FieldTag::__update_mask),
5711                            "update_mask" => Ok(__FieldTag::__update_mask),
5712                            "subnet" => Ok(__FieldTag::__subnet),
5713                            _ => Ok(__FieldTag::Unknown(value.to_string())),
5714                        }
5715                    }
5716                }
5717                deserializer.deserialize_identifier(Visitor)
5718            }
5719        }
5720        struct Visitor;
5721        impl<'de> serde::de::Visitor<'de> for Visitor {
5722            type Value = UpdateSubnetRequest;
5723            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5724                formatter.write_str("struct UpdateSubnetRequest")
5725            }
5726            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
5727            where
5728                A: serde::de::MapAccess<'de>,
5729            {
5730                #[allow(unused_imports)]
5731                use serde::de::Error;
5732                use std::option::Option::Some;
5733                let mut fields = std::collections::HashSet::new();
5734                let mut result = Self::Value::new();
5735                while let Some(tag) = map.next_key::<__FieldTag>()? {
5736                    #[allow(clippy::match_single_binding)]
5737                    match tag {
5738                        __FieldTag::__update_mask => {
5739                            if !fields.insert(__FieldTag::__update_mask) {
5740                                return std::result::Result::Err(A::Error::duplicate_field(
5741                                    "multiple values for update_mask",
5742                                ));
5743                            }
5744                            result.update_mask =
5745                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
5746                        }
5747                        __FieldTag::__subnet => {
5748                            if !fields.insert(__FieldTag::__subnet) {
5749                                return std::result::Result::Err(A::Error::duplicate_field(
5750                                    "multiple values for subnet",
5751                                ));
5752                            }
5753                            result.subnet =
5754                                map.next_value::<std::option::Option<crate::model::Subnet>>()?;
5755                        }
5756                        __FieldTag::Unknown(key) => {
5757                            let value = map.next_value::<serde_json::Value>()?;
5758                            result._unknown_fields.insert(key, value);
5759                        }
5760                    }
5761                }
5762                std::result::Result::Ok(result)
5763            }
5764        }
5765        deserializer.deserialize_any(Visitor)
5766    }
5767}
5768
5769#[doc(hidden)]
5770impl serde::ser::Serialize for UpdateSubnetRequest {
5771    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5772    where
5773        S: serde::ser::Serializer,
5774    {
5775        use serde::ser::SerializeMap;
5776        #[allow(unused_imports)]
5777        use std::option::Option::Some;
5778        let mut state = serializer.serialize_map(std::option::Option::None)?;
5779        if self.update_mask.is_some() {
5780            state.serialize_entry("updateMask", &self.update_mask)?;
5781        }
5782        if self.subnet.is_some() {
5783            state.serialize_entry("subnet", &self.subnet)?;
5784        }
5785        if !self._unknown_fields.is_empty() {
5786            for (key, value) in self._unknown_fields.iter() {
5787                state.serialize_entry(key, &value)?;
5788            }
5789        }
5790        state.end()
5791    }
5792}
5793
5794/// Request message for
5795/// [VmwareEngine.ListExternalAccessRules][google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules]
5796///
5797/// [google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules]: crate::client::VmwareEngine::list_external_access_rules
5798#[derive(Clone, Debug, Default, PartialEq)]
5799#[non_exhaustive]
5800pub struct ListExternalAccessRulesRequest {
5801    /// Required. The resource name of the network policy to query for external
5802    /// access firewall rules. Resource names are schemeless URIs that follow the
5803    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
5804    /// example:
5805    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
5806    pub parent: std::string::String,
5807
5808    /// The maximum number of external access rules to return in one page.
5809    /// The service may return fewer than this value.
5810    /// The maximum value is coerced to 1000.
5811    /// The default value of this field is 500.
5812    pub page_size: i32,
5813
5814    /// A page token, received from a previous `ListExternalAccessRulesRequest`
5815    /// call. Provide this to retrieve the subsequent page.
5816    ///
5817    /// When paginating, all other parameters provided to
5818    /// `ListExternalAccessRulesRequest` must match the call that provided the page
5819    /// token.
5820    pub page_token: std::string::String,
5821
5822    /// A filter expression that matches resources returned in the response.
5823    /// The expression must specify the field name, a comparison
5824    /// operator, and the value that you want to use for filtering. The value
5825    /// must be a string, a number, or a boolean. The comparison operator
5826    /// must be `=`, `!=`, `>`, or `<`.
5827    ///
5828    /// For example, if you are filtering a list of external access rules, you can
5829    /// exclude the ones named `example-rule` by specifying
5830    /// `name != "example-rule"`.
5831    ///
5832    /// To filter on multiple expressions, provide each separate expression within
5833    /// parentheses. For example:
5834    ///
5835    /// ```norust
5836    /// (name = "example-rule")
5837    /// (createTime > "2021-04-12T08:15:10.40Z")
5838    /// ```
5839    ///
5840    /// By default, each expression is an `AND` expression. However, you
5841    /// can include `AND` and `OR` expressions explicitly.
5842    /// For example:
5843    ///
5844    /// ```norust
5845    /// (name = "example-rule-1") AND
5846    /// (createTime > "2021-04-12T08:15:10.40Z") OR
5847    /// (name = "example-rule-2")
5848    /// ```
5849    pub filter: std::string::String,
5850
5851    /// Sorts list results by a certain order. By default, returned results
5852    /// are ordered by `name` in ascending order.
5853    /// You can also sort results in descending order based on the `name` value
5854    /// using `orderBy="name desc"`.
5855    /// Currently, only ordering by `name` is supported.
5856    pub order_by: std::string::String,
5857
5858    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5859}
5860
5861impl ListExternalAccessRulesRequest {
5862    pub fn new() -> Self {
5863        std::default::Default::default()
5864    }
5865
5866    /// Sets the value of [parent][crate::model::ListExternalAccessRulesRequest::parent].
5867    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5868        self.parent = v.into();
5869        self
5870    }
5871
5872    /// Sets the value of [page_size][crate::model::ListExternalAccessRulesRequest::page_size].
5873    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
5874        self.page_size = v.into();
5875        self
5876    }
5877
5878    /// Sets the value of [page_token][crate::model::ListExternalAccessRulesRequest::page_token].
5879    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5880        self.page_token = v.into();
5881        self
5882    }
5883
5884    /// Sets the value of [filter][crate::model::ListExternalAccessRulesRequest::filter].
5885    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5886        self.filter = v.into();
5887        self
5888    }
5889
5890    /// Sets the value of [order_by][crate::model::ListExternalAccessRulesRequest::order_by].
5891    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5892        self.order_by = v.into();
5893        self
5894    }
5895}
5896
5897impl wkt::message::Message for ListExternalAccessRulesRequest {
5898    fn typename() -> &'static str {
5899        "type.googleapis.com/google.cloud.vmwareengine.v1.ListExternalAccessRulesRequest"
5900    }
5901}
5902
5903#[doc(hidden)]
5904impl<'de> serde::de::Deserialize<'de> for ListExternalAccessRulesRequest {
5905    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5906    where
5907        D: serde::Deserializer<'de>,
5908    {
5909        #[allow(non_camel_case_types)]
5910        #[doc(hidden)]
5911        #[derive(PartialEq, Eq, Hash)]
5912        enum __FieldTag {
5913            __parent,
5914            __page_size,
5915            __page_token,
5916            __filter,
5917            __order_by,
5918            Unknown(std::string::String),
5919        }
5920        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
5921            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5922            where
5923                D: serde::Deserializer<'de>,
5924            {
5925                struct Visitor;
5926                impl<'de> serde::de::Visitor<'de> for Visitor {
5927                    type Value = __FieldTag;
5928                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5929                        formatter.write_str("a field name for ListExternalAccessRulesRequest")
5930                    }
5931                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
5932                    where
5933                        E: serde::de::Error,
5934                    {
5935                        use std::result::Result::Ok;
5936                        use std::string::ToString;
5937                        match value {
5938                            "parent" => Ok(__FieldTag::__parent),
5939                            "pageSize" => Ok(__FieldTag::__page_size),
5940                            "page_size" => Ok(__FieldTag::__page_size),
5941                            "pageToken" => Ok(__FieldTag::__page_token),
5942                            "page_token" => Ok(__FieldTag::__page_token),
5943                            "filter" => Ok(__FieldTag::__filter),
5944                            "orderBy" => Ok(__FieldTag::__order_by),
5945                            "order_by" => Ok(__FieldTag::__order_by),
5946                            _ => Ok(__FieldTag::Unknown(value.to_string())),
5947                        }
5948                    }
5949                }
5950                deserializer.deserialize_identifier(Visitor)
5951            }
5952        }
5953        struct Visitor;
5954        impl<'de> serde::de::Visitor<'de> for Visitor {
5955            type Value = ListExternalAccessRulesRequest;
5956            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
5957                formatter.write_str("struct ListExternalAccessRulesRequest")
5958            }
5959            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
5960            where
5961                A: serde::de::MapAccess<'de>,
5962            {
5963                #[allow(unused_imports)]
5964                use serde::de::Error;
5965                use std::option::Option::Some;
5966                let mut fields = std::collections::HashSet::new();
5967                let mut result = Self::Value::new();
5968                while let Some(tag) = map.next_key::<__FieldTag>()? {
5969                    #[allow(clippy::match_single_binding)]
5970                    match tag {
5971                        __FieldTag::__parent => {
5972                            if !fields.insert(__FieldTag::__parent) {
5973                                return std::result::Result::Err(A::Error::duplicate_field(
5974                                    "multiple values for parent",
5975                                ));
5976                            }
5977                            result.parent = map
5978                                .next_value::<std::option::Option<std::string::String>>()?
5979                                .unwrap_or_default();
5980                        }
5981                        __FieldTag::__page_size => {
5982                            if !fields.insert(__FieldTag::__page_size) {
5983                                return std::result::Result::Err(A::Error::duplicate_field(
5984                                    "multiple values for page_size",
5985                                ));
5986                            }
5987                            struct __With(std::option::Option<i32>);
5988                            impl<'de> serde::de::Deserialize<'de> for __With {
5989                                fn deserialize<D>(
5990                                    deserializer: D,
5991                                ) -> std::result::Result<Self, D::Error>
5992                                where
5993                                    D: serde::de::Deserializer<'de>,
5994                                {
5995                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
5996                                }
5997                            }
5998                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
5999                        }
6000                        __FieldTag::__page_token => {
6001                            if !fields.insert(__FieldTag::__page_token) {
6002                                return std::result::Result::Err(A::Error::duplicate_field(
6003                                    "multiple values for page_token",
6004                                ));
6005                            }
6006                            result.page_token = map
6007                                .next_value::<std::option::Option<std::string::String>>()?
6008                                .unwrap_or_default();
6009                        }
6010                        __FieldTag::__filter => {
6011                            if !fields.insert(__FieldTag::__filter) {
6012                                return std::result::Result::Err(A::Error::duplicate_field(
6013                                    "multiple values for filter",
6014                                ));
6015                            }
6016                            result.filter = map
6017                                .next_value::<std::option::Option<std::string::String>>()?
6018                                .unwrap_or_default();
6019                        }
6020                        __FieldTag::__order_by => {
6021                            if !fields.insert(__FieldTag::__order_by) {
6022                                return std::result::Result::Err(A::Error::duplicate_field(
6023                                    "multiple values for order_by",
6024                                ));
6025                            }
6026                            result.order_by = map
6027                                .next_value::<std::option::Option<std::string::String>>()?
6028                                .unwrap_or_default();
6029                        }
6030                        __FieldTag::Unknown(key) => {
6031                            let value = map.next_value::<serde_json::Value>()?;
6032                            result._unknown_fields.insert(key, value);
6033                        }
6034                    }
6035                }
6036                std::result::Result::Ok(result)
6037            }
6038        }
6039        deserializer.deserialize_any(Visitor)
6040    }
6041}
6042
6043#[doc(hidden)]
6044impl serde::ser::Serialize for ListExternalAccessRulesRequest {
6045    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6046    where
6047        S: serde::ser::Serializer,
6048    {
6049        use serde::ser::SerializeMap;
6050        #[allow(unused_imports)]
6051        use std::option::Option::Some;
6052        let mut state = serializer.serialize_map(std::option::Option::None)?;
6053        if !self.parent.is_empty() {
6054            state.serialize_entry("parent", &self.parent)?;
6055        }
6056        if !wkt::internal::is_default(&self.page_size) {
6057            struct __With<'a>(&'a i32);
6058            impl<'a> serde::ser::Serialize for __With<'a> {
6059                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6060                where
6061                    S: serde::ser::Serializer,
6062                {
6063                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
6064                }
6065            }
6066            state.serialize_entry("pageSize", &__With(&self.page_size))?;
6067        }
6068        if !self.page_token.is_empty() {
6069            state.serialize_entry("pageToken", &self.page_token)?;
6070        }
6071        if !self.filter.is_empty() {
6072            state.serialize_entry("filter", &self.filter)?;
6073        }
6074        if !self.order_by.is_empty() {
6075            state.serialize_entry("orderBy", &self.order_by)?;
6076        }
6077        if !self._unknown_fields.is_empty() {
6078            for (key, value) in self._unknown_fields.iter() {
6079                state.serialize_entry(key, &value)?;
6080            }
6081        }
6082        state.end()
6083    }
6084}
6085
6086/// Response message for
6087/// [VmwareEngine.ListExternalAccessRules][google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules]
6088///
6089/// [google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules]: crate::client::VmwareEngine::list_external_access_rules
6090#[derive(Clone, Debug, Default, PartialEq)]
6091#[non_exhaustive]
6092pub struct ListExternalAccessRulesResponse {
6093    /// A list of external access firewall rules.
6094    pub external_access_rules: std::vec::Vec<crate::model::ExternalAccessRule>,
6095
6096    /// A token, which can be sent as `page_token` to retrieve the next page.
6097    /// If this field is omitted, there are no subsequent pages.
6098    pub next_page_token: std::string::String,
6099
6100    /// Locations that could not be reached when making an aggregated query using
6101    /// wildcards.
6102    pub unreachable: std::vec::Vec<std::string::String>,
6103
6104    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6105}
6106
6107impl ListExternalAccessRulesResponse {
6108    pub fn new() -> Self {
6109        std::default::Default::default()
6110    }
6111
6112    /// Sets the value of [external_access_rules][crate::model::ListExternalAccessRulesResponse::external_access_rules].
6113    pub fn set_external_access_rules<T, V>(mut self, v: T) -> Self
6114    where
6115        T: std::iter::IntoIterator<Item = V>,
6116        V: std::convert::Into<crate::model::ExternalAccessRule>,
6117    {
6118        use std::iter::Iterator;
6119        self.external_access_rules = v.into_iter().map(|i| i.into()).collect();
6120        self
6121    }
6122
6123    /// Sets the value of [next_page_token][crate::model::ListExternalAccessRulesResponse::next_page_token].
6124    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6125        self.next_page_token = v.into();
6126        self
6127    }
6128
6129    /// Sets the value of [unreachable][crate::model::ListExternalAccessRulesResponse::unreachable].
6130    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
6131    where
6132        T: std::iter::IntoIterator<Item = V>,
6133        V: std::convert::Into<std::string::String>,
6134    {
6135        use std::iter::Iterator;
6136        self.unreachable = v.into_iter().map(|i| i.into()).collect();
6137        self
6138    }
6139}
6140
6141impl wkt::message::Message for ListExternalAccessRulesResponse {
6142    fn typename() -> &'static str {
6143        "type.googleapis.com/google.cloud.vmwareengine.v1.ListExternalAccessRulesResponse"
6144    }
6145}
6146
6147#[doc(hidden)]
6148impl gax::paginator::internal::PageableResponse for ListExternalAccessRulesResponse {
6149    type PageItem = crate::model::ExternalAccessRule;
6150
6151    fn items(self) -> std::vec::Vec<Self::PageItem> {
6152        self.external_access_rules
6153    }
6154
6155    fn next_page_token(&self) -> std::string::String {
6156        use std::clone::Clone;
6157        self.next_page_token.clone()
6158    }
6159}
6160
6161#[doc(hidden)]
6162impl<'de> serde::de::Deserialize<'de> for ListExternalAccessRulesResponse {
6163    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6164    where
6165        D: serde::Deserializer<'de>,
6166    {
6167        #[allow(non_camel_case_types)]
6168        #[doc(hidden)]
6169        #[derive(PartialEq, Eq, Hash)]
6170        enum __FieldTag {
6171            __external_access_rules,
6172            __next_page_token,
6173            __unreachable,
6174            Unknown(std::string::String),
6175        }
6176        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
6177            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6178            where
6179                D: serde::Deserializer<'de>,
6180            {
6181                struct Visitor;
6182                impl<'de> serde::de::Visitor<'de> for Visitor {
6183                    type Value = __FieldTag;
6184                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6185                        formatter.write_str("a field name for ListExternalAccessRulesResponse")
6186                    }
6187                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6188                    where
6189                        E: serde::de::Error,
6190                    {
6191                        use std::result::Result::Ok;
6192                        use std::string::ToString;
6193                        match value {
6194                            "externalAccessRules" => Ok(__FieldTag::__external_access_rules),
6195                            "external_access_rules" => Ok(__FieldTag::__external_access_rules),
6196                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
6197                            "next_page_token" => Ok(__FieldTag::__next_page_token),
6198                            "unreachable" => Ok(__FieldTag::__unreachable),
6199                            _ => Ok(__FieldTag::Unknown(value.to_string())),
6200                        }
6201                    }
6202                }
6203                deserializer.deserialize_identifier(Visitor)
6204            }
6205        }
6206        struct Visitor;
6207        impl<'de> serde::de::Visitor<'de> for Visitor {
6208            type Value = ListExternalAccessRulesResponse;
6209            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6210                formatter.write_str("struct ListExternalAccessRulesResponse")
6211            }
6212            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
6213            where
6214                A: serde::de::MapAccess<'de>,
6215            {
6216                #[allow(unused_imports)]
6217                use serde::de::Error;
6218                use std::option::Option::Some;
6219                let mut fields = std::collections::HashSet::new();
6220                let mut result = Self::Value::new();
6221                while let Some(tag) = map.next_key::<__FieldTag>()? {
6222                    #[allow(clippy::match_single_binding)]
6223                    match tag {
6224                        __FieldTag::__external_access_rules => {
6225                            if !fields.insert(__FieldTag::__external_access_rules) {
6226                                return std::result::Result::Err(A::Error::duplicate_field(
6227                                    "multiple values for external_access_rules",
6228                                ));
6229                            }
6230                            result.external_access_rules = map
6231                                .next_value::<std::option::Option<
6232                                    std::vec::Vec<crate::model::ExternalAccessRule>,
6233                                >>()?
6234                                .unwrap_or_default();
6235                        }
6236                        __FieldTag::__next_page_token => {
6237                            if !fields.insert(__FieldTag::__next_page_token) {
6238                                return std::result::Result::Err(A::Error::duplicate_field(
6239                                    "multiple values for next_page_token",
6240                                ));
6241                            }
6242                            result.next_page_token = map
6243                                .next_value::<std::option::Option<std::string::String>>()?
6244                                .unwrap_or_default();
6245                        }
6246                        __FieldTag::__unreachable => {
6247                            if !fields.insert(__FieldTag::__unreachable) {
6248                                return std::result::Result::Err(A::Error::duplicate_field(
6249                                    "multiple values for unreachable",
6250                                ));
6251                            }
6252                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
6253                        }
6254                        __FieldTag::Unknown(key) => {
6255                            let value = map.next_value::<serde_json::Value>()?;
6256                            result._unknown_fields.insert(key, value);
6257                        }
6258                    }
6259                }
6260                std::result::Result::Ok(result)
6261            }
6262        }
6263        deserializer.deserialize_any(Visitor)
6264    }
6265}
6266
6267#[doc(hidden)]
6268impl serde::ser::Serialize for ListExternalAccessRulesResponse {
6269    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6270    where
6271        S: serde::ser::Serializer,
6272    {
6273        use serde::ser::SerializeMap;
6274        #[allow(unused_imports)]
6275        use std::option::Option::Some;
6276        let mut state = serializer.serialize_map(std::option::Option::None)?;
6277        if !self.external_access_rules.is_empty() {
6278            state.serialize_entry("externalAccessRules", &self.external_access_rules)?;
6279        }
6280        if !self.next_page_token.is_empty() {
6281            state.serialize_entry("nextPageToken", &self.next_page_token)?;
6282        }
6283        if !self.unreachable.is_empty() {
6284            state.serialize_entry("unreachable", &self.unreachable)?;
6285        }
6286        if !self._unknown_fields.is_empty() {
6287            for (key, value) in self._unknown_fields.iter() {
6288                state.serialize_entry(key, &value)?;
6289            }
6290        }
6291        state.end()
6292    }
6293}
6294
6295/// Request message for
6296/// [VmwareEngine.GetExternalAccessRule][google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAccessRule]
6297///
6298/// [google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAccessRule]: crate::client::VmwareEngine::get_external_access_rule
6299#[derive(Clone, Debug, Default, PartialEq)]
6300#[non_exhaustive]
6301pub struct GetExternalAccessRuleRequest {
6302    /// Required. The resource name of the external access firewall rule to
6303    /// retrieve. Resource names are schemeless URIs that follow the conventions in
6304    /// <https://cloud.google.com/apis/design/resource_names>.
6305    /// For example:
6306    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
6307    pub name: std::string::String,
6308
6309    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6310}
6311
6312impl GetExternalAccessRuleRequest {
6313    pub fn new() -> Self {
6314        std::default::Default::default()
6315    }
6316
6317    /// Sets the value of [name][crate::model::GetExternalAccessRuleRequest::name].
6318    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6319        self.name = v.into();
6320        self
6321    }
6322}
6323
6324impl wkt::message::Message for GetExternalAccessRuleRequest {
6325    fn typename() -> &'static str {
6326        "type.googleapis.com/google.cloud.vmwareengine.v1.GetExternalAccessRuleRequest"
6327    }
6328}
6329
6330#[doc(hidden)]
6331impl<'de> serde::de::Deserialize<'de> for GetExternalAccessRuleRequest {
6332    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6333    where
6334        D: serde::Deserializer<'de>,
6335    {
6336        #[allow(non_camel_case_types)]
6337        #[doc(hidden)]
6338        #[derive(PartialEq, Eq, Hash)]
6339        enum __FieldTag {
6340            __name,
6341            Unknown(std::string::String),
6342        }
6343        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
6344            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6345            where
6346                D: serde::Deserializer<'de>,
6347            {
6348                struct Visitor;
6349                impl<'de> serde::de::Visitor<'de> for Visitor {
6350                    type Value = __FieldTag;
6351                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6352                        formatter.write_str("a field name for GetExternalAccessRuleRequest")
6353                    }
6354                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6355                    where
6356                        E: serde::de::Error,
6357                    {
6358                        use std::result::Result::Ok;
6359                        use std::string::ToString;
6360                        match value {
6361                            "name" => Ok(__FieldTag::__name),
6362                            _ => Ok(__FieldTag::Unknown(value.to_string())),
6363                        }
6364                    }
6365                }
6366                deserializer.deserialize_identifier(Visitor)
6367            }
6368        }
6369        struct Visitor;
6370        impl<'de> serde::de::Visitor<'de> for Visitor {
6371            type Value = GetExternalAccessRuleRequest;
6372            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6373                formatter.write_str("struct GetExternalAccessRuleRequest")
6374            }
6375            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
6376            where
6377                A: serde::de::MapAccess<'de>,
6378            {
6379                #[allow(unused_imports)]
6380                use serde::de::Error;
6381                use std::option::Option::Some;
6382                let mut fields = std::collections::HashSet::new();
6383                let mut result = Self::Value::new();
6384                while let Some(tag) = map.next_key::<__FieldTag>()? {
6385                    #[allow(clippy::match_single_binding)]
6386                    match tag {
6387                        __FieldTag::__name => {
6388                            if !fields.insert(__FieldTag::__name) {
6389                                return std::result::Result::Err(A::Error::duplicate_field(
6390                                    "multiple values for name",
6391                                ));
6392                            }
6393                            result.name = map
6394                                .next_value::<std::option::Option<std::string::String>>()?
6395                                .unwrap_or_default();
6396                        }
6397                        __FieldTag::Unknown(key) => {
6398                            let value = map.next_value::<serde_json::Value>()?;
6399                            result._unknown_fields.insert(key, value);
6400                        }
6401                    }
6402                }
6403                std::result::Result::Ok(result)
6404            }
6405        }
6406        deserializer.deserialize_any(Visitor)
6407    }
6408}
6409
6410#[doc(hidden)]
6411impl serde::ser::Serialize for GetExternalAccessRuleRequest {
6412    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6413    where
6414        S: serde::ser::Serializer,
6415    {
6416        use serde::ser::SerializeMap;
6417        #[allow(unused_imports)]
6418        use std::option::Option::Some;
6419        let mut state = serializer.serialize_map(std::option::Option::None)?;
6420        if !self.name.is_empty() {
6421            state.serialize_entry("name", &self.name)?;
6422        }
6423        if !self._unknown_fields.is_empty() {
6424            for (key, value) in self._unknown_fields.iter() {
6425                state.serialize_entry(key, &value)?;
6426            }
6427        }
6428        state.end()
6429    }
6430}
6431
6432/// Request message for
6433/// [VmwareEngine.CreateExternalAccessRule][google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAccessRule]
6434///
6435/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAccessRule]: crate::client::VmwareEngine::create_external_access_rule
6436#[derive(Clone, Debug, Default, PartialEq)]
6437#[non_exhaustive]
6438pub struct CreateExternalAccessRuleRequest {
6439    /// Required. The resource name of the network policy
6440    /// to create a new external access firewall rule in.
6441    /// Resource names are schemeless URIs that follow the conventions in
6442    /// <https://cloud.google.com/apis/design/resource_names>.
6443    /// For example:
6444    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
6445    pub parent: std::string::String,
6446
6447    /// Required. The initial description of a new external access rule.
6448    pub external_access_rule: std::option::Option<crate::model::ExternalAccessRule>,
6449
6450    /// Required. The user-provided identifier of the `ExternalAccessRule` to be
6451    /// created. This identifier must be unique among `ExternalAccessRule`
6452    /// resources within the parent and becomes the final token in the name URI.
6453    /// The identifier must meet the following requirements:
6454    ///
6455    /// * Only contains 1-63 alphanumeric characters and hyphens
6456    /// * Begins with an alphabetical character
6457    /// * Ends with a non-hyphen character
6458    /// * Not formatted as a UUID
6459    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
6460    ///   (section 3.5)
6461    pub external_access_rule_id: std::string::String,
6462
6463    /// A request ID to identify requests. Specify a unique request ID
6464    /// so that if you must retry your request, the server will know to ignore
6465    /// the request if it has already been completed. The server guarantees that a
6466    /// request doesn't result in creation of duplicate commitments for at least 60
6467    /// minutes.
6468    ///
6469    /// For example, consider a situation where you make an initial request and the
6470    /// request times out. If you make the request again with the same request ID,
6471    /// the server can check if the original operation with the same request ID was
6472    /// received, and if so, will ignore the second request. This prevents clients
6473    /// from accidentally creating duplicate commitments.
6474    ///
6475    /// The request ID must be a valid UUID with the exception that zero UUID is
6476    /// not supported (00000000-0000-0000-0000-000000000000).
6477    pub request_id: std::string::String,
6478
6479    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6480}
6481
6482impl CreateExternalAccessRuleRequest {
6483    pub fn new() -> Self {
6484        std::default::Default::default()
6485    }
6486
6487    /// Sets the value of [parent][crate::model::CreateExternalAccessRuleRequest::parent].
6488    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6489        self.parent = v.into();
6490        self
6491    }
6492
6493    /// Sets the value of [external_access_rule][crate::model::CreateExternalAccessRuleRequest::external_access_rule].
6494    pub fn set_external_access_rule<T>(mut self, v: T) -> Self
6495    where
6496        T: std::convert::Into<crate::model::ExternalAccessRule>,
6497    {
6498        self.external_access_rule = std::option::Option::Some(v.into());
6499        self
6500    }
6501
6502    /// Sets or clears the value of [external_access_rule][crate::model::CreateExternalAccessRuleRequest::external_access_rule].
6503    pub fn set_or_clear_external_access_rule<T>(mut self, v: std::option::Option<T>) -> Self
6504    where
6505        T: std::convert::Into<crate::model::ExternalAccessRule>,
6506    {
6507        self.external_access_rule = v.map(|x| x.into());
6508        self
6509    }
6510
6511    /// Sets the value of [external_access_rule_id][crate::model::CreateExternalAccessRuleRequest::external_access_rule_id].
6512    pub fn set_external_access_rule_id<T: std::convert::Into<std::string::String>>(
6513        mut self,
6514        v: T,
6515    ) -> Self {
6516        self.external_access_rule_id = v.into();
6517        self
6518    }
6519
6520    /// Sets the value of [request_id][crate::model::CreateExternalAccessRuleRequest::request_id].
6521    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6522        self.request_id = v.into();
6523        self
6524    }
6525}
6526
6527impl wkt::message::Message for CreateExternalAccessRuleRequest {
6528    fn typename() -> &'static str {
6529        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateExternalAccessRuleRequest"
6530    }
6531}
6532
6533#[doc(hidden)]
6534impl<'de> serde::de::Deserialize<'de> for CreateExternalAccessRuleRequest {
6535    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6536    where
6537        D: serde::Deserializer<'de>,
6538    {
6539        #[allow(non_camel_case_types)]
6540        #[doc(hidden)]
6541        #[derive(PartialEq, Eq, Hash)]
6542        enum __FieldTag {
6543            __parent,
6544            __external_access_rule,
6545            __external_access_rule_id,
6546            __request_id,
6547            Unknown(std::string::String),
6548        }
6549        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
6550            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6551            where
6552                D: serde::Deserializer<'de>,
6553            {
6554                struct Visitor;
6555                impl<'de> serde::de::Visitor<'de> for Visitor {
6556                    type Value = __FieldTag;
6557                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6558                        formatter.write_str("a field name for CreateExternalAccessRuleRequest")
6559                    }
6560                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6561                    where
6562                        E: serde::de::Error,
6563                    {
6564                        use std::result::Result::Ok;
6565                        use std::string::ToString;
6566                        match value {
6567                            "parent" => Ok(__FieldTag::__parent),
6568                            "externalAccessRule" => Ok(__FieldTag::__external_access_rule),
6569                            "external_access_rule" => Ok(__FieldTag::__external_access_rule),
6570                            "externalAccessRuleId" => Ok(__FieldTag::__external_access_rule_id),
6571                            "external_access_rule_id" => Ok(__FieldTag::__external_access_rule_id),
6572                            "requestId" => Ok(__FieldTag::__request_id),
6573                            "request_id" => Ok(__FieldTag::__request_id),
6574                            _ => Ok(__FieldTag::Unknown(value.to_string())),
6575                        }
6576                    }
6577                }
6578                deserializer.deserialize_identifier(Visitor)
6579            }
6580        }
6581        struct Visitor;
6582        impl<'de> serde::de::Visitor<'de> for Visitor {
6583            type Value = CreateExternalAccessRuleRequest;
6584            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6585                formatter.write_str("struct CreateExternalAccessRuleRequest")
6586            }
6587            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
6588            where
6589                A: serde::de::MapAccess<'de>,
6590            {
6591                #[allow(unused_imports)]
6592                use serde::de::Error;
6593                use std::option::Option::Some;
6594                let mut fields = std::collections::HashSet::new();
6595                let mut result = Self::Value::new();
6596                while let Some(tag) = map.next_key::<__FieldTag>()? {
6597                    #[allow(clippy::match_single_binding)]
6598                    match tag {
6599                        __FieldTag::__parent => {
6600                            if !fields.insert(__FieldTag::__parent) {
6601                                return std::result::Result::Err(A::Error::duplicate_field(
6602                                    "multiple values for parent",
6603                                ));
6604                            }
6605                            result.parent = map
6606                                .next_value::<std::option::Option<std::string::String>>()?
6607                                .unwrap_or_default();
6608                        }
6609                        __FieldTag::__external_access_rule => {
6610                            if !fields.insert(__FieldTag::__external_access_rule) {
6611                                return std::result::Result::Err(A::Error::duplicate_field(
6612                                    "multiple values for external_access_rule",
6613                                ));
6614                            }
6615                            result.external_access_rule = map.next_value::<std::option::Option<crate::model::ExternalAccessRule>>()?
6616                                ;
6617                        }
6618                        __FieldTag::__external_access_rule_id => {
6619                            if !fields.insert(__FieldTag::__external_access_rule_id) {
6620                                return std::result::Result::Err(A::Error::duplicate_field(
6621                                    "multiple values for external_access_rule_id",
6622                                ));
6623                            }
6624                            result.external_access_rule_id = map
6625                                .next_value::<std::option::Option<std::string::String>>()?
6626                                .unwrap_or_default();
6627                        }
6628                        __FieldTag::__request_id => {
6629                            if !fields.insert(__FieldTag::__request_id) {
6630                                return std::result::Result::Err(A::Error::duplicate_field(
6631                                    "multiple values for request_id",
6632                                ));
6633                            }
6634                            result.request_id = map
6635                                .next_value::<std::option::Option<std::string::String>>()?
6636                                .unwrap_or_default();
6637                        }
6638                        __FieldTag::Unknown(key) => {
6639                            let value = map.next_value::<serde_json::Value>()?;
6640                            result._unknown_fields.insert(key, value);
6641                        }
6642                    }
6643                }
6644                std::result::Result::Ok(result)
6645            }
6646        }
6647        deserializer.deserialize_any(Visitor)
6648    }
6649}
6650
6651#[doc(hidden)]
6652impl serde::ser::Serialize for CreateExternalAccessRuleRequest {
6653    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6654    where
6655        S: serde::ser::Serializer,
6656    {
6657        use serde::ser::SerializeMap;
6658        #[allow(unused_imports)]
6659        use std::option::Option::Some;
6660        let mut state = serializer.serialize_map(std::option::Option::None)?;
6661        if !self.parent.is_empty() {
6662            state.serialize_entry("parent", &self.parent)?;
6663        }
6664        if self.external_access_rule.is_some() {
6665            state.serialize_entry("externalAccessRule", &self.external_access_rule)?;
6666        }
6667        if !self.external_access_rule_id.is_empty() {
6668            state.serialize_entry("externalAccessRuleId", &self.external_access_rule_id)?;
6669        }
6670        if !self.request_id.is_empty() {
6671            state.serialize_entry("requestId", &self.request_id)?;
6672        }
6673        if !self._unknown_fields.is_empty() {
6674            for (key, value) in self._unknown_fields.iter() {
6675                state.serialize_entry(key, &value)?;
6676            }
6677        }
6678        state.end()
6679    }
6680}
6681
6682/// Request message for
6683/// [VmwareEngine.UpdateExternalAccessRule][google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAccessRule]
6684///
6685/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAccessRule]: crate::client::VmwareEngine::update_external_access_rule
6686#[derive(Clone, Debug, Default, PartialEq)]
6687#[non_exhaustive]
6688pub struct UpdateExternalAccessRuleRequest {
6689    /// Required. Field mask is used to specify the fields to be overwritten in the
6690    /// `ExternalAccessRule` resource by the update.
6691    /// The fields specified in the `update_mask` are relative to the resource, not
6692    /// the full request. A field will be overwritten if it is in the mask. If the
6693    /// user does not provide a mask then all fields will be overwritten.
6694    pub update_mask: std::option::Option<wkt::FieldMask>,
6695
6696    /// Required. Description of the external access rule.
6697    pub external_access_rule: std::option::Option<crate::model::ExternalAccessRule>,
6698
6699    /// Optional. A request ID to identify requests. Specify a unique request ID
6700    /// so that if you must retry your request, the server will know to ignore
6701    /// the request if it has already been completed. The server guarantees that a
6702    /// request doesn't result in creation of duplicate commitments for at least 60
6703    /// minutes.
6704    ///
6705    /// For example, consider a situation where you make an initial request and the
6706    /// request times out. If you make the request again with the same request ID,
6707    /// the server can check if the original operation with the same request ID was
6708    /// received, and if so, will ignore the second request. This prevents clients
6709    /// from accidentally creating duplicate commitments.
6710    ///
6711    /// The request ID must be a valid UUID with the exception that zero UUID is
6712    /// not supported (00000000-0000-0000-0000-000000000000).
6713    pub request_id: std::string::String,
6714
6715    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6716}
6717
6718impl UpdateExternalAccessRuleRequest {
6719    pub fn new() -> Self {
6720        std::default::Default::default()
6721    }
6722
6723    /// Sets the value of [update_mask][crate::model::UpdateExternalAccessRuleRequest::update_mask].
6724    pub fn set_update_mask<T>(mut self, v: T) -> Self
6725    where
6726        T: std::convert::Into<wkt::FieldMask>,
6727    {
6728        self.update_mask = std::option::Option::Some(v.into());
6729        self
6730    }
6731
6732    /// Sets or clears the value of [update_mask][crate::model::UpdateExternalAccessRuleRequest::update_mask].
6733    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
6734    where
6735        T: std::convert::Into<wkt::FieldMask>,
6736    {
6737        self.update_mask = v.map(|x| x.into());
6738        self
6739    }
6740
6741    /// Sets the value of [external_access_rule][crate::model::UpdateExternalAccessRuleRequest::external_access_rule].
6742    pub fn set_external_access_rule<T>(mut self, v: T) -> Self
6743    where
6744        T: std::convert::Into<crate::model::ExternalAccessRule>,
6745    {
6746        self.external_access_rule = std::option::Option::Some(v.into());
6747        self
6748    }
6749
6750    /// Sets or clears the value of [external_access_rule][crate::model::UpdateExternalAccessRuleRequest::external_access_rule].
6751    pub fn set_or_clear_external_access_rule<T>(mut self, v: std::option::Option<T>) -> Self
6752    where
6753        T: std::convert::Into<crate::model::ExternalAccessRule>,
6754    {
6755        self.external_access_rule = v.map(|x| x.into());
6756        self
6757    }
6758
6759    /// Sets the value of [request_id][crate::model::UpdateExternalAccessRuleRequest::request_id].
6760    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6761        self.request_id = v.into();
6762        self
6763    }
6764}
6765
6766impl wkt::message::Message for UpdateExternalAccessRuleRequest {
6767    fn typename() -> &'static str {
6768        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateExternalAccessRuleRequest"
6769    }
6770}
6771
6772#[doc(hidden)]
6773impl<'de> serde::de::Deserialize<'de> for UpdateExternalAccessRuleRequest {
6774    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6775    where
6776        D: serde::Deserializer<'de>,
6777    {
6778        #[allow(non_camel_case_types)]
6779        #[doc(hidden)]
6780        #[derive(PartialEq, Eq, Hash)]
6781        enum __FieldTag {
6782            __update_mask,
6783            __external_access_rule,
6784            __request_id,
6785            Unknown(std::string::String),
6786        }
6787        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
6788            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6789            where
6790                D: serde::Deserializer<'de>,
6791            {
6792                struct Visitor;
6793                impl<'de> serde::de::Visitor<'de> for Visitor {
6794                    type Value = __FieldTag;
6795                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6796                        formatter.write_str("a field name for UpdateExternalAccessRuleRequest")
6797                    }
6798                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6799                    where
6800                        E: serde::de::Error,
6801                    {
6802                        use std::result::Result::Ok;
6803                        use std::string::ToString;
6804                        match value {
6805                            "updateMask" => Ok(__FieldTag::__update_mask),
6806                            "update_mask" => Ok(__FieldTag::__update_mask),
6807                            "externalAccessRule" => Ok(__FieldTag::__external_access_rule),
6808                            "external_access_rule" => Ok(__FieldTag::__external_access_rule),
6809                            "requestId" => Ok(__FieldTag::__request_id),
6810                            "request_id" => Ok(__FieldTag::__request_id),
6811                            _ => Ok(__FieldTag::Unknown(value.to_string())),
6812                        }
6813                    }
6814                }
6815                deserializer.deserialize_identifier(Visitor)
6816            }
6817        }
6818        struct Visitor;
6819        impl<'de> serde::de::Visitor<'de> for Visitor {
6820            type Value = UpdateExternalAccessRuleRequest;
6821            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6822                formatter.write_str("struct UpdateExternalAccessRuleRequest")
6823            }
6824            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
6825            where
6826                A: serde::de::MapAccess<'de>,
6827            {
6828                #[allow(unused_imports)]
6829                use serde::de::Error;
6830                use std::option::Option::Some;
6831                let mut fields = std::collections::HashSet::new();
6832                let mut result = Self::Value::new();
6833                while let Some(tag) = map.next_key::<__FieldTag>()? {
6834                    #[allow(clippy::match_single_binding)]
6835                    match tag {
6836                        __FieldTag::__update_mask => {
6837                            if !fields.insert(__FieldTag::__update_mask) {
6838                                return std::result::Result::Err(A::Error::duplicate_field(
6839                                    "multiple values for update_mask",
6840                                ));
6841                            }
6842                            result.update_mask =
6843                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
6844                        }
6845                        __FieldTag::__external_access_rule => {
6846                            if !fields.insert(__FieldTag::__external_access_rule) {
6847                                return std::result::Result::Err(A::Error::duplicate_field(
6848                                    "multiple values for external_access_rule",
6849                                ));
6850                            }
6851                            result.external_access_rule = map.next_value::<std::option::Option<crate::model::ExternalAccessRule>>()?
6852                                ;
6853                        }
6854                        __FieldTag::__request_id => {
6855                            if !fields.insert(__FieldTag::__request_id) {
6856                                return std::result::Result::Err(A::Error::duplicate_field(
6857                                    "multiple values for request_id",
6858                                ));
6859                            }
6860                            result.request_id = map
6861                                .next_value::<std::option::Option<std::string::String>>()?
6862                                .unwrap_or_default();
6863                        }
6864                        __FieldTag::Unknown(key) => {
6865                            let value = map.next_value::<serde_json::Value>()?;
6866                            result._unknown_fields.insert(key, value);
6867                        }
6868                    }
6869                }
6870                std::result::Result::Ok(result)
6871            }
6872        }
6873        deserializer.deserialize_any(Visitor)
6874    }
6875}
6876
6877#[doc(hidden)]
6878impl serde::ser::Serialize for UpdateExternalAccessRuleRequest {
6879    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6880    where
6881        S: serde::ser::Serializer,
6882    {
6883        use serde::ser::SerializeMap;
6884        #[allow(unused_imports)]
6885        use std::option::Option::Some;
6886        let mut state = serializer.serialize_map(std::option::Option::None)?;
6887        if self.update_mask.is_some() {
6888            state.serialize_entry("updateMask", &self.update_mask)?;
6889        }
6890        if self.external_access_rule.is_some() {
6891            state.serialize_entry("externalAccessRule", &self.external_access_rule)?;
6892        }
6893        if !self.request_id.is_empty() {
6894            state.serialize_entry("requestId", &self.request_id)?;
6895        }
6896        if !self._unknown_fields.is_empty() {
6897            for (key, value) in self._unknown_fields.iter() {
6898                state.serialize_entry(key, &value)?;
6899            }
6900        }
6901        state.end()
6902    }
6903}
6904
6905/// Request message for
6906/// [VmwareEngine.DeleteExternalAccessRule][google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAccessRule]
6907///
6908/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAccessRule]: crate::client::VmwareEngine::delete_external_access_rule
6909#[derive(Clone, Debug, Default, PartialEq)]
6910#[non_exhaustive]
6911pub struct DeleteExternalAccessRuleRequest {
6912    /// Required. The resource name of the external access firewall rule to delete.
6913    /// Resource names are schemeless URIs that follow the conventions in
6914    /// <https://cloud.google.com/apis/design/resource_names>.
6915    /// For example:
6916    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
6917    pub name: std::string::String,
6918
6919    /// Optional. A request ID to identify requests. Specify a unique request ID
6920    /// so that if you must retry your request, the server will know to ignore
6921    /// the request if it has already been completed. The server guarantees that a
6922    /// request doesn't result in creation of duplicate commitments for at least 60
6923    /// minutes.
6924    ///
6925    /// For example, consider a situation where you make an initial request and the
6926    /// request times out. If you make the request again with the same request
6927    /// ID, the server can check if the original operation with the same request ID
6928    /// was received, and if so, will ignore the second request. This prevents
6929    /// clients from accidentally creating duplicate commitments.
6930    ///
6931    /// The request ID must be a valid UUID with the exception that zero UUID is
6932    /// not supported (00000000-0000-0000-0000-000000000000).
6933    pub request_id: std::string::String,
6934
6935    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6936}
6937
6938impl DeleteExternalAccessRuleRequest {
6939    pub fn new() -> Self {
6940        std::default::Default::default()
6941    }
6942
6943    /// Sets the value of [name][crate::model::DeleteExternalAccessRuleRequest::name].
6944    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6945        self.name = v.into();
6946        self
6947    }
6948
6949    /// Sets the value of [request_id][crate::model::DeleteExternalAccessRuleRequest::request_id].
6950    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6951        self.request_id = v.into();
6952        self
6953    }
6954}
6955
6956impl wkt::message::Message for DeleteExternalAccessRuleRequest {
6957    fn typename() -> &'static str {
6958        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteExternalAccessRuleRequest"
6959    }
6960}
6961
6962#[doc(hidden)]
6963impl<'de> serde::de::Deserialize<'de> for DeleteExternalAccessRuleRequest {
6964    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6965    where
6966        D: serde::Deserializer<'de>,
6967    {
6968        #[allow(non_camel_case_types)]
6969        #[doc(hidden)]
6970        #[derive(PartialEq, Eq, Hash)]
6971        enum __FieldTag {
6972            __name,
6973            __request_id,
6974            Unknown(std::string::String),
6975        }
6976        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
6977            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6978            where
6979                D: serde::Deserializer<'de>,
6980            {
6981                struct Visitor;
6982                impl<'de> serde::de::Visitor<'de> for Visitor {
6983                    type Value = __FieldTag;
6984                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
6985                        formatter.write_str("a field name for DeleteExternalAccessRuleRequest")
6986                    }
6987                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6988                    where
6989                        E: serde::de::Error,
6990                    {
6991                        use std::result::Result::Ok;
6992                        use std::string::ToString;
6993                        match value {
6994                            "name" => Ok(__FieldTag::__name),
6995                            "requestId" => Ok(__FieldTag::__request_id),
6996                            "request_id" => Ok(__FieldTag::__request_id),
6997                            _ => Ok(__FieldTag::Unknown(value.to_string())),
6998                        }
6999                    }
7000                }
7001                deserializer.deserialize_identifier(Visitor)
7002            }
7003        }
7004        struct Visitor;
7005        impl<'de> serde::de::Visitor<'de> for Visitor {
7006            type Value = DeleteExternalAccessRuleRequest;
7007            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7008                formatter.write_str("struct DeleteExternalAccessRuleRequest")
7009            }
7010            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
7011            where
7012                A: serde::de::MapAccess<'de>,
7013            {
7014                #[allow(unused_imports)]
7015                use serde::de::Error;
7016                use std::option::Option::Some;
7017                let mut fields = std::collections::HashSet::new();
7018                let mut result = Self::Value::new();
7019                while let Some(tag) = map.next_key::<__FieldTag>()? {
7020                    #[allow(clippy::match_single_binding)]
7021                    match tag {
7022                        __FieldTag::__name => {
7023                            if !fields.insert(__FieldTag::__name) {
7024                                return std::result::Result::Err(A::Error::duplicate_field(
7025                                    "multiple values for name",
7026                                ));
7027                            }
7028                            result.name = map
7029                                .next_value::<std::option::Option<std::string::String>>()?
7030                                .unwrap_or_default();
7031                        }
7032                        __FieldTag::__request_id => {
7033                            if !fields.insert(__FieldTag::__request_id) {
7034                                return std::result::Result::Err(A::Error::duplicate_field(
7035                                    "multiple values for request_id",
7036                                ));
7037                            }
7038                            result.request_id = map
7039                                .next_value::<std::option::Option<std::string::String>>()?
7040                                .unwrap_or_default();
7041                        }
7042                        __FieldTag::Unknown(key) => {
7043                            let value = map.next_value::<serde_json::Value>()?;
7044                            result._unknown_fields.insert(key, value);
7045                        }
7046                    }
7047                }
7048                std::result::Result::Ok(result)
7049            }
7050        }
7051        deserializer.deserialize_any(Visitor)
7052    }
7053}
7054
7055#[doc(hidden)]
7056impl serde::ser::Serialize for DeleteExternalAccessRuleRequest {
7057    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7058    where
7059        S: serde::ser::Serializer,
7060    {
7061        use serde::ser::SerializeMap;
7062        #[allow(unused_imports)]
7063        use std::option::Option::Some;
7064        let mut state = serializer.serialize_map(std::option::Option::None)?;
7065        if !self.name.is_empty() {
7066            state.serialize_entry("name", &self.name)?;
7067        }
7068        if !self.request_id.is_empty() {
7069            state.serialize_entry("requestId", &self.request_id)?;
7070        }
7071        if !self._unknown_fields.is_empty() {
7072            for (key, value) in self._unknown_fields.iter() {
7073                state.serialize_entry(key, &value)?;
7074            }
7075        }
7076        state.end()
7077    }
7078}
7079
7080/// Request message for
7081/// [VmwareEngine.ListLoggingServers][google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers]
7082///
7083/// [google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers]: crate::client::VmwareEngine::list_logging_servers
7084#[derive(Clone, Debug, Default, PartialEq)]
7085#[non_exhaustive]
7086pub struct ListLoggingServersRequest {
7087    /// Required. The resource name of the private cloud to be queried for
7088    /// logging servers.
7089    /// Resource names are schemeless URIs that follow the conventions in
7090    /// <https://cloud.google.com/apis/design/resource_names>.
7091    /// For example:
7092    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
7093    pub parent: std::string::String,
7094
7095    /// The maximum number of logging servers to return in one page.
7096    /// The service may return fewer than this value.
7097    /// The maximum value is coerced to 1000.
7098    /// The default value of this field is 500.
7099    pub page_size: i32,
7100
7101    /// A page token, received from a previous `ListLoggingServersRequest` call.
7102    /// Provide this to retrieve the subsequent page.
7103    ///
7104    /// When paginating, all other parameters provided to
7105    /// `ListLoggingServersRequest` must match the call that provided the page
7106    /// token.
7107    pub page_token: std::string::String,
7108
7109    /// A filter expression that matches resources returned in the response.
7110    /// The expression must specify the field name, a comparison
7111    /// operator, and the value that you want to use for filtering. The value
7112    /// must be a string, a number, or a boolean. The comparison operator
7113    /// must be `=`, `!=`, `>`, or `<`.
7114    ///
7115    /// For example, if you are filtering a list of logging servers, you can
7116    /// exclude the ones named `example-server` by specifying
7117    /// `name != "example-server"`.
7118    ///
7119    /// To filter on multiple expressions, provide each separate expression within
7120    /// parentheses. For example:
7121    ///
7122    /// ```norust
7123    /// (name = "example-server")
7124    /// (createTime > "2021-04-12T08:15:10.40Z")
7125    /// ```
7126    ///
7127    /// By default, each expression is an `AND` expression. However, you
7128    /// can include `AND` and `OR` expressions explicitly.
7129    /// For example:
7130    ///
7131    /// ```norust
7132    /// (name = "example-server-1") AND
7133    /// (createTime > "2021-04-12T08:15:10.40Z") OR
7134    /// (name = "example-server-2")
7135    /// ```
7136    pub filter: std::string::String,
7137
7138    /// Sorts list results by a certain order. By default, returned results
7139    /// are ordered by `name` in ascending order.
7140    /// You can also sort results in descending order based on the `name` value
7141    /// using `orderBy="name desc"`.
7142    /// Currently, only ordering by `name` is supported.
7143    pub order_by: std::string::String,
7144
7145    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7146}
7147
7148impl ListLoggingServersRequest {
7149    pub fn new() -> Self {
7150        std::default::Default::default()
7151    }
7152
7153    /// Sets the value of [parent][crate::model::ListLoggingServersRequest::parent].
7154    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7155        self.parent = v.into();
7156        self
7157    }
7158
7159    /// Sets the value of [page_size][crate::model::ListLoggingServersRequest::page_size].
7160    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
7161        self.page_size = v.into();
7162        self
7163    }
7164
7165    /// Sets the value of [page_token][crate::model::ListLoggingServersRequest::page_token].
7166    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7167        self.page_token = v.into();
7168        self
7169    }
7170
7171    /// Sets the value of [filter][crate::model::ListLoggingServersRequest::filter].
7172    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7173        self.filter = v.into();
7174        self
7175    }
7176
7177    /// Sets the value of [order_by][crate::model::ListLoggingServersRequest::order_by].
7178    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7179        self.order_by = v.into();
7180        self
7181    }
7182}
7183
7184impl wkt::message::Message for ListLoggingServersRequest {
7185    fn typename() -> &'static str {
7186        "type.googleapis.com/google.cloud.vmwareengine.v1.ListLoggingServersRequest"
7187    }
7188}
7189
7190#[doc(hidden)]
7191impl<'de> serde::de::Deserialize<'de> for ListLoggingServersRequest {
7192    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7193    where
7194        D: serde::Deserializer<'de>,
7195    {
7196        #[allow(non_camel_case_types)]
7197        #[doc(hidden)]
7198        #[derive(PartialEq, Eq, Hash)]
7199        enum __FieldTag {
7200            __parent,
7201            __page_size,
7202            __page_token,
7203            __filter,
7204            __order_by,
7205            Unknown(std::string::String),
7206        }
7207        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
7208            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7209            where
7210                D: serde::Deserializer<'de>,
7211            {
7212                struct Visitor;
7213                impl<'de> serde::de::Visitor<'de> for Visitor {
7214                    type Value = __FieldTag;
7215                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7216                        formatter.write_str("a field name for ListLoggingServersRequest")
7217                    }
7218                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
7219                    where
7220                        E: serde::de::Error,
7221                    {
7222                        use std::result::Result::Ok;
7223                        use std::string::ToString;
7224                        match value {
7225                            "parent" => Ok(__FieldTag::__parent),
7226                            "pageSize" => Ok(__FieldTag::__page_size),
7227                            "page_size" => Ok(__FieldTag::__page_size),
7228                            "pageToken" => Ok(__FieldTag::__page_token),
7229                            "page_token" => Ok(__FieldTag::__page_token),
7230                            "filter" => Ok(__FieldTag::__filter),
7231                            "orderBy" => Ok(__FieldTag::__order_by),
7232                            "order_by" => Ok(__FieldTag::__order_by),
7233                            _ => Ok(__FieldTag::Unknown(value.to_string())),
7234                        }
7235                    }
7236                }
7237                deserializer.deserialize_identifier(Visitor)
7238            }
7239        }
7240        struct Visitor;
7241        impl<'de> serde::de::Visitor<'de> for Visitor {
7242            type Value = ListLoggingServersRequest;
7243            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7244                formatter.write_str("struct ListLoggingServersRequest")
7245            }
7246            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
7247            where
7248                A: serde::de::MapAccess<'de>,
7249            {
7250                #[allow(unused_imports)]
7251                use serde::de::Error;
7252                use std::option::Option::Some;
7253                let mut fields = std::collections::HashSet::new();
7254                let mut result = Self::Value::new();
7255                while let Some(tag) = map.next_key::<__FieldTag>()? {
7256                    #[allow(clippy::match_single_binding)]
7257                    match tag {
7258                        __FieldTag::__parent => {
7259                            if !fields.insert(__FieldTag::__parent) {
7260                                return std::result::Result::Err(A::Error::duplicate_field(
7261                                    "multiple values for parent",
7262                                ));
7263                            }
7264                            result.parent = map
7265                                .next_value::<std::option::Option<std::string::String>>()?
7266                                .unwrap_or_default();
7267                        }
7268                        __FieldTag::__page_size => {
7269                            if !fields.insert(__FieldTag::__page_size) {
7270                                return std::result::Result::Err(A::Error::duplicate_field(
7271                                    "multiple values for page_size",
7272                                ));
7273                            }
7274                            struct __With(std::option::Option<i32>);
7275                            impl<'de> serde::de::Deserialize<'de> for __With {
7276                                fn deserialize<D>(
7277                                    deserializer: D,
7278                                ) -> std::result::Result<Self, D::Error>
7279                                where
7280                                    D: serde::de::Deserializer<'de>,
7281                                {
7282                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
7283                                }
7284                            }
7285                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
7286                        }
7287                        __FieldTag::__page_token => {
7288                            if !fields.insert(__FieldTag::__page_token) {
7289                                return std::result::Result::Err(A::Error::duplicate_field(
7290                                    "multiple values for page_token",
7291                                ));
7292                            }
7293                            result.page_token = map
7294                                .next_value::<std::option::Option<std::string::String>>()?
7295                                .unwrap_or_default();
7296                        }
7297                        __FieldTag::__filter => {
7298                            if !fields.insert(__FieldTag::__filter) {
7299                                return std::result::Result::Err(A::Error::duplicate_field(
7300                                    "multiple values for filter",
7301                                ));
7302                            }
7303                            result.filter = map
7304                                .next_value::<std::option::Option<std::string::String>>()?
7305                                .unwrap_or_default();
7306                        }
7307                        __FieldTag::__order_by => {
7308                            if !fields.insert(__FieldTag::__order_by) {
7309                                return std::result::Result::Err(A::Error::duplicate_field(
7310                                    "multiple values for order_by",
7311                                ));
7312                            }
7313                            result.order_by = map
7314                                .next_value::<std::option::Option<std::string::String>>()?
7315                                .unwrap_or_default();
7316                        }
7317                        __FieldTag::Unknown(key) => {
7318                            let value = map.next_value::<serde_json::Value>()?;
7319                            result._unknown_fields.insert(key, value);
7320                        }
7321                    }
7322                }
7323                std::result::Result::Ok(result)
7324            }
7325        }
7326        deserializer.deserialize_any(Visitor)
7327    }
7328}
7329
7330#[doc(hidden)]
7331impl serde::ser::Serialize for ListLoggingServersRequest {
7332    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7333    where
7334        S: serde::ser::Serializer,
7335    {
7336        use serde::ser::SerializeMap;
7337        #[allow(unused_imports)]
7338        use std::option::Option::Some;
7339        let mut state = serializer.serialize_map(std::option::Option::None)?;
7340        if !self.parent.is_empty() {
7341            state.serialize_entry("parent", &self.parent)?;
7342        }
7343        if !wkt::internal::is_default(&self.page_size) {
7344            struct __With<'a>(&'a i32);
7345            impl<'a> serde::ser::Serialize for __With<'a> {
7346                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7347                where
7348                    S: serde::ser::Serializer,
7349                {
7350                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
7351                }
7352            }
7353            state.serialize_entry("pageSize", &__With(&self.page_size))?;
7354        }
7355        if !self.page_token.is_empty() {
7356            state.serialize_entry("pageToken", &self.page_token)?;
7357        }
7358        if !self.filter.is_empty() {
7359            state.serialize_entry("filter", &self.filter)?;
7360        }
7361        if !self.order_by.is_empty() {
7362            state.serialize_entry("orderBy", &self.order_by)?;
7363        }
7364        if !self._unknown_fields.is_empty() {
7365            for (key, value) in self._unknown_fields.iter() {
7366                state.serialize_entry(key, &value)?;
7367            }
7368        }
7369        state.end()
7370    }
7371}
7372
7373/// Response message for
7374/// [VmwareEngine.ListLoggingServers][google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers]
7375///
7376/// [google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers]: crate::client::VmwareEngine::list_logging_servers
7377#[derive(Clone, Debug, Default, PartialEq)]
7378#[non_exhaustive]
7379pub struct ListLoggingServersResponse {
7380    /// A list of Logging Servers.
7381    pub logging_servers: std::vec::Vec<crate::model::LoggingServer>,
7382
7383    /// A token, which can be send as `page_token` to retrieve the next page.
7384    /// If this field is omitted, there are no subsequent pages.
7385    pub next_page_token: std::string::String,
7386
7387    /// Locations that could not be reached when making an aggregated query using
7388    /// wildcards.
7389    pub unreachable: std::vec::Vec<std::string::String>,
7390
7391    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7392}
7393
7394impl ListLoggingServersResponse {
7395    pub fn new() -> Self {
7396        std::default::Default::default()
7397    }
7398
7399    /// Sets the value of [logging_servers][crate::model::ListLoggingServersResponse::logging_servers].
7400    pub fn set_logging_servers<T, V>(mut self, v: T) -> Self
7401    where
7402        T: std::iter::IntoIterator<Item = V>,
7403        V: std::convert::Into<crate::model::LoggingServer>,
7404    {
7405        use std::iter::Iterator;
7406        self.logging_servers = v.into_iter().map(|i| i.into()).collect();
7407        self
7408    }
7409
7410    /// Sets the value of [next_page_token][crate::model::ListLoggingServersResponse::next_page_token].
7411    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7412        self.next_page_token = v.into();
7413        self
7414    }
7415
7416    /// Sets the value of [unreachable][crate::model::ListLoggingServersResponse::unreachable].
7417    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
7418    where
7419        T: std::iter::IntoIterator<Item = V>,
7420        V: std::convert::Into<std::string::String>,
7421    {
7422        use std::iter::Iterator;
7423        self.unreachable = v.into_iter().map(|i| i.into()).collect();
7424        self
7425    }
7426}
7427
7428impl wkt::message::Message for ListLoggingServersResponse {
7429    fn typename() -> &'static str {
7430        "type.googleapis.com/google.cloud.vmwareengine.v1.ListLoggingServersResponse"
7431    }
7432}
7433
7434#[doc(hidden)]
7435impl gax::paginator::internal::PageableResponse for ListLoggingServersResponse {
7436    type PageItem = crate::model::LoggingServer;
7437
7438    fn items(self) -> std::vec::Vec<Self::PageItem> {
7439        self.logging_servers
7440    }
7441
7442    fn next_page_token(&self) -> std::string::String {
7443        use std::clone::Clone;
7444        self.next_page_token.clone()
7445    }
7446}
7447
7448#[doc(hidden)]
7449impl<'de> serde::de::Deserialize<'de> for ListLoggingServersResponse {
7450    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7451    where
7452        D: serde::Deserializer<'de>,
7453    {
7454        #[allow(non_camel_case_types)]
7455        #[doc(hidden)]
7456        #[derive(PartialEq, Eq, Hash)]
7457        enum __FieldTag {
7458            __logging_servers,
7459            __next_page_token,
7460            __unreachable,
7461            Unknown(std::string::String),
7462        }
7463        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
7464            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7465            where
7466                D: serde::Deserializer<'de>,
7467            {
7468                struct Visitor;
7469                impl<'de> serde::de::Visitor<'de> for Visitor {
7470                    type Value = __FieldTag;
7471                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7472                        formatter.write_str("a field name for ListLoggingServersResponse")
7473                    }
7474                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
7475                    where
7476                        E: serde::de::Error,
7477                    {
7478                        use std::result::Result::Ok;
7479                        use std::string::ToString;
7480                        match value {
7481                            "loggingServers" => Ok(__FieldTag::__logging_servers),
7482                            "logging_servers" => Ok(__FieldTag::__logging_servers),
7483                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
7484                            "next_page_token" => Ok(__FieldTag::__next_page_token),
7485                            "unreachable" => Ok(__FieldTag::__unreachable),
7486                            _ => Ok(__FieldTag::Unknown(value.to_string())),
7487                        }
7488                    }
7489                }
7490                deserializer.deserialize_identifier(Visitor)
7491            }
7492        }
7493        struct Visitor;
7494        impl<'de> serde::de::Visitor<'de> for Visitor {
7495            type Value = ListLoggingServersResponse;
7496            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7497                formatter.write_str("struct ListLoggingServersResponse")
7498            }
7499            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
7500            where
7501                A: serde::de::MapAccess<'de>,
7502            {
7503                #[allow(unused_imports)]
7504                use serde::de::Error;
7505                use std::option::Option::Some;
7506                let mut fields = std::collections::HashSet::new();
7507                let mut result = Self::Value::new();
7508                while let Some(tag) = map.next_key::<__FieldTag>()? {
7509                    #[allow(clippy::match_single_binding)]
7510                    match tag {
7511                        __FieldTag::__logging_servers => {
7512                            if !fields.insert(__FieldTag::__logging_servers) {
7513                                return std::result::Result::Err(A::Error::duplicate_field(
7514                                    "multiple values for logging_servers",
7515                                ));
7516                            }
7517                            result.logging_servers = map.next_value::<std::option::Option<std::vec::Vec<crate::model::LoggingServer>>>()?.unwrap_or_default();
7518                        }
7519                        __FieldTag::__next_page_token => {
7520                            if !fields.insert(__FieldTag::__next_page_token) {
7521                                return std::result::Result::Err(A::Error::duplicate_field(
7522                                    "multiple values for next_page_token",
7523                                ));
7524                            }
7525                            result.next_page_token = map
7526                                .next_value::<std::option::Option<std::string::String>>()?
7527                                .unwrap_or_default();
7528                        }
7529                        __FieldTag::__unreachable => {
7530                            if !fields.insert(__FieldTag::__unreachable) {
7531                                return std::result::Result::Err(A::Error::duplicate_field(
7532                                    "multiple values for unreachable",
7533                                ));
7534                            }
7535                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
7536                        }
7537                        __FieldTag::Unknown(key) => {
7538                            let value = map.next_value::<serde_json::Value>()?;
7539                            result._unknown_fields.insert(key, value);
7540                        }
7541                    }
7542                }
7543                std::result::Result::Ok(result)
7544            }
7545        }
7546        deserializer.deserialize_any(Visitor)
7547    }
7548}
7549
7550#[doc(hidden)]
7551impl serde::ser::Serialize for ListLoggingServersResponse {
7552    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7553    where
7554        S: serde::ser::Serializer,
7555    {
7556        use serde::ser::SerializeMap;
7557        #[allow(unused_imports)]
7558        use std::option::Option::Some;
7559        let mut state = serializer.serialize_map(std::option::Option::None)?;
7560        if !self.logging_servers.is_empty() {
7561            state.serialize_entry("loggingServers", &self.logging_servers)?;
7562        }
7563        if !self.next_page_token.is_empty() {
7564            state.serialize_entry("nextPageToken", &self.next_page_token)?;
7565        }
7566        if !self.unreachable.is_empty() {
7567            state.serialize_entry("unreachable", &self.unreachable)?;
7568        }
7569        if !self._unknown_fields.is_empty() {
7570            for (key, value) in self._unknown_fields.iter() {
7571                state.serialize_entry(key, &value)?;
7572            }
7573        }
7574        state.end()
7575    }
7576}
7577
7578/// Request message for
7579/// [VmwareEngine.GetLoggingServer][google.cloud.vmwareengine.v1.VmwareEngine.GetLoggingServer]
7580///
7581/// [google.cloud.vmwareengine.v1.VmwareEngine.GetLoggingServer]: crate::client::VmwareEngine::get_logging_server
7582#[derive(Clone, Debug, Default, PartialEq)]
7583#[non_exhaustive]
7584pub struct GetLoggingServerRequest {
7585    /// Required. The resource name of the Logging Server to retrieve.
7586    /// Resource names are schemeless URIs that follow the conventions in
7587    /// <https://cloud.google.com/apis/design/resource_names>.
7588    /// For example:
7589    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
7590    pub name: std::string::String,
7591
7592    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7593}
7594
7595impl GetLoggingServerRequest {
7596    pub fn new() -> Self {
7597        std::default::Default::default()
7598    }
7599
7600    /// Sets the value of [name][crate::model::GetLoggingServerRequest::name].
7601    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7602        self.name = v.into();
7603        self
7604    }
7605}
7606
7607impl wkt::message::Message for GetLoggingServerRequest {
7608    fn typename() -> &'static str {
7609        "type.googleapis.com/google.cloud.vmwareengine.v1.GetLoggingServerRequest"
7610    }
7611}
7612
7613#[doc(hidden)]
7614impl<'de> serde::de::Deserialize<'de> for GetLoggingServerRequest {
7615    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7616    where
7617        D: serde::Deserializer<'de>,
7618    {
7619        #[allow(non_camel_case_types)]
7620        #[doc(hidden)]
7621        #[derive(PartialEq, Eq, Hash)]
7622        enum __FieldTag {
7623            __name,
7624            Unknown(std::string::String),
7625        }
7626        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
7627            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7628            where
7629                D: serde::Deserializer<'de>,
7630            {
7631                struct Visitor;
7632                impl<'de> serde::de::Visitor<'de> for Visitor {
7633                    type Value = __FieldTag;
7634                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7635                        formatter.write_str("a field name for GetLoggingServerRequest")
7636                    }
7637                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
7638                    where
7639                        E: serde::de::Error,
7640                    {
7641                        use std::result::Result::Ok;
7642                        use std::string::ToString;
7643                        match value {
7644                            "name" => Ok(__FieldTag::__name),
7645                            _ => Ok(__FieldTag::Unknown(value.to_string())),
7646                        }
7647                    }
7648                }
7649                deserializer.deserialize_identifier(Visitor)
7650            }
7651        }
7652        struct Visitor;
7653        impl<'de> serde::de::Visitor<'de> for Visitor {
7654            type Value = GetLoggingServerRequest;
7655            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7656                formatter.write_str("struct GetLoggingServerRequest")
7657            }
7658            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
7659            where
7660                A: serde::de::MapAccess<'de>,
7661            {
7662                #[allow(unused_imports)]
7663                use serde::de::Error;
7664                use std::option::Option::Some;
7665                let mut fields = std::collections::HashSet::new();
7666                let mut result = Self::Value::new();
7667                while let Some(tag) = map.next_key::<__FieldTag>()? {
7668                    #[allow(clippy::match_single_binding)]
7669                    match tag {
7670                        __FieldTag::__name => {
7671                            if !fields.insert(__FieldTag::__name) {
7672                                return std::result::Result::Err(A::Error::duplicate_field(
7673                                    "multiple values for name",
7674                                ));
7675                            }
7676                            result.name = map
7677                                .next_value::<std::option::Option<std::string::String>>()?
7678                                .unwrap_or_default();
7679                        }
7680                        __FieldTag::Unknown(key) => {
7681                            let value = map.next_value::<serde_json::Value>()?;
7682                            result._unknown_fields.insert(key, value);
7683                        }
7684                    }
7685                }
7686                std::result::Result::Ok(result)
7687            }
7688        }
7689        deserializer.deserialize_any(Visitor)
7690    }
7691}
7692
7693#[doc(hidden)]
7694impl serde::ser::Serialize for GetLoggingServerRequest {
7695    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7696    where
7697        S: serde::ser::Serializer,
7698    {
7699        use serde::ser::SerializeMap;
7700        #[allow(unused_imports)]
7701        use std::option::Option::Some;
7702        let mut state = serializer.serialize_map(std::option::Option::None)?;
7703        if !self.name.is_empty() {
7704            state.serialize_entry("name", &self.name)?;
7705        }
7706        if !self._unknown_fields.is_empty() {
7707            for (key, value) in self._unknown_fields.iter() {
7708                state.serialize_entry(key, &value)?;
7709            }
7710        }
7711        state.end()
7712    }
7713}
7714
7715/// Request message for
7716/// [VmwareEngine.CreateLoggingServer][google.cloud.vmwareengine.v1.VmwareEngine.CreateLoggingServer]
7717///
7718/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateLoggingServer]: crate::client::VmwareEngine::create_logging_server
7719#[derive(Clone, Debug, Default, PartialEq)]
7720#[non_exhaustive]
7721pub struct CreateLoggingServerRequest {
7722    /// Required. The resource name of the private cloud
7723    /// to create a new Logging Server in.
7724    /// Resource names are schemeless URIs that follow the conventions in
7725    /// <https://cloud.google.com/apis/design/resource_names>.
7726    /// For example:
7727    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
7728    pub parent: std::string::String,
7729
7730    /// Required. The initial description of a new logging server.
7731    pub logging_server: std::option::Option<crate::model::LoggingServer>,
7732
7733    /// Required. The user-provided identifier of the `LoggingServer` to be
7734    /// created. This identifier must be unique among `LoggingServer` resources
7735    /// within the parent and becomes the final token in the name URI.
7736    /// The identifier must meet the following requirements:
7737    ///
7738    /// * Only contains 1-63 alphanumeric characters and hyphens
7739    /// * Begins with an alphabetical character
7740    /// * Ends with a non-hyphen character
7741    /// * Not formatted as a UUID
7742    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
7743    ///   (section 3.5)
7744    pub logging_server_id: std::string::String,
7745
7746    /// Optional. A request ID to identify requests. Specify a unique request ID
7747    /// so that if you must retry your request, the server will know to ignore
7748    /// the request if it has already been completed. The server guarantees that a
7749    /// request doesn't result in creation of duplicate commitments for at least 60
7750    /// minutes.
7751    ///
7752    /// For example, consider a situation where you make an initial request and the
7753    /// request times out. If you make the request again with the same request ID,
7754    /// the server can check if original operation with the same request ID was
7755    /// received, and if so, will ignore the second request. This prevents clients
7756    /// from accidentally creating duplicate commitments.
7757    ///
7758    /// The request ID must be a valid UUID with the exception that zero UUID is
7759    /// not supported (00000000-0000-0000-0000-000000000000).
7760    pub request_id: std::string::String,
7761
7762    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7763}
7764
7765impl CreateLoggingServerRequest {
7766    pub fn new() -> Self {
7767        std::default::Default::default()
7768    }
7769
7770    /// Sets the value of [parent][crate::model::CreateLoggingServerRequest::parent].
7771    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7772        self.parent = v.into();
7773        self
7774    }
7775
7776    /// Sets the value of [logging_server][crate::model::CreateLoggingServerRequest::logging_server].
7777    pub fn set_logging_server<T>(mut self, v: T) -> Self
7778    where
7779        T: std::convert::Into<crate::model::LoggingServer>,
7780    {
7781        self.logging_server = std::option::Option::Some(v.into());
7782        self
7783    }
7784
7785    /// Sets or clears the value of [logging_server][crate::model::CreateLoggingServerRequest::logging_server].
7786    pub fn set_or_clear_logging_server<T>(mut self, v: std::option::Option<T>) -> Self
7787    where
7788        T: std::convert::Into<crate::model::LoggingServer>,
7789    {
7790        self.logging_server = v.map(|x| x.into());
7791        self
7792    }
7793
7794    /// Sets the value of [logging_server_id][crate::model::CreateLoggingServerRequest::logging_server_id].
7795    pub fn set_logging_server_id<T: std::convert::Into<std::string::String>>(
7796        mut self,
7797        v: T,
7798    ) -> Self {
7799        self.logging_server_id = v.into();
7800        self
7801    }
7802
7803    /// Sets the value of [request_id][crate::model::CreateLoggingServerRequest::request_id].
7804    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7805        self.request_id = v.into();
7806        self
7807    }
7808}
7809
7810impl wkt::message::Message for CreateLoggingServerRequest {
7811    fn typename() -> &'static str {
7812        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateLoggingServerRequest"
7813    }
7814}
7815
7816#[doc(hidden)]
7817impl<'de> serde::de::Deserialize<'de> for CreateLoggingServerRequest {
7818    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7819    where
7820        D: serde::Deserializer<'de>,
7821    {
7822        #[allow(non_camel_case_types)]
7823        #[doc(hidden)]
7824        #[derive(PartialEq, Eq, Hash)]
7825        enum __FieldTag {
7826            __parent,
7827            __logging_server,
7828            __logging_server_id,
7829            __request_id,
7830            Unknown(std::string::String),
7831        }
7832        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
7833            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7834            where
7835                D: serde::Deserializer<'de>,
7836            {
7837                struct Visitor;
7838                impl<'de> serde::de::Visitor<'de> for Visitor {
7839                    type Value = __FieldTag;
7840                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7841                        formatter.write_str("a field name for CreateLoggingServerRequest")
7842                    }
7843                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
7844                    where
7845                        E: serde::de::Error,
7846                    {
7847                        use std::result::Result::Ok;
7848                        use std::string::ToString;
7849                        match value {
7850                            "parent" => Ok(__FieldTag::__parent),
7851                            "loggingServer" => Ok(__FieldTag::__logging_server),
7852                            "logging_server" => Ok(__FieldTag::__logging_server),
7853                            "loggingServerId" => Ok(__FieldTag::__logging_server_id),
7854                            "logging_server_id" => Ok(__FieldTag::__logging_server_id),
7855                            "requestId" => Ok(__FieldTag::__request_id),
7856                            "request_id" => Ok(__FieldTag::__request_id),
7857                            _ => Ok(__FieldTag::Unknown(value.to_string())),
7858                        }
7859                    }
7860                }
7861                deserializer.deserialize_identifier(Visitor)
7862            }
7863        }
7864        struct Visitor;
7865        impl<'de> serde::de::Visitor<'de> for Visitor {
7866            type Value = CreateLoggingServerRequest;
7867            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
7868                formatter.write_str("struct CreateLoggingServerRequest")
7869            }
7870            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
7871            where
7872                A: serde::de::MapAccess<'de>,
7873            {
7874                #[allow(unused_imports)]
7875                use serde::de::Error;
7876                use std::option::Option::Some;
7877                let mut fields = std::collections::HashSet::new();
7878                let mut result = Self::Value::new();
7879                while let Some(tag) = map.next_key::<__FieldTag>()? {
7880                    #[allow(clippy::match_single_binding)]
7881                    match tag {
7882                        __FieldTag::__parent => {
7883                            if !fields.insert(__FieldTag::__parent) {
7884                                return std::result::Result::Err(A::Error::duplicate_field(
7885                                    "multiple values for parent",
7886                                ));
7887                            }
7888                            result.parent = map
7889                                .next_value::<std::option::Option<std::string::String>>()?
7890                                .unwrap_or_default();
7891                        }
7892                        __FieldTag::__logging_server => {
7893                            if !fields.insert(__FieldTag::__logging_server) {
7894                                return std::result::Result::Err(A::Error::duplicate_field(
7895                                    "multiple values for logging_server",
7896                                ));
7897                            }
7898                            result.logging_server = map
7899                                .next_value::<std::option::Option<crate::model::LoggingServer>>()?;
7900                        }
7901                        __FieldTag::__logging_server_id => {
7902                            if !fields.insert(__FieldTag::__logging_server_id) {
7903                                return std::result::Result::Err(A::Error::duplicate_field(
7904                                    "multiple values for logging_server_id",
7905                                ));
7906                            }
7907                            result.logging_server_id = map
7908                                .next_value::<std::option::Option<std::string::String>>()?
7909                                .unwrap_or_default();
7910                        }
7911                        __FieldTag::__request_id => {
7912                            if !fields.insert(__FieldTag::__request_id) {
7913                                return std::result::Result::Err(A::Error::duplicate_field(
7914                                    "multiple values for request_id",
7915                                ));
7916                            }
7917                            result.request_id = map
7918                                .next_value::<std::option::Option<std::string::String>>()?
7919                                .unwrap_or_default();
7920                        }
7921                        __FieldTag::Unknown(key) => {
7922                            let value = map.next_value::<serde_json::Value>()?;
7923                            result._unknown_fields.insert(key, value);
7924                        }
7925                    }
7926                }
7927                std::result::Result::Ok(result)
7928            }
7929        }
7930        deserializer.deserialize_any(Visitor)
7931    }
7932}
7933
7934#[doc(hidden)]
7935impl serde::ser::Serialize for CreateLoggingServerRequest {
7936    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7937    where
7938        S: serde::ser::Serializer,
7939    {
7940        use serde::ser::SerializeMap;
7941        #[allow(unused_imports)]
7942        use std::option::Option::Some;
7943        let mut state = serializer.serialize_map(std::option::Option::None)?;
7944        if !self.parent.is_empty() {
7945            state.serialize_entry("parent", &self.parent)?;
7946        }
7947        if self.logging_server.is_some() {
7948            state.serialize_entry("loggingServer", &self.logging_server)?;
7949        }
7950        if !self.logging_server_id.is_empty() {
7951            state.serialize_entry("loggingServerId", &self.logging_server_id)?;
7952        }
7953        if !self.request_id.is_empty() {
7954            state.serialize_entry("requestId", &self.request_id)?;
7955        }
7956        if !self._unknown_fields.is_empty() {
7957            for (key, value) in self._unknown_fields.iter() {
7958                state.serialize_entry(key, &value)?;
7959            }
7960        }
7961        state.end()
7962    }
7963}
7964
7965/// Request message for
7966/// [VmwareEngine.UpdateLoggingServer][google.cloud.vmwareengine.v1.VmwareEngine.UpdateLoggingServer]
7967///
7968/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateLoggingServer]: crate::client::VmwareEngine::update_logging_server
7969#[derive(Clone, Debug, Default, PartialEq)]
7970#[non_exhaustive]
7971pub struct UpdateLoggingServerRequest {
7972    /// Required. Field mask is used to specify the fields to be overwritten in the
7973    /// `LoggingServer` resource by the update.
7974    /// The fields specified in the `update_mask` are relative to the resource, not
7975    /// the full request. A field will be overwritten if it is in the mask. If the
7976    /// user does not provide a mask then all fields will be overwritten.
7977    pub update_mask: std::option::Option<wkt::FieldMask>,
7978
7979    /// Required. Logging server description.
7980    pub logging_server: std::option::Option<crate::model::LoggingServer>,
7981
7982    /// Optional. A request ID to identify requests. Specify a unique request ID
7983    /// so that if you must retry your request, the server will know to ignore
7984    /// the request if it has already been completed. The server guarantees that a
7985    /// request doesn't result in creation of duplicate commitments for at least 60
7986    /// minutes.
7987    ///
7988    /// For example, consider a situation where you make an initial request and the
7989    /// request times out. If you make the request again with the same request ID,
7990    /// the server can check if original operation with the same request ID was
7991    /// received, and if so, will ignore the second request. This prevents clients
7992    /// from accidentally creating duplicate commitments.
7993    ///
7994    /// The request ID must be a valid UUID with the exception that zero UUID is
7995    /// not supported (00000000-0000-0000-0000-000000000000).
7996    pub request_id: std::string::String,
7997
7998    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7999}
8000
8001impl UpdateLoggingServerRequest {
8002    pub fn new() -> Self {
8003        std::default::Default::default()
8004    }
8005
8006    /// Sets the value of [update_mask][crate::model::UpdateLoggingServerRequest::update_mask].
8007    pub fn set_update_mask<T>(mut self, v: T) -> Self
8008    where
8009        T: std::convert::Into<wkt::FieldMask>,
8010    {
8011        self.update_mask = std::option::Option::Some(v.into());
8012        self
8013    }
8014
8015    /// Sets or clears the value of [update_mask][crate::model::UpdateLoggingServerRequest::update_mask].
8016    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
8017    where
8018        T: std::convert::Into<wkt::FieldMask>,
8019    {
8020        self.update_mask = v.map(|x| x.into());
8021        self
8022    }
8023
8024    /// Sets the value of [logging_server][crate::model::UpdateLoggingServerRequest::logging_server].
8025    pub fn set_logging_server<T>(mut self, v: T) -> Self
8026    where
8027        T: std::convert::Into<crate::model::LoggingServer>,
8028    {
8029        self.logging_server = std::option::Option::Some(v.into());
8030        self
8031    }
8032
8033    /// Sets or clears the value of [logging_server][crate::model::UpdateLoggingServerRequest::logging_server].
8034    pub fn set_or_clear_logging_server<T>(mut self, v: std::option::Option<T>) -> Self
8035    where
8036        T: std::convert::Into<crate::model::LoggingServer>,
8037    {
8038        self.logging_server = v.map(|x| x.into());
8039        self
8040    }
8041
8042    /// Sets the value of [request_id][crate::model::UpdateLoggingServerRequest::request_id].
8043    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8044        self.request_id = v.into();
8045        self
8046    }
8047}
8048
8049impl wkt::message::Message for UpdateLoggingServerRequest {
8050    fn typename() -> &'static str {
8051        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateLoggingServerRequest"
8052    }
8053}
8054
8055#[doc(hidden)]
8056impl<'de> serde::de::Deserialize<'de> for UpdateLoggingServerRequest {
8057    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8058    where
8059        D: serde::Deserializer<'de>,
8060    {
8061        #[allow(non_camel_case_types)]
8062        #[doc(hidden)]
8063        #[derive(PartialEq, Eq, Hash)]
8064        enum __FieldTag {
8065            __update_mask,
8066            __logging_server,
8067            __request_id,
8068            Unknown(std::string::String),
8069        }
8070        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
8071            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8072            where
8073                D: serde::Deserializer<'de>,
8074            {
8075                struct Visitor;
8076                impl<'de> serde::de::Visitor<'de> for Visitor {
8077                    type Value = __FieldTag;
8078                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8079                        formatter.write_str("a field name for UpdateLoggingServerRequest")
8080                    }
8081                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
8082                    where
8083                        E: serde::de::Error,
8084                    {
8085                        use std::result::Result::Ok;
8086                        use std::string::ToString;
8087                        match value {
8088                            "updateMask" => Ok(__FieldTag::__update_mask),
8089                            "update_mask" => Ok(__FieldTag::__update_mask),
8090                            "loggingServer" => Ok(__FieldTag::__logging_server),
8091                            "logging_server" => Ok(__FieldTag::__logging_server),
8092                            "requestId" => Ok(__FieldTag::__request_id),
8093                            "request_id" => Ok(__FieldTag::__request_id),
8094                            _ => Ok(__FieldTag::Unknown(value.to_string())),
8095                        }
8096                    }
8097                }
8098                deserializer.deserialize_identifier(Visitor)
8099            }
8100        }
8101        struct Visitor;
8102        impl<'de> serde::de::Visitor<'de> for Visitor {
8103            type Value = UpdateLoggingServerRequest;
8104            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8105                formatter.write_str("struct UpdateLoggingServerRequest")
8106            }
8107            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
8108            where
8109                A: serde::de::MapAccess<'de>,
8110            {
8111                #[allow(unused_imports)]
8112                use serde::de::Error;
8113                use std::option::Option::Some;
8114                let mut fields = std::collections::HashSet::new();
8115                let mut result = Self::Value::new();
8116                while let Some(tag) = map.next_key::<__FieldTag>()? {
8117                    #[allow(clippy::match_single_binding)]
8118                    match tag {
8119                        __FieldTag::__update_mask => {
8120                            if !fields.insert(__FieldTag::__update_mask) {
8121                                return std::result::Result::Err(A::Error::duplicate_field(
8122                                    "multiple values for update_mask",
8123                                ));
8124                            }
8125                            result.update_mask =
8126                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
8127                        }
8128                        __FieldTag::__logging_server => {
8129                            if !fields.insert(__FieldTag::__logging_server) {
8130                                return std::result::Result::Err(A::Error::duplicate_field(
8131                                    "multiple values for logging_server",
8132                                ));
8133                            }
8134                            result.logging_server = map
8135                                .next_value::<std::option::Option<crate::model::LoggingServer>>()?;
8136                        }
8137                        __FieldTag::__request_id => {
8138                            if !fields.insert(__FieldTag::__request_id) {
8139                                return std::result::Result::Err(A::Error::duplicate_field(
8140                                    "multiple values for request_id",
8141                                ));
8142                            }
8143                            result.request_id = map
8144                                .next_value::<std::option::Option<std::string::String>>()?
8145                                .unwrap_or_default();
8146                        }
8147                        __FieldTag::Unknown(key) => {
8148                            let value = map.next_value::<serde_json::Value>()?;
8149                            result._unknown_fields.insert(key, value);
8150                        }
8151                    }
8152                }
8153                std::result::Result::Ok(result)
8154            }
8155        }
8156        deserializer.deserialize_any(Visitor)
8157    }
8158}
8159
8160#[doc(hidden)]
8161impl serde::ser::Serialize for UpdateLoggingServerRequest {
8162    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8163    where
8164        S: serde::ser::Serializer,
8165    {
8166        use serde::ser::SerializeMap;
8167        #[allow(unused_imports)]
8168        use std::option::Option::Some;
8169        let mut state = serializer.serialize_map(std::option::Option::None)?;
8170        if self.update_mask.is_some() {
8171            state.serialize_entry("updateMask", &self.update_mask)?;
8172        }
8173        if self.logging_server.is_some() {
8174            state.serialize_entry("loggingServer", &self.logging_server)?;
8175        }
8176        if !self.request_id.is_empty() {
8177            state.serialize_entry("requestId", &self.request_id)?;
8178        }
8179        if !self._unknown_fields.is_empty() {
8180            for (key, value) in self._unknown_fields.iter() {
8181                state.serialize_entry(key, &value)?;
8182            }
8183        }
8184        state.end()
8185    }
8186}
8187
8188/// Request message for
8189/// [VmwareEngine.DeleteLoggingServer][google.cloud.vmwareengine.v1.VmwareEngine.DeleteLoggingServer]
8190///
8191/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteLoggingServer]: crate::client::VmwareEngine::delete_logging_server
8192#[derive(Clone, Debug, Default, PartialEq)]
8193#[non_exhaustive]
8194pub struct DeleteLoggingServerRequest {
8195    /// Required. The resource name of the logging server to delete.
8196    /// Resource names are schemeless URIs that follow the conventions in
8197    /// <https://cloud.google.com/apis/design/resource_names>.
8198    /// For example:
8199    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
8200    pub name: std::string::String,
8201
8202    /// Optional. A request ID to identify requests. Specify a unique request ID
8203    /// so that if you must retry your request, the server will know to ignore
8204    /// the request if it has already been completed. The server guarantees that a
8205    /// request doesn't result in creation of duplicate commitments for at least 60
8206    /// minutes.
8207    ///
8208    /// For example, consider a situation where you make an initial request and the
8209    /// request times out. If you make the request again with the same request
8210    /// ID, the server can check if original operation with the same request ID
8211    /// was received, and if so, will ignore the second request. This prevents
8212    /// clients from accidentally creating duplicate commitments.
8213    ///
8214    /// The request ID must be a valid UUID with the exception that zero UUID is
8215    /// not supported (00000000-0000-0000-0000-000000000000).
8216    pub request_id: std::string::String,
8217
8218    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8219}
8220
8221impl DeleteLoggingServerRequest {
8222    pub fn new() -> Self {
8223        std::default::Default::default()
8224    }
8225
8226    /// Sets the value of [name][crate::model::DeleteLoggingServerRequest::name].
8227    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8228        self.name = v.into();
8229        self
8230    }
8231
8232    /// Sets the value of [request_id][crate::model::DeleteLoggingServerRequest::request_id].
8233    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8234        self.request_id = v.into();
8235        self
8236    }
8237}
8238
8239impl wkt::message::Message for DeleteLoggingServerRequest {
8240    fn typename() -> &'static str {
8241        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteLoggingServerRequest"
8242    }
8243}
8244
8245#[doc(hidden)]
8246impl<'de> serde::de::Deserialize<'de> for DeleteLoggingServerRequest {
8247    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8248    where
8249        D: serde::Deserializer<'de>,
8250    {
8251        #[allow(non_camel_case_types)]
8252        #[doc(hidden)]
8253        #[derive(PartialEq, Eq, Hash)]
8254        enum __FieldTag {
8255            __name,
8256            __request_id,
8257            Unknown(std::string::String),
8258        }
8259        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
8260            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8261            where
8262                D: serde::Deserializer<'de>,
8263            {
8264                struct Visitor;
8265                impl<'de> serde::de::Visitor<'de> for Visitor {
8266                    type Value = __FieldTag;
8267                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8268                        formatter.write_str("a field name for DeleteLoggingServerRequest")
8269                    }
8270                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
8271                    where
8272                        E: serde::de::Error,
8273                    {
8274                        use std::result::Result::Ok;
8275                        use std::string::ToString;
8276                        match value {
8277                            "name" => Ok(__FieldTag::__name),
8278                            "requestId" => Ok(__FieldTag::__request_id),
8279                            "request_id" => Ok(__FieldTag::__request_id),
8280                            _ => Ok(__FieldTag::Unknown(value.to_string())),
8281                        }
8282                    }
8283                }
8284                deserializer.deserialize_identifier(Visitor)
8285            }
8286        }
8287        struct Visitor;
8288        impl<'de> serde::de::Visitor<'de> for Visitor {
8289            type Value = DeleteLoggingServerRequest;
8290            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8291                formatter.write_str("struct DeleteLoggingServerRequest")
8292            }
8293            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
8294            where
8295                A: serde::de::MapAccess<'de>,
8296            {
8297                #[allow(unused_imports)]
8298                use serde::de::Error;
8299                use std::option::Option::Some;
8300                let mut fields = std::collections::HashSet::new();
8301                let mut result = Self::Value::new();
8302                while let Some(tag) = map.next_key::<__FieldTag>()? {
8303                    #[allow(clippy::match_single_binding)]
8304                    match tag {
8305                        __FieldTag::__name => {
8306                            if !fields.insert(__FieldTag::__name) {
8307                                return std::result::Result::Err(A::Error::duplicate_field(
8308                                    "multiple values for name",
8309                                ));
8310                            }
8311                            result.name = map
8312                                .next_value::<std::option::Option<std::string::String>>()?
8313                                .unwrap_or_default();
8314                        }
8315                        __FieldTag::__request_id => {
8316                            if !fields.insert(__FieldTag::__request_id) {
8317                                return std::result::Result::Err(A::Error::duplicate_field(
8318                                    "multiple values for request_id",
8319                                ));
8320                            }
8321                            result.request_id = map
8322                                .next_value::<std::option::Option<std::string::String>>()?
8323                                .unwrap_or_default();
8324                        }
8325                        __FieldTag::Unknown(key) => {
8326                            let value = map.next_value::<serde_json::Value>()?;
8327                            result._unknown_fields.insert(key, value);
8328                        }
8329                    }
8330                }
8331                std::result::Result::Ok(result)
8332            }
8333        }
8334        deserializer.deserialize_any(Visitor)
8335    }
8336}
8337
8338#[doc(hidden)]
8339impl serde::ser::Serialize for DeleteLoggingServerRequest {
8340    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8341    where
8342        S: serde::ser::Serializer,
8343    {
8344        use serde::ser::SerializeMap;
8345        #[allow(unused_imports)]
8346        use std::option::Option::Some;
8347        let mut state = serializer.serialize_map(std::option::Option::None)?;
8348        if !self.name.is_empty() {
8349            state.serialize_entry("name", &self.name)?;
8350        }
8351        if !self.request_id.is_empty() {
8352            state.serialize_entry("requestId", &self.request_id)?;
8353        }
8354        if !self._unknown_fields.is_empty() {
8355            for (key, value) in self._unknown_fields.iter() {
8356                state.serialize_entry(key, &value)?;
8357            }
8358        }
8359        state.end()
8360    }
8361}
8362
8363/// Represents the metadata of the long-running operation.
8364#[derive(Clone, Debug, Default, PartialEq)]
8365#[non_exhaustive]
8366pub struct OperationMetadata {
8367    /// Output only. The time the operation was created.
8368    pub create_time: std::option::Option<wkt::Timestamp>,
8369
8370    /// Output only. The time the operation finished running.
8371    pub end_time: std::option::Option<wkt::Timestamp>,
8372
8373    /// Output only. Server-defined resource path for the target of the operation.
8374    pub target: std::string::String,
8375
8376    /// Output only. Name of the verb executed by the operation.
8377    pub verb: std::string::String,
8378
8379    /// Output only. Human-readable status of the operation, if any.
8380    pub status_message: std::string::String,
8381
8382    /// Output only. True if the user has requested cancellation
8383    /// of the operation; false otherwise.
8384    /// Operations that have successfully been cancelled
8385    /// have [Operation.error][] value with a
8386    /// [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
8387    /// `Code.CANCELLED`.
8388    ///
8389    /// [google.rpc.Status.code]: rpc::model::Status::code
8390    pub requested_cancellation: bool,
8391
8392    /// Output only. API version used to start the operation.
8393    pub api_version: std::string::String,
8394
8395    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8396}
8397
8398impl OperationMetadata {
8399    pub fn new() -> Self {
8400        std::default::Default::default()
8401    }
8402
8403    /// Sets the value of [create_time][crate::model::OperationMetadata::create_time].
8404    pub fn set_create_time<T>(mut self, v: T) -> Self
8405    where
8406        T: std::convert::Into<wkt::Timestamp>,
8407    {
8408        self.create_time = std::option::Option::Some(v.into());
8409        self
8410    }
8411
8412    /// Sets or clears the value of [create_time][crate::model::OperationMetadata::create_time].
8413    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
8414    where
8415        T: std::convert::Into<wkt::Timestamp>,
8416    {
8417        self.create_time = v.map(|x| x.into());
8418        self
8419    }
8420
8421    /// Sets the value of [end_time][crate::model::OperationMetadata::end_time].
8422    pub fn set_end_time<T>(mut self, v: T) -> Self
8423    where
8424        T: std::convert::Into<wkt::Timestamp>,
8425    {
8426        self.end_time = std::option::Option::Some(v.into());
8427        self
8428    }
8429
8430    /// Sets or clears the value of [end_time][crate::model::OperationMetadata::end_time].
8431    pub fn set_or_clear_end_time<T>(mut self, v: std::option::Option<T>) -> Self
8432    where
8433        T: std::convert::Into<wkt::Timestamp>,
8434    {
8435        self.end_time = v.map(|x| x.into());
8436        self
8437    }
8438
8439    /// Sets the value of [target][crate::model::OperationMetadata::target].
8440    pub fn set_target<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8441        self.target = v.into();
8442        self
8443    }
8444
8445    /// Sets the value of [verb][crate::model::OperationMetadata::verb].
8446    pub fn set_verb<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8447        self.verb = v.into();
8448        self
8449    }
8450
8451    /// Sets the value of [status_message][crate::model::OperationMetadata::status_message].
8452    pub fn set_status_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8453        self.status_message = v.into();
8454        self
8455    }
8456
8457    /// Sets the value of [requested_cancellation][crate::model::OperationMetadata::requested_cancellation].
8458    pub fn set_requested_cancellation<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8459        self.requested_cancellation = v.into();
8460        self
8461    }
8462
8463    /// Sets the value of [api_version][crate::model::OperationMetadata::api_version].
8464    pub fn set_api_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8465        self.api_version = v.into();
8466        self
8467    }
8468}
8469
8470impl wkt::message::Message for OperationMetadata {
8471    fn typename() -> &'static str {
8472        "type.googleapis.com/google.cloud.vmwareengine.v1.OperationMetadata"
8473    }
8474}
8475
8476#[doc(hidden)]
8477impl<'de> serde::de::Deserialize<'de> for OperationMetadata {
8478    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8479    where
8480        D: serde::Deserializer<'de>,
8481    {
8482        #[allow(non_camel_case_types)]
8483        #[doc(hidden)]
8484        #[derive(PartialEq, Eq, Hash)]
8485        enum __FieldTag {
8486            __create_time,
8487            __end_time,
8488            __target,
8489            __verb,
8490            __status_message,
8491            __requested_cancellation,
8492            __api_version,
8493            Unknown(std::string::String),
8494        }
8495        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
8496            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8497            where
8498                D: serde::Deserializer<'de>,
8499            {
8500                struct Visitor;
8501                impl<'de> serde::de::Visitor<'de> for Visitor {
8502                    type Value = __FieldTag;
8503                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8504                        formatter.write_str("a field name for OperationMetadata")
8505                    }
8506                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
8507                    where
8508                        E: serde::de::Error,
8509                    {
8510                        use std::result::Result::Ok;
8511                        use std::string::ToString;
8512                        match value {
8513                            "createTime" => Ok(__FieldTag::__create_time),
8514                            "create_time" => Ok(__FieldTag::__create_time),
8515                            "endTime" => Ok(__FieldTag::__end_time),
8516                            "end_time" => Ok(__FieldTag::__end_time),
8517                            "target" => Ok(__FieldTag::__target),
8518                            "verb" => Ok(__FieldTag::__verb),
8519                            "statusMessage" => Ok(__FieldTag::__status_message),
8520                            "status_message" => Ok(__FieldTag::__status_message),
8521                            "requestedCancellation" => Ok(__FieldTag::__requested_cancellation),
8522                            "requested_cancellation" => Ok(__FieldTag::__requested_cancellation),
8523                            "apiVersion" => Ok(__FieldTag::__api_version),
8524                            "api_version" => Ok(__FieldTag::__api_version),
8525                            _ => Ok(__FieldTag::Unknown(value.to_string())),
8526                        }
8527                    }
8528                }
8529                deserializer.deserialize_identifier(Visitor)
8530            }
8531        }
8532        struct Visitor;
8533        impl<'de> serde::de::Visitor<'de> for Visitor {
8534            type Value = OperationMetadata;
8535            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8536                formatter.write_str("struct OperationMetadata")
8537            }
8538            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
8539            where
8540                A: serde::de::MapAccess<'de>,
8541            {
8542                #[allow(unused_imports)]
8543                use serde::de::Error;
8544                use std::option::Option::Some;
8545                let mut fields = std::collections::HashSet::new();
8546                let mut result = Self::Value::new();
8547                while let Some(tag) = map.next_key::<__FieldTag>()? {
8548                    #[allow(clippy::match_single_binding)]
8549                    match tag {
8550                        __FieldTag::__create_time => {
8551                            if !fields.insert(__FieldTag::__create_time) {
8552                                return std::result::Result::Err(A::Error::duplicate_field(
8553                                    "multiple values for create_time",
8554                                ));
8555                            }
8556                            result.create_time =
8557                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
8558                        }
8559                        __FieldTag::__end_time => {
8560                            if !fields.insert(__FieldTag::__end_time) {
8561                                return std::result::Result::Err(A::Error::duplicate_field(
8562                                    "multiple values for end_time",
8563                                ));
8564                            }
8565                            result.end_time =
8566                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
8567                        }
8568                        __FieldTag::__target => {
8569                            if !fields.insert(__FieldTag::__target) {
8570                                return std::result::Result::Err(A::Error::duplicate_field(
8571                                    "multiple values for target",
8572                                ));
8573                            }
8574                            result.target = map
8575                                .next_value::<std::option::Option<std::string::String>>()?
8576                                .unwrap_or_default();
8577                        }
8578                        __FieldTag::__verb => {
8579                            if !fields.insert(__FieldTag::__verb) {
8580                                return std::result::Result::Err(A::Error::duplicate_field(
8581                                    "multiple values for verb",
8582                                ));
8583                            }
8584                            result.verb = map
8585                                .next_value::<std::option::Option<std::string::String>>()?
8586                                .unwrap_or_default();
8587                        }
8588                        __FieldTag::__status_message => {
8589                            if !fields.insert(__FieldTag::__status_message) {
8590                                return std::result::Result::Err(A::Error::duplicate_field(
8591                                    "multiple values for status_message",
8592                                ));
8593                            }
8594                            result.status_message = map
8595                                .next_value::<std::option::Option<std::string::String>>()?
8596                                .unwrap_or_default();
8597                        }
8598                        __FieldTag::__requested_cancellation => {
8599                            if !fields.insert(__FieldTag::__requested_cancellation) {
8600                                return std::result::Result::Err(A::Error::duplicate_field(
8601                                    "multiple values for requested_cancellation",
8602                                ));
8603                            }
8604                            result.requested_cancellation = map
8605                                .next_value::<std::option::Option<bool>>()?
8606                                .unwrap_or_default();
8607                        }
8608                        __FieldTag::__api_version => {
8609                            if !fields.insert(__FieldTag::__api_version) {
8610                                return std::result::Result::Err(A::Error::duplicate_field(
8611                                    "multiple values for api_version",
8612                                ));
8613                            }
8614                            result.api_version = map
8615                                .next_value::<std::option::Option<std::string::String>>()?
8616                                .unwrap_or_default();
8617                        }
8618                        __FieldTag::Unknown(key) => {
8619                            let value = map.next_value::<serde_json::Value>()?;
8620                            result._unknown_fields.insert(key, value);
8621                        }
8622                    }
8623                }
8624                std::result::Result::Ok(result)
8625            }
8626        }
8627        deserializer.deserialize_any(Visitor)
8628    }
8629}
8630
8631#[doc(hidden)]
8632impl serde::ser::Serialize for OperationMetadata {
8633    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8634    where
8635        S: serde::ser::Serializer,
8636    {
8637        use serde::ser::SerializeMap;
8638        #[allow(unused_imports)]
8639        use std::option::Option::Some;
8640        let mut state = serializer.serialize_map(std::option::Option::None)?;
8641        if self.create_time.is_some() {
8642            state.serialize_entry("createTime", &self.create_time)?;
8643        }
8644        if self.end_time.is_some() {
8645            state.serialize_entry("endTime", &self.end_time)?;
8646        }
8647        if !self.target.is_empty() {
8648            state.serialize_entry("target", &self.target)?;
8649        }
8650        if !self.verb.is_empty() {
8651            state.serialize_entry("verb", &self.verb)?;
8652        }
8653        if !self.status_message.is_empty() {
8654            state.serialize_entry("statusMessage", &self.status_message)?;
8655        }
8656        if !wkt::internal::is_default(&self.requested_cancellation) {
8657            state.serialize_entry("requestedCancellation", &self.requested_cancellation)?;
8658        }
8659        if !self.api_version.is_empty() {
8660            state.serialize_entry("apiVersion", &self.api_version)?;
8661        }
8662        if !self._unknown_fields.is_empty() {
8663            for (key, value) in self._unknown_fields.iter() {
8664                state.serialize_entry(key, &value)?;
8665            }
8666        }
8667        state.end()
8668    }
8669}
8670
8671/// Request message for
8672/// [VmwareEngine.ListNodeTypes][google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes]
8673///
8674/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes]: crate::client::VmwareEngine::list_node_types
8675#[derive(Clone, Debug, Default, PartialEq)]
8676#[non_exhaustive]
8677pub struct ListNodeTypesRequest {
8678    /// Required. The resource name of the location to be queried for node types.
8679    /// Resource names are schemeless URIs that follow the conventions in
8680    /// <https://cloud.google.com/apis/design/resource_names>.
8681    /// For example:
8682    /// `projects/my-project/locations/us-central1-a`
8683    pub parent: std::string::String,
8684
8685    /// The maximum number of node types to return in one page.
8686    /// The service may return fewer than this value.
8687    /// The maximum value is coerced to 1000.
8688    /// The default value of this field is 500.
8689    pub page_size: i32,
8690
8691    /// A page token, received from a previous `ListNodeTypes` call.
8692    /// Provide this to retrieve the subsequent page.
8693    ///
8694    /// When paginating, all other parameters provided to
8695    /// `ListNodeTypes` must match the call that provided the page token.
8696    pub page_token: std::string::String,
8697
8698    /// A filter expression that matches resources returned in the response.
8699    /// The expression must specify the field name, a comparison
8700    /// operator, and the value that you want to use for filtering. The value
8701    /// must be a string, a number, or a boolean. The comparison operator
8702    /// must be `=`, `!=`, `>`, or `<`.
8703    ///
8704    /// For example, if you are filtering a list of node types, you can
8705    /// exclude the ones named `standard-72` by specifying
8706    /// `name != "standard-72"`.
8707    ///
8708    /// To filter on multiple expressions, provide each separate expression within
8709    /// parentheses. For example:
8710    ///
8711    /// ```norust
8712    /// (name = "standard-72")
8713    /// (virtual_cpu_count > 2)
8714    /// ```
8715    ///
8716    /// By default, each expression is an `AND` expression. However, you
8717    /// can include `AND` and `OR` expressions explicitly.
8718    /// For example:
8719    ///
8720    /// ```norust
8721    /// (name = "standard-96") AND
8722    /// (virtual_cpu_count > 2) OR
8723    /// (name = "standard-72")
8724    /// ```
8725    pub filter: std::string::String,
8726
8727    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8728}
8729
8730impl ListNodeTypesRequest {
8731    pub fn new() -> Self {
8732        std::default::Default::default()
8733    }
8734
8735    /// Sets the value of [parent][crate::model::ListNodeTypesRequest::parent].
8736    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8737        self.parent = v.into();
8738        self
8739    }
8740
8741    /// Sets the value of [page_size][crate::model::ListNodeTypesRequest::page_size].
8742    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
8743        self.page_size = v.into();
8744        self
8745    }
8746
8747    /// Sets the value of [page_token][crate::model::ListNodeTypesRequest::page_token].
8748    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8749        self.page_token = v.into();
8750        self
8751    }
8752
8753    /// Sets the value of [filter][crate::model::ListNodeTypesRequest::filter].
8754    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8755        self.filter = v.into();
8756        self
8757    }
8758}
8759
8760impl wkt::message::Message for ListNodeTypesRequest {
8761    fn typename() -> &'static str {
8762        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNodeTypesRequest"
8763    }
8764}
8765
8766#[doc(hidden)]
8767impl<'de> serde::de::Deserialize<'de> for ListNodeTypesRequest {
8768    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8769    where
8770        D: serde::Deserializer<'de>,
8771    {
8772        #[allow(non_camel_case_types)]
8773        #[doc(hidden)]
8774        #[derive(PartialEq, Eq, Hash)]
8775        enum __FieldTag {
8776            __parent,
8777            __page_size,
8778            __page_token,
8779            __filter,
8780            Unknown(std::string::String),
8781        }
8782        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
8783            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8784            where
8785                D: serde::Deserializer<'de>,
8786            {
8787                struct Visitor;
8788                impl<'de> serde::de::Visitor<'de> for Visitor {
8789                    type Value = __FieldTag;
8790                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8791                        formatter.write_str("a field name for ListNodeTypesRequest")
8792                    }
8793                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
8794                    where
8795                        E: serde::de::Error,
8796                    {
8797                        use std::result::Result::Ok;
8798                        use std::string::ToString;
8799                        match value {
8800                            "parent" => Ok(__FieldTag::__parent),
8801                            "pageSize" => Ok(__FieldTag::__page_size),
8802                            "page_size" => Ok(__FieldTag::__page_size),
8803                            "pageToken" => Ok(__FieldTag::__page_token),
8804                            "page_token" => Ok(__FieldTag::__page_token),
8805                            "filter" => Ok(__FieldTag::__filter),
8806                            _ => Ok(__FieldTag::Unknown(value.to_string())),
8807                        }
8808                    }
8809                }
8810                deserializer.deserialize_identifier(Visitor)
8811            }
8812        }
8813        struct Visitor;
8814        impl<'de> serde::de::Visitor<'de> for Visitor {
8815            type Value = ListNodeTypesRequest;
8816            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
8817                formatter.write_str("struct ListNodeTypesRequest")
8818            }
8819            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
8820            where
8821                A: serde::de::MapAccess<'de>,
8822            {
8823                #[allow(unused_imports)]
8824                use serde::de::Error;
8825                use std::option::Option::Some;
8826                let mut fields = std::collections::HashSet::new();
8827                let mut result = Self::Value::new();
8828                while let Some(tag) = map.next_key::<__FieldTag>()? {
8829                    #[allow(clippy::match_single_binding)]
8830                    match tag {
8831                        __FieldTag::__parent => {
8832                            if !fields.insert(__FieldTag::__parent) {
8833                                return std::result::Result::Err(A::Error::duplicate_field(
8834                                    "multiple values for parent",
8835                                ));
8836                            }
8837                            result.parent = map
8838                                .next_value::<std::option::Option<std::string::String>>()?
8839                                .unwrap_or_default();
8840                        }
8841                        __FieldTag::__page_size => {
8842                            if !fields.insert(__FieldTag::__page_size) {
8843                                return std::result::Result::Err(A::Error::duplicate_field(
8844                                    "multiple values for page_size",
8845                                ));
8846                            }
8847                            struct __With(std::option::Option<i32>);
8848                            impl<'de> serde::de::Deserialize<'de> for __With {
8849                                fn deserialize<D>(
8850                                    deserializer: D,
8851                                ) -> std::result::Result<Self, D::Error>
8852                                where
8853                                    D: serde::de::Deserializer<'de>,
8854                                {
8855                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
8856                                }
8857                            }
8858                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
8859                        }
8860                        __FieldTag::__page_token => {
8861                            if !fields.insert(__FieldTag::__page_token) {
8862                                return std::result::Result::Err(A::Error::duplicate_field(
8863                                    "multiple values for page_token",
8864                                ));
8865                            }
8866                            result.page_token = map
8867                                .next_value::<std::option::Option<std::string::String>>()?
8868                                .unwrap_or_default();
8869                        }
8870                        __FieldTag::__filter => {
8871                            if !fields.insert(__FieldTag::__filter) {
8872                                return std::result::Result::Err(A::Error::duplicate_field(
8873                                    "multiple values for filter",
8874                                ));
8875                            }
8876                            result.filter = map
8877                                .next_value::<std::option::Option<std::string::String>>()?
8878                                .unwrap_or_default();
8879                        }
8880                        __FieldTag::Unknown(key) => {
8881                            let value = map.next_value::<serde_json::Value>()?;
8882                            result._unknown_fields.insert(key, value);
8883                        }
8884                    }
8885                }
8886                std::result::Result::Ok(result)
8887            }
8888        }
8889        deserializer.deserialize_any(Visitor)
8890    }
8891}
8892
8893#[doc(hidden)]
8894impl serde::ser::Serialize for ListNodeTypesRequest {
8895    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8896    where
8897        S: serde::ser::Serializer,
8898    {
8899        use serde::ser::SerializeMap;
8900        #[allow(unused_imports)]
8901        use std::option::Option::Some;
8902        let mut state = serializer.serialize_map(std::option::Option::None)?;
8903        if !self.parent.is_empty() {
8904            state.serialize_entry("parent", &self.parent)?;
8905        }
8906        if !wkt::internal::is_default(&self.page_size) {
8907            struct __With<'a>(&'a i32);
8908            impl<'a> serde::ser::Serialize for __With<'a> {
8909                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8910                where
8911                    S: serde::ser::Serializer,
8912                {
8913                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
8914                }
8915            }
8916            state.serialize_entry("pageSize", &__With(&self.page_size))?;
8917        }
8918        if !self.page_token.is_empty() {
8919            state.serialize_entry("pageToken", &self.page_token)?;
8920        }
8921        if !self.filter.is_empty() {
8922            state.serialize_entry("filter", &self.filter)?;
8923        }
8924        if !self._unknown_fields.is_empty() {
8925            for (key, value) in self._unknown_fields.iter() {
8926                state.serialize_entry(key, &value)?;
8927            }
8928        }
8929        state.end()
8930    }
8931}
8932
8933/// Response message for
8934/// [VmwareEngine.ListNodeTypes][google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes]
8935///
8936/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes]: crate::client::VmwareEngine::list_node_types
8937#[derive(Clone, Debug, Default, PartialEq)]
8938#[non_exhaustive]
8939pub struct ListNodeTypesResponse {
8940    /// A list of Node Types.
8941    pub node_types: std::vec::Vec<crate::model::NodeType>,
8942
8943    /// A token, which can be sent as `page_token` to retrieve the next page.
8944    /// If this field is omitted, there are no subsequent pages.
8945    pub next_page_token: std::string::String,
8946
8947    /// Locations that could not be reached when making an aggregated query using
8948    /// wildcards.
8949    pub unreachable: std::vec::Vec<std::string::String>,
8950
8951    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8952}
8953
8954impl ListNodeTypesResponse {
8955    pub fn new() -> Self {
8956        std::default::Default::default()
8957    }
8958
8959    /// Sets the value of [node_types][crate::model::ListNodeTypesResponse::node_types].
8960    pub fn set_node_types<T, V>(mut self, v: T) -> Self
8961    where
8962        T: std::iter::IntoIterator<Item = V>,
8963        V: std::convert::Into<crate::model::NodeType>,
8964    {
8965        use std::iter::Iterator;
8966        self.node_types = v.into_iter().map(|i| i.into()).collect();
8967        self
8968    }
8969
8970    /// Sets the value of [next_page_token][crate::model::ListNodeTypesResponse::next_page_token].
8971    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8972        self.next_page_token = v.into();
8973        self
8974    }
8975
8976    /// Sets the value of [unreachable][crate::model::ListNodeTypesResponse::unreachable].
8977    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
8978    where
8979        T: std::iter::IntoIterator<Item = V>,
8980        V: std::convert::Into<std::string::String>,
8981    {
8982        use std::iter::Iterator;
8983        self.unreachable = v.into_iter().map(|i| i.into()).collect();
8984        self
8985    }
8986}
8987
8988impl wkt::message::Message for ListNodeTypesResponse {
8989    fn typename() -> &'static str {
8990        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNodeTypesResponse"
8991    }
8992}
8993
8994#[doc(hidden)]
8995impl gax::paginator::internal::PageableResponse for ListNodeTypesResponse {
8996    type PageItem = crate::model::NodeType;
8997
8998    fn items(self) -> std::vec::Vec<Self::PageItem> {
8999        self.node_types
9000    }
9001
9002    fn next_page_token(&self) -> std::string::String {
9003        use std::clone::Clone;
9004        self.next_page_token.clone()
9005    }
9006}
9007
9008#[doc(hidden)]
9009impl<'de> serde::de::Deserialize<'de> for ListNodeTypesResponse {
9010    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9011    where
9012        D: serde::Deserializer<'de>,
9013    {
9014        #[allow(non_camel_case_types)]
9015        #[doc(hidden)]
9016        #[derive(PartialEq, Eq, Hash)]
9017        enum __FieldTag {
9018            __node_types,
9019            __next_page_token,
9020            __unreachable,
9021            Unknown(std::string::String),
9022        }
9023        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9024            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9025            where
9026                D: serde::Deserializer<'de>,
9027            {
9028                struct Visitor;
9029                impl<'de> serde::de::Visitor<'de> for Visitor {
9030                    type Value = __FieldTag;
9031                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9032                        formatter.write_str("a field name for ListNodeTypesResponse")
9033                    }
9034                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9035                    where
9036                        E: serde::de::Error,
9037                    {
9038                        use std::result::Result::Ok;
9039                        use std::string::ToString;
9040                        match value {
9041                            "nodeTypes" => Ok(__FieldTag::__node_types),
9042                            "node_types" => Ok(__FieldTag::__node_types),
9043                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
9044                            "next_page_token" => Ok(__FieldTag::__next_page_token),
9045                            "unreachable" => Ok(__FieldTag::__unreachable),
9046                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9047                        }
9048                    }
9049                }
9050                deserializer.deserialize_identifier(Visitor)
9051            }
9052        }
9053        struct Visitor;
9054        impl<'de> serde::de::Visitor<'de> for Visitor {
9055            type Value = ListNodeTypesResponse;
9056            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9057                formatter.write_str("struct ListNodeTypesResponse")
9058            }
9059            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9060            where
9061                A: serde::de::MapAccess<'de>,
9062            {
9063                #[allow(unused_imports)]
9064                use serde::de::Error;
9065                use std::option::Option::Some;
9066                let mut fields = std::collections::HashSet::new();
9067                let mut result = Self::Value::new();
9068                while let Some(tag) = map.next_key::<__FieldTag>()? {
9069                    #[allow(clippy::match_single_binding)]
9070                    match tag {
9071                        __FieldTag::__node_types => {
9072                            if !fields.insert(__FieldTag::__node_types) {
9073                                return std::result::Result::Err(A::Error::duplicate_field(
9074                                    "multiple values for node_types",
9075                                ));
9076                            }
9077                            result.node_types = map.next_value::<std::option::Option<std::vec::Vec<crate::model::NodeType>>>()?.unwrap_or_default();
9078                        }
9079                        __FieldTag::__next_page_token => {
9080                            if !fields.insert(__FieldTag::__next_page_token) {
9081                                return std::result::Result::Err(A::Error::duplicate_field(
9082                                    "multiple values for next_page_token",
9083                                ));
9084                            }
9085                            result.next_page_token = map
9086                                .next_value::<std::option::Option<std::string::String>>()?
9087                                .unwrap_or_default();
9088                        }
9089                        __FieldTag::__unreachable => {
9090                            if !fields.insert(__FieldTag::__unreachable) {
9091                                return std::result::Result::Err(A::Error::duplicate_field(
9092                                    "multiple values for unreachable",
9093                                ));
9094                            }
9095                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
9096                        }
9097                        __FieldTag::Unknown(key) => {
9098                            let value = map.next_value::<serde_json::Value>()?;
9099                            result._unknown_fields.insert(key, value);
9100                        }
9101                    }
9102                }
9103                std::result::Result::Ok(result)
9104            }
9105        }
9106        deserializer.deserialize_any(Visitor)
9107    }
9108}
9109
9110#[doc(hidden)]
9111impl serde::ser::Serialize for ListNodeTypesResponse {
9112    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9113    where
9114        S: serde::ser::Serializer,
9115    {
9116        use serde::ser::SerializeMap;
9117        #[allow(unused_imports)]
9118        use std::option::Option::Some;
9119        let mut state = serializer.serialize_map(std::option::Option::None)?;
9120        if !self.node_types.is_empty() {
9121            state.serialize_entry("nodeTypes", &self.node_types)?;
9122        }
9123        if !self.next_page_token.is_empty() {
9124            state.serialize_entry("nextPageToken", &self.next_page_token)?;
9125        }
9126        if !self.unreachable.is_empty() {
9127            state.serialize_entry("unreachable", &self.unreachable)?;
9128        }
9129        if !self._unknown_fields.is_empty() {
9130            for (key, value) in self._unknown_fields.iter() {
9131                state.serialize_entry(key, &value)?;
9132            }
9133        }
9134        state.end()
9135    }
9136}
9137
9138/// Request message for
9139/// [VmwareEngine.GetNodeType][google.cloud.vmwareengine.v1.VmwareEngine.GetNodeType]
9140///
9141/// [google.cloud.vmwareengine.v1.VmwareEngine.GetNodeType]: crate::client::VmwareEngine::get_node_type
9142#[derive(Clone, Debug, Default, PartialEq)]
9143#[non_exhaustive]
9144pub struct GetNodeTypeRequest {
9145    /// Required. The resource name of the node type to retrieve.
9146    /// Resource names are schemeless URIs that follow the conventions in
9147    /// <https://cloud.google.com/apis/design/resource_names>.
9148    /// For example:
9149    /// `projects/my-proj/locations/us-central1-a/nodeTypes/standard-72`
9150    pub name: std::string::String,
9151
9152    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9153}
9154
9155impl GetNodeTypeRequest {
9156    pub fn new() -> Self {
9157        std::default::Default::default()
9158    }
9159
9160    /// Sets the value of [name][crate::model::GetNodeTypeRequest::name].
9161    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9162        self.name = v.into();
9163        self
9164    }
9165}
9166
9167impl wkt::message::Message for GetNodeTypeRequest {
9168    fn typename() -> &'static str {
9169        "type.googleapis.com/google.cloud.vmwareengine.v1.GetNodeTypeRequest"
9170    }
9171}
9172
9173#[doc(hidden)]
9174impl<'de> serde::de::Deserialize<'de> for GetNodeTypeRequest {
9175    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9176    where
9177        D: serde::Deserializer<'de>,
9178    {
9179        #[allow(non_camel_case_types)]
9180        #[doc(hidden)]
9181        #[derive(PartialEq, Eq, Hash)]
9182        enum __FieldTag {
9183            __name,
9184            Unknown(std::string::String),
9185        }
9186        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9187            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9188            where
9189                D: serde::Deserializer<'de>,
9190            {
9191                struct Visitor;
9192                impl<'de> serde::de::Visitor<'de> for Visitor {
9193                    type Value = __FieldTag;
9194                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9195                        formatter.write_str("a field name for GetNodeTypeRequest")
9196                    }
9197                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9198                    where
9199                        E: serde::de::Error,
9200                    {
9201                        use std::result::Result::Ok;
9202                        use std::string::ToString;
9203                        match value {
9204                            "name" => Ok(__FieldTag::__name),
9205                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9206                        }
9207                    }
9208                }
9209                deserializer.deserialize_identifier(Visitor)
9210            }
9211        }
9212        struct Visitor;
9213        impl<'de> serde::de::Visitor<'de> for Visitor {
9214            type Value = GetNodeTypeRequest;
9215            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9216                formatter.write_str("struct GetNodeTypeRequest")
9217            }
9218            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9219            where
9220                A: serde::de::MapAccess<'de>,
9221            {
9222                #[allow(unused_imports)]
9223                use serde::de::Error;
9224                use std::option::Option::Some;
9225                let mut fields = std::collections::HashSet::new();
9226                let mut result = Self::Value::new();
9227                while let Some(tag) = map.next_key::<__FieldTag>()? {
9228                    #[allow(clippy::match_single_binding)]
9229                    match tag {
9230                        __FieldTag::__name => {
9231                            if !fields.insert(__FieldTag::__name) {
9232                                return std::result::Result::Err(A::Error::duplicate_field(
9233                                    "multiple values for name",
9234                                ));
9235                            }
9236                            result.name = map
9237                                .next_value::<std::option::Option<std::string::String>>()?
9238                                .unwrap_or_default();
9239                        }
9240                        __FieldTag::Unknown(key) => {
9241                            let value = map.next_value::<serde_json::Value>()?;
9242                            result._unknown_fields.insert(key, value);
9243                        }
9244                    }
9245                }
9246                std::result::Result::Ok(result)
9247            }
9248        }
9249        deserializer.deserialize_any(Visitor)
9250    }
9251}
9252
9253#[doc(hidden)]
9254impl serde::ser::Serialize for GetNodeTypeRequest {
9255    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9256    where
9257        S: serde::ser::Serializer,
9258    {
9259        use serde::ser::SerializeMap;
9260        #[allow(unused_imports)]
9261        use std::option::Option::Some;
9262        let mut state = serializer.serialize_map(std::option::Option::None)?;
9263        if !self.name.is_empty() {
9264            state.serialize_entry("name", &self.name)?;
9265        }
9266        if !self._unknown_fields.is_empty() {
9267            for (key, value) in self._unknown_fields.iter() {
9268                state.serialize_entry(key, &value)?;
9269            }
9270        }
9271        state.end()
9272    }
9273}
9274
9275/// Request message for
9276/// [VmwareEngine.ShowNsxCredentials][google.cloud.vmwareengine.v1.VmwareEngine.ShowNsxCredentials]
9277///
9278/// [google.cloud.vmwareengine.v1.VmwareEngine.ShowNsxCredentials]: crate::client::VmwareEngine::show_nsx_credentials
9279#[derive(Clone, Debug, Default, PartialEq)]
9280#[non_exhaustive]
9281pub struct ShowNsxCredentialsRequest {
9282    /// Required. The resource name of the private cloud
9283    /// to be queried for credentials.
9284    /// Resource names are schemeless URIs that follow the conventions in
9285    /// <https://cloud.google.com/apis/design/resource_names>.
9286    /// For example:
9287    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
9288    pub private_cloud: std::string::String,
9289
9290    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9291}
9292
9293impl ShowNsxCredentialsRequest {
9294    pub fn new() -> Self {
9295        std::default::Default::default()
9296    }
9297
9298    /// Sets the value of [private_cloud][crate::model::ShowNsxCredentialsRequest::private_cloud].
9299    pub fn set_private_cloud<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9300        self.private_cloud = v.into();
9301        self
9302    }
9303}
9304
9305impl wkt::message::Message for ShowNsxCredentialsRequest {
9306    fn typename() -> &'static str {
9307        "type.googleapis.com/google.cloud.vmwareengine.v1.ShowNsxCredentialsRequest"
9308    }
9309}
9310
9311#[doc(hidden)]
9312impl<'de> serde::de::Deserialize<'de> for ShowNsxCredentialsRequest {
9313    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9314    where
9315        D: serde::Deserializer<'de>,
9316    {
9317        #[allow(non_camel_case_types)]
9318        #[doc(hidden)]
9319        #[derive(PartialEq, Eq, Hash)]
9320        enum __FieldTag {
9321            __private_cloud,
9322            Unknown(std::string::String),
9323        }
9324        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9325            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9326            where
9327                D: serde::Deserializer<'de>,
9328            {
9329                struct Visitor;
9330                impl<'de> serde::de::Visitor<'de> for Visitor {
9331                    type Value = __FieldTag;
9332                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9333                        formatter.write_str("a field name for ShowNsxCredentialsRequest")
9334                    }
9335                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9336                    where
9337                        E: serde::de::Error,
9338                    {
9339                        use std::result::Result::Ok;
9340                        use std::string::ToString;
9341                        match value {
9342                            "privateCloud" => Ok(__FieldTag::__private_cloud),
9343                            "private_cloud" => Ok(__FieldTag::__private_cloud),
9344                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9345                        }
9346                    }
9347                }
9348                deserializer.deserialize_identifier(Visitor)
9349            }
9350        }
9351        struct Visitor;
9352        impl<'de> serde::de::Visitor<'de> for Visitor {
9353            type Value = ShowNsxCredentialsRequest;
9354            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9355                formatter.write_str("struct ShowNsxCredentialsRequest")
9356            }
9357            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9358            where
9359                A: serde::de::MapAccess<'de>,
9360            {
9361                #[allow(unused_imports)]
9362                use serde::de::Error;
9363                use std::option::Option::Some;
9364                let mut fields = std::collections::HashSet::new();
9365                let mut result = Self::Value::new();
9366                while let Some(tag) = map.next_key::<__FieldTag>()? {
9367                    #[allow(clippy::match_single_binding)]
9368                    match tag {
9369                        __FieldTag::__private_cloud => {
9370                            if !fields.insert(__FieldTag::__private_cloud) {
9371                                return std::result::Result::Err(A::Error::duplicate_field(
9372                                    "multiple values for private_cloud",
9373                                ));
9374                            }
9375                            result.private_cloud = map
9376                                .next_value::<std::option::Option<std::string::String>>()?
9377                                .unwrap_or_default();
9378                        }
9379                        __FieldTag::Unknown(key) => {
9380                            let value = map.next_value::<serde_json::Value>()?;
9381                            result._unknown_fields.insert(key, value);
9382                        }
9383                    }
9384                }
9385                std::result::Result::Ok(result)
9386            }
9387        }
9388        deserializer.deserialize_any(Visitor)
9389    }
9390}
9391
9392#[doc(hidden)]
9393impl serde::ser::Serialize for ShowNsxCredentialsRequest {
9394    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9395    where
9396        S: serde::ser::Serializer,
9397    {
9398        use serde::ser::SerializeMap;
9399        #[allow(unused_imports)]
9400        use std::option::Option::Some;
9401        let mut state = serializer.serialize_map(std::option::Option::None)?;
9402        if !self.private_cloud.is_empty() {
9403            state.serialize_entry("privateCloud", &self.private_cloud)?;
9404        }
9405        if !self._unknown_fields.is_empty() {
9406            for (key, value) in self._unknown_fields.iter() {
9407                state.serialize_entry(key, &value)?;
9408            }
9409        }
9410        state.end()
9411    }
9412}
9413
9414/// Request message for
9415/// [VmwareEngine.ShowVcenterCredentials][google.cloud.vmwareengine.v1.VmwareEngine.ShowVcenterCredentials]
9416///
9417/// [google.cloud.vmwareengine.v1.VmwareEngine.ShowVcenterCredentials]: crate::client::VmwareEngine::show_vcenter_credentials
9418#[derive(Clone, Debug, Default, PartialEq)]
9419#[non_exhaustive]
9420pub struct ShowVcenterCredentialsRequest {
9421    /// Required. The resource name of the private cloud
9422    /// to be queried for credentials.
9423    /// Resource names are schemeless URIs that follow the conventions in
9424    /// <https://cloud.google.com/apis/design/resource_names>.
9425    /// For example:
9426    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
9427    pub private_cloud: std::string::String,
9428
9429    /// Optional. The username of the user to be queried for credentials.
9430    /// The default value of this field is CloudOwner@gve.local.
9431    /// The provided value must be one of the following:
9432    /// CloudOwner@gve.local,
9433    /// solution-user-01@gve.local,
9434    /// solution-user-02@gve.local,
9435    /// solution-user-03@gve.local,
9436    /// solution-user-04@gve.local,
9437    /// solution-user-05@gve.local,
9438    /// zertoadmin@gve.local.
9439    pub username: std::string::String,
9440
9441    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9442}
9443
9444impl ShowVcenterCredentialsRequest {
9445    pub fn new() -> Self {
9446        std::default::Default::default()
9447    }
9448
9449    /// Sets the value of [private_cloud][crate::model::ShowVcenterCredentialsRequest::private_cloud].
9450    pub fn set_private_cloud<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9451        self.private_cloud = v.into();
9452        self
9453    }
9454
9455    /// Sets the value of [username][crate::model::ShowVcenterCredentialsRequest::username].
9456    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9457        self.username = v.into();
9458        self
9459    }
9460}
9461
9462impl wkt::message::Message for ShowVcenterCredentialsRequest {
9463    fn typename() -> &'static str {
9464        "type.googleapis.com/google.cloud.vmwareengine.v1.ShowVcenterCredentialsRequest"
9465    }
9466}
9467
9468#[doc(hidden)]
9469impl<'de> serde::de::Deserialize<'de> for ShowVcenterCredentialsRequest {
9470    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9471    where
9472        D: serde::Deserializer<'de>,
9473    {
9474        #[allow(non_camel_case_types)]
9475        #[doc(hidden)]
9476        #[derive(PartialEq, Eq, Hash)]
9477        enum __FieldTag {
9478            __private_cloud,
9479            __username,
9480            Unknown(std::string::String),
9481        }
9482        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9483            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9484            where
9485                D: serde::Deserializer<'de>,
9486            {
9487                struct Visitor;
9488                impl<'de> serde::de::Visitor<'de> for Visitor {
9489                    type Value = __FieldTag;
9490                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9491                        formatter.write_str("a field name for ShowVcenterCredentialsRequest")
9492                    }
9493                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9494                    where
9495                        E: serde::de::Error,
9496                    {
9497                        use std::result::Result::Ok;
9498                        use std::string::ToString;
9499                        match value {
9500                            "privateCloud" => Ok(__FieldTag::__private_cloud),
9501                            "private_cloud" => Ok(__FieldTag::__private_cloud),
9502                            "username" => Ok(__FieldTag::__username),
9503                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9504                        }
9505                    }
9506                }
9507                deserializer.deserialize_identifier(Visitor)
9508            }
9509        }
9510        struct Visitor;
9511        impl<'de> serde::de::Visitor<'de> for Visitor {
9512            type Value = ShowVcenterCredentialsRequest;
9513            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9514                formatter.write_str("struct ShowVcenterCredentialsRequest")
9515            }
9516            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9517            where
9518                A: serde::de::MapAccess<'de>,
9519            {
9520                #[allow(unused_imports)]
9521                use serde::de::Error;
9522                use std::option::Option::Some;
9523                let mut fields = std::collections::HashSet::new();
9524                let mut result = Self::Value::new();
9525                while let Some(tag) = map.next_key::<__FieldTag>()? {
9526                    #[allow(clippy::match_single_binding)]
9527                    match tag {
9528                        __FieldTag::__private_cloud => {
9529                            if !fields.insert(__FieldTag::__private_cloud) {
9530                                return std::result::Result::Err(A::Error::duplicate_field(
9531                                    "multiple values for private_cloud",
9532                                ));
9533                            }
9534                            result.private_cloud = map
9535                                .next_value::<std::option::Option<std::string::String>>()?
9536                                .unwrap_or_default();
9537                        }
9538                        __FieldTag::__username => {
9539                            if !fields.insert(__FieldTag::__username) {
9540                                return std::result::Result::Err(A::Error::duplicate_field(
9541                                    "multiple values for username",
9542                                ));
9543                            }
9544                            result.username = map
9545                                .next_value::<std::option::Option<std::string::String>>()?
9546                                .unwrap_or_default();
9547                        }
9548                        __FieldTag::Unknown(key) => {
9549                            let value = map.next_value::<serde_json::Value>()?;
9550                            result._unknown_fields.insert(key, value);
9551                        }
9552                    }
9553                }
9554                std::result::Result::Ok(result)
9555            }
9556        }
9557        deserializer.deserialize_any(Visitor)
9558    }
9559}
9560
9561#[doc(hidden)]
9562impl serde::ser::Serialize for ShowVcenterCredentialsRequest {
9563    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9564    where
9565        S: serde::ser::Serializer,
9566    {
9567        use serde::ser::SerializeMap;
9568        #[allow(unused_imports)]
9569        use std::option::Option::Some;
9570        let mut state = serializer.serialize_map(std::option::Option::None)?;
9571        if !self.private_cloud.is_empty() {
9572            state.serialize_entry("privateCloud", &self.private_cloud)?;
9573        }
9574        if !self.username.is_empty() {
9575            state.serialize_entry("username", &self.username)?;
9576        }
9577        if !self._unknown_fields.is_empty() {
9578            for (key, value) in self._unknown_fields.iter() {
9579                state.serialize_entry(key, &value)?;
9580            }
9581        }
9582        state.end()
9583    }
9584}
9585
9586/// Request message for
9587/// [VmwareEngine.ResetNsxCredentials][google.cloud.vmwareengine.v1.VmwareEngine.ResetNsxCredentials]
9588///
9589/// [google.cloud.vmwareengine.v1.VmwareEngine.ResetNsxCredentials]: crate::client::VmwareEngine::reset_nsx_credentials
9590#[derive(Clone, Debug, Default, PartialEq)]
9591#[non_exhaustive]
9592pub struct ResetNsxCredentialsRequest {
9593    /// Required. The resource name of the private cloud
9594    /// to reset credentials for.
9595    /// Resource names are schemeless URIs that follow the conventions in
9596    /// <https://cloud.google.com/apis/design/resource_names>.
9597    /// For example:
9598    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
9599    pub private_cloud: std::string::String,
9600
9601    /// Optional. A request ID to identify requests. Specify a unique request ID
9602    /// so that if you must retry your request, the server will know to ignore
9603    /// the request if it has already been completed. The server guarantees that a
9604    /// request doesn't result in creation of duplicate commitments for at least 60
9605    /// minutes.
9606    ///
9607    /// For example, consider a situation where you make an initial request and the
9608    /// request times out. If you make the request again with the same request
9609    /// ID, the server can check if original operation with the same request ID
9610    /// was received, and if so, will ignore the second request. This prevents
9611    /// clients from accidentally creating duplicate commitments.
9612    ///
9613    /// The request ID must be a valid UUID with the exception that zero UUID is
9614    /// not supported (00000000-0000-0000-0000-000000000000).
9615    pub request_id: std::string::String,
9616
9617    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9618}
9619
9620impl ResetNsxCredentialsRequest {
9621    pub fn new() -> Self {
9622        std::default::Default::default()
9623    }
9624
9625    /// Sets the value of [private_cloud][crate::model::ResetNsxCredentialsRequest::private_cloud].
9626    pub fn set_private_cloud<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9627        self.private_cloud = v.into();
9628        self
9629    }
9630
9631    /// Sets the value of [request_id][crate::model::ResetNsxCredentialsRequest::request_id].
9632    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9633        self.request_id = v.into();
9634        self
9635    }
9636}
9637
9638impl wkt::message::Message for ResetNsxCredentialsRequest {
9639    fn typename() -> &'static str {
9640        "type.googleapis.com/google.cloud.vmwareengine.v1.ResetNsxCredentialsRequest"
9641    }
9642}
9643
9644#[doc(hidden)]
9645impl<'de> serde::de::Deserialize<'de> for ResetNsxCredentialsRequest {
9646    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9647    where
9648        D: serde::Deserializer<'de>,
9649    {
9650        #[allow(non_camel_case_types)]
9651        #[doc(hidden)]
9652        #[derive(PartialEq, Eq, Hash)]
9653        enum __FieldTag {
9654            __private_cloud,
9655            __request_id,
9656            Unknown(std::string::String),
9657        }
9658        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9659            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9660            where
9661                D: serde::Deserializer<'de>,
9662            {
9663                struct Visitor;
9664                impl<'de> serde::de::Visitor<'de> for Visitor {
9665                    type Value = __FieldTag;
9666                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9667                        formatter.write_str("a field name for ResetNsxCredentialsRequest")
9668                    }
9669                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9670                    where
9671                        E: serde::de::Error,
9672                    {
9673                        use std::result::Result::Ok;
9674                        use std::string::ToString;
9675                        match value {
9676                            "privateCloud" => Ok(__FieldTag::__private_cloud),
9677                            "private_cloud" => Ok(__FieldTag::__private_cloud),
9678                            "requestId" => Ok(__FieldTag::__request_id),
9679                            "request_id" => Ok(__FieldTag::__request_id),
9680                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9681                        }
9682                    }
9683                }
9684                deserializer.deserialize_identifier(Visitor)
9685            }
9686        }
9687        struct Visitor;
9688        impl<'de> serde::de::Visitor<'de> for Visitor {
9689            type Value = ResetNsxCredentialsRequest;
9690            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9691                formatter.write_str("struct ResetNsxCredentialsRequest")
9692            }
9693            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9694            where
9695                A: serde::de::MapAccess<'de>,
9696            {
9697                #[allow(unused_imports)]
9698                use serde::de::Error;
9699                use std::option::Option::Some;
9700                let mut fields = std::collections::HashSet::new();
9701                let mut result = Self::Value::new();
9702                while let Some(tag) = map.next_key::<__FieldTag>()? {
9703                    #[allow(clippy::match_single_binding)]
9704                    match tag {
9705                        __FieldTag::__private_cloud => {
9706                            if !fields.insert(__FieldTag::__private_cloud) {
9707                                return std::result::Result::Err(A::Error::duplicate_field(
9708                                    "multiple values for private_cloud",
9709                                ));
9710                            }
9711                            result.private_cloud = map
9712                                .next_value::<std::option::Option<std::string::String>>()?
9713                                .unwrap_or_default();
9714                        }
9715                        __FieldTag::__request_id => {
9716                            if !fields.insert(__FieldTag::__request_id) {
9717                                return std::result::Result::Err(A::Error::duplicate_field(
9718                                    "multiple values for request_id",
9719                                ));
9720                            }
9721                            result.request_id = map
9722                                .next_value::<std::option::Option<std::string::String>>()?
9723                                .unwrap_or_default();
9724                        }
9725                        __FieldTag::Unknown(key) => {
9726                            let value = map.next_value::<serde_json::Value>()?;
9727                            result._unknown_fields.insert(key, value);
9728                        }
9729                    }
9730                }
9731                std::result::Result::Ok(result)
9732            }
9733        }
9734        deserializer.deserialize_any(Visitor)
9735    }
9736}
9737
9738#[doc(hidden)]
9739impl serde::ser::Serialize for ResetNsxCredentialsRequest {
9740    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9741    where
9742        S: serde::ser::Serializer,
9743    {
9744        use serde::ser::SerializeMap;
9745        #[allow(unused_imports)]
9746        use std::option::Option::Some;
9747        let mut state = serializer.serialize_map(std::option::Option::None)?;
9748        if !self.private_cloud.is_empty() {
9749            state.serialize_entry("privateCloud", &self.private_cloud)?;
9750        }
9751        if !self.request_id.is_empty() {
9752            state.serialize_entry("requestId", &self.request_id)?;
9753        }
9754        if !self._unknown_fields.is_empty() {
9755            for (key, value) in self._unknown_fields.iter() {
9756                state.serialize_entry(key, &value)?;
9757            }
9758        }
9759        state.end()
9760    }
9761}
9762
9763/// Request message for
9764/// [VmwareEngine.ResetVcenterCredentials][google.cloud.vmwareengine.v1.VmwareEngine.ResetVcenterCredentials]
9765///
9766/// [google.cloud.vmwareengine.v1.VmwareEngine.ResetVcenterCredentials]: crate::client::VmwareEngine::reset_vcenter_credentials
9767#[derive(Clone, Debug, Default, PartialEq)]
9768#[non_exhaustive]
9769pub struct ResetVcenterCredentialsRequest {
9770    /// Required. The resource name of the private cloud
9771    /// to reset credentials for.
9772    /// Resource names are schemeless URIs that follow the conventions in
9773    /// <https://cloud.google.com/apis/design/resource_names>.
9774    /// For example:
9775    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
9776    pub private_cloud: std::string::String,
9777
9778    /// Optional. A request ID to identify requests. Specify a unique request ID
9779    /// so that if you must retry your request, the server will know to ignore
9780    /// the request if it has already been completed. The server guarantees that a
9781    /// request doesn't result in creation of duplicate commitments for at least 60
9782    /// minutes.
9783    ///
9784    /// For example, consider a situation where you make an initial request and the
9785    /// request times out. If you make the request again with the same request
9786    /// ID, the server can check if original operation with the same request ID
9787    /// was received, and if so, will ignore the second request. This prevents
9788    /// clients from accidentally creating duplicate commitments.
9789    ///
9790    /// The request ID must be a valid UUID with the exception that zero UUID is
9791    /// not supported (00000000-0000-0000-0000-000000000000).
9792    pub request_id: std::string::String,
9793
9794    /// Optional. The username of the user to be to reset the credentials.
9795    /// The default value of this field is CloudOwner@gve.local.
9796    /// The provided value should be one of the following:
9797    /// solution-user-01@gve.local,
9798    /// solution-user-02@gve.local,
9799    /// solution-user-03@gve.local,
9800    /// solution-user-04@gve.local,
9801    /// solution-user-05@gve.local,
9802    /// zertoadmin@gve.local.
9803    pub username: std::string::String,
9804
9805    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9806}
9807
9808impl ResetVcenterCredentialsRequest {
9809    pub fn new() -> Self {
9810        std::default::Default::default()
9811    }
9812
9813    /// Sets the value of [private_cloud][crate::model::ResetVcenterCredentialsRequest::private_cloud].
9814    pub fn set_private_cloud<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9815        self.private_cloud = v.into();
9816        self
9817    }
9818
9819    /// Sets the value of [request_id][crate::model::ResetVcenterCredentialsRequest::request_id].
9820    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9821        self.request_id = v.into();
9822        self
9823    }
9824
9825    /// Sets the value of [username][crate::model::ResetVcenterCredentialsRequest::username].
9826    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9827        self.username = v.into();
9828        self
9829    }
9830}
9831
9832impl wkt::message::Message for ResetVcenterCredentialsRequest {
9833    fn typename() -> &'static str {
9834        "type.googleapis.com/google.cloud.vmwareengine.v1.ResetVcenterCredentialsRequest"
9835    }
9836}
9837
9838#[doc(hidden)]
9839impl<'de> serde::de::Deserialize<'de> for ResetVcenterCredentialsRequest {
9840    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9841    where
9842        D: serde::Deserializer<'de>,
9843    {
9844        #[allow(non_camel_case_types)]
9845        #[doc(hidden)]
9846        #[derive(PartialEq, Eq, Hash)]
9847        enum __FieldTag {
9848            __private_cloud,
9849            __request_id,
9850            __username,
9851            Unknown(std::string::String),
9852        }
9853        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
9854            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9855            where
9856                D: serde::Deserializer<'de>,
9857            {
9858                struct Visitor;
9859                impl<'de> serde::de::Visitor<'de> for Visitor {
9860                    type Value = __FieldTag;
9861                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9862                        formatter.write_str("a field name for ResetVcenterCredentialsRequest")
9863                    }
9864                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
9865                    where
9866                        E: serde::de::Error,
9867                    {
9868                        use std::result::Result::Ok;
9869                        use std::string::ToString;
9870                        match value {
9871                            "privateCloud" => Ok(__FieldTag::__private_cloud),
9872                            "private_cloud" => Ok(__FieldTag::__private_cloud),
9873                            "requestId" => Ok(__FieldTag::__request_id),
9874                            "request_id" => Ok(__FieldTag::__request_id),
9875                            "username" => Ok(__FieldTag::__username),
9876                            _ => Ok(__FieldTag::Unknown(value.to_string())),
9877                        }
9878                    }
9879                }
9880                deserializer.deserialize_identifier(Visitor)
9881            }
9882        }
9883        struct Visitor;
9884        impl<'de> serde::de::Visitor<'de> for Visitor {
9885            type Value = ResetVcenterCredentialsRequest;
9886            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
9887                formatter.write_str("struct ResetVcenterCredentialsRequest")
9888            }
9889            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
9890            where
9891                A: serde::de::MapAccess<'de>,
9892            {
9893                #[allow(unused_imports)]
9894                use serde::de::Error;
9895                use std::option::Option::Some;
9896                let mut fields = std::collections::HashSet::new();
9897                let mut result = Self::Value::new();
9898                while let Some(tag) = map.next_key::<__FieldTag>()? {
9899                    #[allow(clippy::match_single_binding)]
9900                    match tag {
9901                        __FieldTag::__private_cloud => {
9902                            if !fields.insert(__FieldTag::__private_cloud) {
9903                                return std::result::Result::Err(A::Error::duplicate_field(
9904                                    "multiple values for private_cloud",
9905                                ));
9906                            }
9907                            result.private_cloud = map
9908                                .next_value::<std::option::Option<std::string::String>>()?
9909                                .unwrap_or_default();
9910                        }
9911                        __FieldTag::__request_id => {
9912                            if !fields.insert(__FieldTag::__request_id) {
9913                                return std::result::Result::Err(A::Error::duplicate_field(
9914                                    "multiple values for request_id",
9915                                ));
9916                            }
9917                            result.request_id = map
9918                                .next_value::<std::option::Option<std::string::String>>()?
9919                                .unwrap_or_default();
9920                        }
9921                        __FieldTag::__username => {
9922                            if !fields.insert(__FieldTag::__username) {
9923                                return std::result::Result::Err(A::Error::duplicate_field(
9924                                    "multiple values for username",
9925                                ));
9926                            }
9927                            result.username = map
9928                                .next_value::<std::option::Option<std::string::String>>()?
9929                                .unwrap_or_default();
9930                        }
9931                        __FieldTag::Unknown(key) => {
9932                            let value = map.next_value::<serde_json::Value>()?;
9933                            result._unknown_fields.insert(key, value);
9934                        }
9935                    }
9936                }
9937                std::result::Result::Ok(result)
9938            }
9939        }
9940        deserializer.deserialize_any(Visitor)
9941    }
9942}
9943
9944#[doc(hidden)]
9945impl serde::ser::Serialize for ResetVcenterCredentialsRequest {
9946    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9947    where
9948        S: serde::ser::Serializer,
9949    {
9950        use serde::ser::SerializeMap;
9951        #[allow(unused_imports)]
9952        use std::option::Option::Some;
9953        let mut state = serializer.serialize_map(std::option::Option::None)?;
9954        if !self.private_cloud.is_empty() {
9955            state.serialize_entry("privateCloud", &self.private_cloud)?;
9956        }
9957        if !self.request_id.is_empty() {
9958            state.serialize_entry("requestId", &self.request_id)?;
9959        }
9960        if !self.username.is_empty() {
9961            state.serialize_entry("username", &self.username)?;
9962        }
9963        if !self._unknown_fields.is_empty() {
9964            for (key, value) in self._unknown_fields.iter() {
9965                state.serialize_entry(key, &value)?;
9966            }
9967        }
9968        state.end()
9969    }
9970}
9971
9972/// Response message for
9973/// [VmwareEngine.ListHcxActivationKeys][google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]
9974///
9975/// [google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]: crate::client::VmwareEngine::list_hcx_activation_keys
9976#[derive(Clone, Debug, Default, PartialEq)]
9977#[non_exhaustive]
9978pub struct ListHcxActivationKeysResponse {
9979    /// List of HCX activation keys.
9980    pub hcx_activation_keys: std::vec::Vec<crate::model::HcxActivationKey>,
9981
9982    /// A token, which can be sent as `page_token` to retrieve the next page.
9983    /// If this field is omitted, there are no subsequent pages.
9984    pub next_page_token: std::string::String,
9985
9986    /// Locations that could not be reached when making an aggregated query using
9987    /// wildcards.
9988    pub unreachable: std::vec::Vec<std::string::String>,
9989
9990    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9991}
9992
9993impl ListHcxActivationKeysResponse {
9994    pub fn new() -> Self {
9995        std::default::Default::default()
9996    }
9997
9998    /// Sets the value of [hcx_activation_keys][crate::model::ListHcxActivationKeysResponse::hcx_activation_keys].
9999    pub fn set_hcx_activation_keys<T, V>(mut self, v: T) -> Self
10000    where
10001        T: std::iter::IntoIterator<Item = V>,
10002        V: std::convert::Into<crate::model::HcxActivationKey>,
10003    {
10004        use std::iter::Iterator;
10005        self.hcx_activation_keys = v.into_iter().map(|i| i.into()).collect();
10006        self
10007    }
10008
10009    /// Sets the value of [next_page_token][crate::model::ListHcxActivationKeysResponse::next_page_token].
10010    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10011        self.next_page_token = v.into();
10012        self
10013    }
10014
10015    /// Sets the value of [unreachable][crate::model::ListHcxActivationKeysResponse::unreachable].
10016    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
10017    where
10018        T: std::iter::IntoIterator<Item = V>,
10019        V: std::convert::Into<std::string::String>,
10020    {
10021        use std::iter::Iterator;
10022        self.unreachable = v.into_iter().map(|i| i.into()).collect();
10023        self
10024    }
10025}
10026
10027impl wkt::message::Message for ListHcxActivationKeysResponse {
10028    fn typename() -> &'static str {
10029        "type.googleapis.com/google.cloud.vmwareengine.v1.ListHcxActivationKeysResponse"
10030    }
10031}
10032
10033#[doc(hidden)]
10034impl gax::paginator::internal::PageableResponse for ListHcxActivationKeysResponse {
10035    type PageItem = crate::model::HcxActivationKey;
10036
10037    fn items(self) -> std::vec::Vec<Self::PageItem> {
10038        self.hcx_activation_keys
10039    }
10040
10041    fn next_page_token(&self) -> std::string::String {
10042        use std::clone::Clone;
10043        self.next_page_token.clone()
10044    }
10045}
10046
10047#[doc(hidden)]
10048impl<'de> serde::de::Deserialize<'de> for ListHcxActivationKeysResponse {
10049    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10050    where
10051        D: serde::Deserializer<'de>,
10052    {
10053        #[allow(non_camel_case_types)]
10054        #[doc(hidden)]
10055        #[derive(PartialEq, Eq, Hash)]
10056        enum __FieldTag {
10057            __hcx_activation_keys,
10058            __next_page_token,
10059            __unreachable,
10060            Unknown(std::string::String),
10061        }
10062        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
10063            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10064            where
10065                D: serde::Deserializer<'de>,
10066            {
10067                struct Visitor;
10068                impl<'de> serde::de::Visitor<'de> for Visitor {
10069                    type Value = __FieldTag;
10070                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10071                        formatter.write_str("a field name for ListHcxActivationKeysResponse")
10072                    }
10073                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
10074                    where
10075                        E: serde::de::Error,
10076                    {
10077                        use std::result::Result::Ok;
10078                        use std::string::ToString;
10079                        match value {
10080                            "hcxActivationKeys" => Ok(__FieldTag::__hcx_activation_keys),
10081                            "hcx_activation_keys" => Ok(__FieldTag::__hcx_activation_keys),
10082                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
10083                            "next_page_token" => Ok(__FieldTag::__next_page_token),
10084                            "unreachable" => Ok(__FieldTag::__unreachable),
10085                            _ => Ok(__FieldTag::Unknown(value.to_string())),
10086                        }
10087                    }
10088                }
10089                deserializer.deserialize_identifier(Visitor)
10090            }
10091        }
10092        struct Visitor;
10093        impl<'de> serde::de::Visitor<'de> for Visitor {
10094            type Value = ListHcxActivationKeysResponse;
10095            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10096                formatter.write_str("struct ListHcxActivationKeysResponse")
10097            }
10098            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
10099            where
10100                A: serde::de::MapAccess<'de>,
10101            {
10102                #[allow(unused_imports)]
10103                use serde::de::Error;
10104                use std::option::Option::Some;
10105                let mut fields = std::collections::HashSet::new();
10106                let mut result = Self::Value::new();
10107                while let Some(tag) = map.next_key::<__FieldTag>()? {
10108                    #[allow(clippy::match_single_binding)]
10109                    match tag {
10110                        __FieldTag::__hcx_activation_keys => {
10111                            if !fields.insert(__FieldTag::__hcx_activation_keys) {
10112                                return std::result::Result::Err(A::Error::duplicate_field(
10113                                    "multiple values for hcx_activation_keys",
10114                                ));
10115                            }
10116                            result.hcx_activation_keys =
10117                                map.next_value::<std::option::Option<
10118                                    std::vec::Vec<crate::model::HcxActivationKey>,
10119                                >>()?
10120                                .unwrap_or_default();
10121                        }
10122                        __FieldTag::__next_page_token => {
10123                            if !fields.insert(__FieldTag::__next_page_token) {
10124                                return std::result::Result::Err(A::Error::duplicate_field(
10125                                    "multiple values for next_page_token",
10126                                ));
10127                            }
10128                            result.next_page_token = map
10129                                .next_value::<std::option::Option<std::string::String>>()?
10130                                .unwrap_or_default();
10131                        }
10132                        __FieldTag::__unreachable => {
10133                            if !fields.insert(__FieldTag::__unreachable) {
10134                                return std::result::Result::Err(A::Error::duplicate_field(
10135                                    "multiple values for unreachable",
10136                                ));
10137                            }
10138                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
10139                        }
10140                        __FieldTag::Unknown(key) => {
10141                            let value = map.next_value::<serde_json::Value>()?;
10142                            result._unknown_fields.insert(key, value);
10143                        }
10144                    }
10145                }
10146                std::result::Result::Ok(result)
10147            }
10148        }
10149        deserializer.deserialize_any(Visitor)
10150    }
10151}
10152
10153#[doc(hidden)]
10154impl serde::ser::Serialize for ListHcxActivationKeysResponse {
10155    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10156    where
10157        S: serde::ser::Serializer,
10158    {
10159        use serde::ser::SerializeMap;
10160        #[allow(unused_imports)]
10161        use std::option::Option::Some;
10162        let mut state = serializer.serialize_map(std::option::Option::None)?;
10163        if !self.hcx_activation_keys.is_empty() {
10164            state.serialize_entry("hcxActivationKeys", &self.hcx_activation_keys)?;
10165        }
10166        if !self.next_page_token.is_empty() {
10167            state.serialize_entry("nextPageToken", &self.next_page_token)?;
10168        }
10169        if !self.unreachable.is_empty() {
10170            state.serialize_entry("unreachable", &self.unreachable)?;
10171        }
10172        if !self._unknown_fields.is_empty() {
10173            for (key, value) in self._unknown_fields.iter() {
10174                state.serialize_entry(key, &value)?;
10175            }
10176        }
10177        state.end()
10178    }
10179}
10180
10181/// Request message for
10182/// [VmwareEngine.ListHcxActivationKeys][google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]
10183///
10184/// [google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]: crate::client::VmwareEngine::list_hcx_activation_keys
10185#[derive(Clone, Debug, Default, PartialEq)]
10186#[non_exhaustive]
10187pub struct ListHcxActivationKeysRequest {
10188    /// Required. The resource name of the private cloud
10189    /// to be queried for HCX activation keys.
10190    /// Resource names are schemeless URIs that follow the conventions in
10191    /// <https://cloud.google.com/apis/design/resource_names>.
10192    /// For example:
10193    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud`
10194    pub parent: std::string::String,
10195
10196    /// The maximum number of HCX activation keys to return in one page.
10197    /// The service may return fewer than this value.
10198    /// The maximum value is coerced to 1000.
10199    /// The default value of this field is 500.
10200    pub page_size: i32,
10201
10202    /// A page token, received from a previous `ListHcxActivationKeys` call.
10203    /// Provide this to retrieve the subsequent page.
10204    ///
10205    /// When paginating, all other parameters provided to
10206    /// `ListHcxActivationKeys` must match the call that provided the page
10207    /// token.
10208    pub page_token: std::string::String,
10209
10210    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10211}
10212
10213impl ListHcxActivationKeysRequest {
10214    pub fn new() -> Self {
10215        std::default::Default::default()
10216    }
10217
10218    /// Sets the value of [parent][crate::model::ListHcxActivationKeysRequest::parent].
10219    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10220        self.parent = v.into();
10221        self
10222    }
10223
10224    /// Sets the value of [page_size][crate::model::ListHcxActivationKeysRequest::page_size].
10225    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
10226        self.page_size = v.into();
10227        self
10228    }
10229
10230    /// Sets the value of [page_token][crate::model::ListHcxActivationKeysRequest::page_token].
10231    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10232        self.page_token = v.into();
10233        self
10234    }
10235}
10236
10237impl wkt::message::Message for ListHcxActivationKeysRequest {
10238    fn typename() -> &'static str {
10239        "type.googleapis.com/google.cloud.vmwareengine.v1.ListHcxActivationKeysRequest"
10240    }
10241}
10242
10243#[doc(hidden)]
10244impl<'de> serde::de::Deserialize<'de> for ListHcxActivationKeysRequest {
10245    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10246    where
10247        D: serde::Deserializer<'de>,
10248    {
10249        #[allow(non_camel_case_types)]
10250        #[doc(hidden)]
10251        #[derive(PartialEq, Eq, Hash)]
10252        enum __FieldTag {
10253            __parent,
10254            __page_size,
10255            __page_token,
10256            Unknown(std::string::String),
10257        }
10258        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
10259            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10260            where
10261                D: serde::Deserializer<'de>,
10262            {
10263                struct Visitor;
10264                impl<'de> serde::de::Visitor<'de> for Visitor {
10265                    type Value = __FieldTag;
10266                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10267                        formatter.write_str("a field name for ListHcxActivationKeysRequest")
10268                    }
10269                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
10270                    where
10271                        E: serde::de::Error,
10272                    {
10273                        use std::result::Result::Ok;
10274                        use std::string::ToString;
10275                        match value {
10276                            "parent" => Ok(__FieldTag::__parent),
10277                            "pageSize" => Ok(__FieldTag::__page_size),
10278                            "page_size" => Ok(__FieldTag::__page_size),
10279                            "pageToken" => Ok(__FieldTag::__page_token),
10280                            "page_token" => Ok(__FieldTag::__page_token),
10281                            _ => Ok(__FieldTag::Unknown(value.to_string())),
10282                        }
10283                    }
10284                }
10285                deserializer.deserialize_identifier(Visitor)
10286            }
10287        }
10288        struct Visitor;
10289        impl<'de> serde::de::Visitor<'de> for Visitor {
10290            type Value = ListHcxActivationKeysRequest;
10291            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10292                formatter.write_str("struct ListHcxActivationKeysRequest")
10293            }
10294            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
10295            where
10296                A: serde::de::MapAccess<'de>,
10297            {
10298                #[allow(unused_imports)]
10299                use serde::de::Error;
10300                use std::option::Option::Some;
10301                let mut fields = std::collections::HashSet::new();
10302                let mut result = Self::Value::new();
10303                while let Some(tag) = map.next_key::<__FieldTag>()? {
10304                    #[allow(clippy::match_single_binding)]
10305                    match tag {
10306                        __FieldTag::__parent => {
10307                            if !fields.insert(__FieldTag::__parent) {
10308                                return std::result::Result::Err(A::Error::duplicate_field(
10309                                    "multiple values for parent",
10310                                ));
10311                            }
10312                            result.parent = map
10313                                .next_value::<std::option::Option<std::string::String>>()?
10314                                .unwrap_or_default();
10315                        }
10316                        __FieldTag::__page_size => {
10317                            if !fields.insert(__FieldTag::__page_size) {
10318                                return std::result::Result::Err(A::Error::duplicate_field(
10319                                    "multiple values for page_size",
10320                                ));
10321                            }
10322                            struct __With(std::option::Option<i32>);
10323                            impl<'de> serde::de::Deserialize<'de> for __With {
10324                                fn deserialize<D>(
10325                                    deserializer: D,
10326                                ) -> std::result::Result<Self, D::Error>
10327                                where
10328                                    D: serde::de::Deserializer<'de>,
10329                                {
10330                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
10331                                }
10332                            }
10333                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
10334                        }
10335                        __FieldTag::__page_token => {
10336                            if !fields.insert(__FieldTag::__page_token) {
10337                                return std::result::Result::Err(A::Error::duplicate_field(
10338                                    "multiple values for page_token",
10339                                ));
10340                            }
10341                            result.page_token = map
10342                                .next_value::<std::option::Option<std::string::String>>()?
10343                                .unwrap_or_default();
10344                        }
10345                        __FieldTag::Unknown(key) => {
10346                            let value = map.next_value::<serde_json::Value>()?;
10347                            result._unknown_fields.insert(key, value);
10348                        }
10349                    }
10350                }
10351                std::result::Result::Ok(result)
10352            }
10353        }
10354        deserializer.deserialize_any(Visitor)
10355    }
10356}
10357
10358#[doc(hidden)]
10359impl serde::ser::Serialize for ListHcxActivationKeysRequest {
10360    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10361    where
10362        S: serde::ser::Serializer,
10363    {
10364        use serde::ser::SerializeMap;
10365        #[allow(unused_imports)]
10366        use std::option::Option::Some;
10367        let mut state = serializer.serialize_map(std::option::Option::None)?;
10368        if !self.parent.is_empty() {
10369            state.serialize_entry("parent", &self.parent)?;
10370        }
10371        if !wkt::internal::is_default(&self.page_size) {
10372            struct __With<'a>(&'a i32);
10373            impl<'a> serde::ser::Serialize for __With<'a> {
10374                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10375                where
10376                    S: serde::ser::Serializer,
10377                {
10378                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
10379                }
10380            }
10381            state.serialize_entry("pageSize", &__With(&self.page_size))?;
10382        }
10383        if !self.page_token.is_empty() {
10384            state.serialize_entry("pageToken", &self.page_token)?;
10385        }
10386        if !self._unknown_fields.is_empty() {
10387            for (key, value) in self._unknown_fields.iter() {
10388                state.serialize_entry(key, &value)?;
10389            }
10390        }
10391        state.end()
10392    }
10393}
10394
10395/// Request message for [VmwareEngine.GetHcxActivationKeys][]
10396#[derive(Clone, Debug, Default, PartialEq)]
10397#[non_exhaustive]
10398pub struct GetHcxActivationKeyRequest {
10399    /// Required. The resource name of the HCX activation key to retrieve.
10400    /// Resource names are schemeless URIs that follow the conventions in
10401    /// <https://cloud.google.com/apis/design/resource_names>.
10402    /// For example:
10403    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`
10404    pub name: std::string::String,
10405
10406    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10407}
10408
10409impl GetHcxActivationKeyRequest {
10410    pub fn new() -> Self {
10411        std::default::Default::default()
10412    }
10413
10414    /// Sets the value of [name][crate::model::GetHcxActivationKeyRequest::name].
10415    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10416        self.name = v.into();
10417        self
10418    }
10419}
10420
10421impl wkt::message::Message for GetHcxActivationKeyRequest {
10422    fn typename() -> &'static str {
10423        "type.googleapis.com/google.cloud.vmwareengine.v1.GetHcxActivationKeyRequest"
10424    }
10425}
10426
10427#[doc(hidden)]
10428impl<'de> serde::de::Deserialize<'de> for GetHcxActivationKeyRequest {
10429    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10430    where
10431        D: serde::Deserializer<'de>,
10432    {
10433        #[allow(non_camel_case_types)]
10434        #[doc(hidden)]
10435        #[derive(PartialEq, Eq, Hash)]
10436        enum __FieldTag {
10437            __name,
10438            Unknown(std::string::String),
10439        }
10440        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
10441            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10442            where
10443                D: serde::Deserializer<'de>,
10444            {
10445                struct Visitor;
10446                impl<'de> serde::de::Visitor<'de> for Visitor {
10447                    type Value = __FieldTag;
10448                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10449                        formatter.write_str("a field name for GetHcxActivationKeyRequest")
10450                    }
10451                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
10452                    where
10453                        E: serde::de::Error,
10454                    {
10455                        use std::result::Result::Ok;
10456                        use std::string::ToString;
10457                        match value {
10458                            "name" => Ok(__FieldTag::__name),
10459                            _ => Ok(__FieldTag::Unknown(value.to_string())),
10460                        }
10461                    }
10462                }
10463                deserializer.deserialize_identifier(Visitor)
10464            }
10465        }
10466        struct Visitor;
10467        impl<'de> serde::de::Visitor<'de> for Visitor {
10468            type Value = GetHcxActivationKeyRequest;
10469            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10470                formatter.write_str("struct GetHcxActivationKeyRequest")
10471            }
10472            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
10473            where
10474                A: serde::de::MapAccess<'de>,
10475            {
10476                #[allow(unused_imports)]
10477                use serde::de::Error;
10478                use std::option::Option::Some;
10479                let mut fields = std::collections::HashSet::new();
10480                let mut result = Self::Value::new();
10481                while let Some(tag) = map.next_key::<__FieldTag>()? {
10482                    #[allow(clippy::match_single_binding)]
10483                    match tag {
10484                        __FieldTag::__name => {
10485                            if !fields.insert(__FieldTag::__name) {
10486                                return std::result::Result::Err(A::Error::duplicate_field(
10487                                    "multiple values for name",
10488                                ));
10489                            }
10490                            result.name = map
10491                                .next_value::<std::option::Option<std::string::String>>()?
10492                                .unwrap_or_default();
10493                        }
10494                        __FieldTag::Unknown(key) => {
10495                            let value = map.next_value::<serde_json::Value>()?;
10496                            result._unknown_fields.insert(key, value);
10497                        }
10498                    }
10499                }
10500                std::result::Result::Ok(result)
10501            }
10502        }
10503        deserializer.deserialize_any(Visitor)
10504    }
10505}
10506
10507#[doc(hidden)]
10508impl serde::ser::Serialize for GetHcxActivationKeyRequest {
10509    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10510    where
10511        S: serde::ser::Serializer,
10512    {
10513        use serde::ser::SerializeMap;
10514        #[allow(unused_imports)]
10515        use std::option::Option::Some;
10516        let mut state = serializer.serialize_map(std::option::Option::None)?;
10517        if !self.name.is_empty() {
10518            state.serialize_entry("name", &self.name)?;
10519        }
10520        if !self._unknown_fields.is_empty() {
10521            for (key, value) in self._unknown_fields.iter() {
10522                state.serialize_entry(key, &value)?;
10523            }
10524        }
10525        state.end()
10526    }
10527}
10528
10529/// Request message for
10530/// [VmwareEngine.CreateHcxActivationKey][google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey]
10531///
10532/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey]: crate::client::VmwareEngine::create_hcx_activation_key
10533#[derive(Clone, Debug, Default, PartialEq)]
10534#[non_exhaustive]
10535pub struct CreateHcxActivationKeyRequest {
10536    /// Required. The resource name of the private cloud to create the key for.
10537    /// Resource names are schemeless URIs that follow the conventions in
10538    /// <https://cloud.google.com/apis/design/resource_names>.
10539    /// For example:
10540    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud`
10541    pub parent: std::string::String,
10542
10543    /// Required. The initial description of a new HCX activation key. When
10544    /// creating a new key, this field must be an empty object.
10545    pub hcx_activation_key: std::option::Option<crate::model::HcxActivationKey>,
10546
10547    /// Required. The user-provided identifier of the `HcxActivationKey` to be
10548    /// created. This identifier must be unique among `HcxActivationKey` resources
10549    /// within the parent and becomes the final token in the name URI.
10550    /// The identifier must meet the following requirements:
10551    ///
10552    /// * Only contains 1-63 alphanumeric characters and hyphens
10553    /// * Begins with an alphabetical character
10554    /// * Ends with a non-hyphen character
10555    /// * Not formatted as a UUID
10556    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
10557    ///   (section 3.5)
10558    pub hcx_activation_key_id: std::string::String,
10559
10560    /// A request ID to identify requests. Specify a unique request ID
10561    /// so that if you must retry your request, the server will know to ignore
10562    /// the request if it has already been completed. The server guarantees that a
10563    /// request doesn't result in creation of duplicate commitments for at least 60
10564    /// minutes.
10565    ///
10566    /// For example, consider a situation where you make an initial request and the
10567    /// request times out. If you make the request again with the same request ID,
10568    /// the server can check if original operation with the same request ID was
10569    /// received, and if so, will ignore the second request. This prevents clients
10570    /// from accidentally creating duplicate commitments.
10571    ///
10572    /// The request ID must be a valid UUID with the exception that zero UUID is
10573    /// not supported (00000000-0000-0000-0000-000000000000).
10574    pub request_id: std::string::String,
10575
10576    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10577}
10578
10579impl CreateHcxActivationKeyRequest {
10580    pub fn new() -> Self {
10581        std::default::Default::default()
10582    }
10583
10584    /// Sets the value of [parent][crate::model::CreateHcxActivationKeyRequest::parent].
10585    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10586        self.parent = v.into();
10587        self
10588    }
10589
10590    /// Sets the value of [hcx_activation_key][crate::model::CreateHcxActivationKeyRequest::hcx_activation_key].
10591    pub fn set_hcx_activation_key<T>(mut self, v: T) -> Self
10592    where
10593        T: std::convert::Into<crate::model::HcxActivationKey>,
10594    {
10595        self.hcx_activation_key = std::option::Option::Some(v.into());
10596        self
10597    }
10598
10599    /// Sets or clears the value of [hcx_activation_key][crate::model::CreateHcxActivationKeyRequest::hcx_activation_key].
10600    pub fn set_or_clear_hcx_activation_key<T>(mut self, v: std::option::Option<T>) -> Self
10601    where
10602        T: std::convert::Into<crate::model::HcxActivationKey>,
10603    {
10604        self.hcx_activation_key = v.map(|x| x.into());
10605        self
10606    }
10607
10608    /// Sets the value of [hcx_activation_key_id][crate::model::CreateHcxActivationKeyRequest::hcx_activation_key_id].
10609    pub fn set_hcx_activation_key_id<T: std::convert::Into<std::string::String>>(
10610        mut self,
10611        v: T,
10612    ) -> Self {
10613        self.hcx_activation_key_id = v.into();
10614        self
10615    }
10616
10617    /// Sets the value of [request_id][crate::model::CreateHcxActivationKeyRequest::request_id].
10618    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10619        self.request_id = v.into();
10620        self
10621    }
10622}
10623
10624impl wkt::message::Message for CreateHcxActivationKeyRequest {
10625    fn typename() -> &'static str {
10626        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateHcxActivationKeyRequest"
10627    }
10628}
10629
10630#[doc(hidden)]
10631impl<'de> serde::de::Deserialize<'de> for CreateHcxActivationKeyRequest {
10632    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10633    where
10634        D: serde::Deserializer<'de>,
10635    {
10636        #[allow(non_camel_case_types)]
10637        #[doc(hidden)]
10638        #[derive(PartialEq, Eq, Hash)]
10639        enum __FieldTag {
10640            __parent,
10641            __hcx_activation_key,
10642            __hcx_activation_key_id,
10643            __request_id,
10644            Unknown(std::string::String),
10645        }
10646        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
10647            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10648            where
10649                D: serde::Deserializer<'de>,
10650            {
10651                struct Visitor;
10652                impl<'de> serde::de::Visitor<'de> for Visitor {
10653                    type Value = __FieldTag;
10654                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10655                        formatter.write_str("a field name for CreateHcxActivationKeyRequest")
10656                    }
10657                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
10658                    where
10659                        E: serde::de::Error,
10660                    {
10661                        use std::result::Result::Ok;
10662                        use std::string::ToString;
10663                        match value {
10664                            "parent" => Ok(__FieldTag::__parent),
10665                            "hcxActivationKey" => Ok(__FieldTag::__hcx_activation_key),
10666                            "hcx_activation_key" => Ok(__FieldTag::__hcx_activation_key),
10667                            "hcxActivationKeyId" => Ok(__FieldTag::__hcx_activation_key_id),
10668                            "hcx_activation_key_id" => Ok(__FieldTag::__hcx_activation_key_id),
10669                            "requestId" => Ok(__FieldTag::__request_id),
10670                            "request_id" => Ok(__FieldTag::__request_id),
10671                            _ => Ok(__FieldTag::Unknown(value.to_string())),
10672                        }
10673                    }
10674                }
10675                deserializer.deserialize_identifier(Visitor)
10676            }
10677        }
10678        struct Visitor;
10679        impl<'de> serde::de::Visitor<'de> for Visitor {
10680            type Value = CreateHcxActivationKeyRequest;
10681            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10682                formatter.write_str("struct CreateHcxActivationKeyRequest")
10683            }
10684            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
10685            where
10686                A: serde::de::MapAccess<'de>,
10687            {
10688                #[allow(unused_imports)]
10689                use serde::de::Error;
10690                use std::option::Option::Some;
10691                let mut fields = std::collections::HashSet::new();
10692                let mut result = Self::Value::new();
10693                while let Some(tag) = map.next_key::<__FieldTag>()? {
10694                    #[allow(clippy::match_single_binding)]
10695                    match tag {
10696                        __FieldTag::__parent => {
10697                            if !fields.insert(__FieldTag::__parent) {
10698                                return std::result::Result::Err(A::Error::duplicate_field(
10699                                    "multiple values for parent",
10700                                ));
10701                            }
10702                            result.parent = map
10703                                .next_value::<std::option::Option<std::string::String>>()?
10704                                .unwrap_or_default();
10705                        }
10706                        __FieldTag::__hcx_activation_key => {
10707                            if !fields.insert(__FieldTag::__hcx_activation_key) {
10708                                return std::result::Result::Err(A::Error::duplicate_field(
10709                                    "multiple values for hcx_activation_key",
10710                                ));
10711                            }
10712                            result.hcx_activation_key = map
10713                                .next_value::<std::option::Option<crate::model::HcxActivationKey>>(
10714                                )?;
10715                        }
10716                        __FieldTag::__hcx_activation_key_id => {
10717                            if !fields.insert(__FieldTag::__hcx_activation_key_id) {
10718                                return std::result::Result::Err(A::Error::duplicate_field(
10719                                    "multiple values for hcx_activation_key_id",
10720                                ));
10721                            }
10722                            result.hcx_activation_key_id = map
10723                                .next_value::<std::option::Option<std::string::String>>()?
10724                                .unwrap_or_default();
10725                        }
10726                        __FieldTag::__request_id => {
10727                            if !fields.insert(__FieldTag::__request_id) {
10728                                return std::result::Result::Err(A::Error::duplicate_field(
10729                                    "multiple values for request_id",
10730                                ));
10731                            }
10732                            result.request_id = map
10733                                .next_value::<std::option::Option<std::string::String>>()?
10734                                .unwrap_or_default();
10735                        }
10736                        __FieldTag::Unknown(key) => {
10737                            let value = map.next_value::<serde_json::Value>()?;
10738                            result._unknown_fields.insert(key, value);
10739                        }
10740                    }
10741                }
10742                std::result::Result::Ok(result)
10743            }
10744        }
10745        deserializer.deserialize_any(Visitor)
10746    }
10747}
10748
10749#[doc(hidden)]
10750impl serde::ser::Serialize for CreateHcxActivationKeyRequest {
10751    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10752    where
10753        S: serde::ser::Serializer,
10754    {
10755        use serde::ser::SerializeMap;
10756        #[allow(unused_imports)]
10757        use std::option::Option::Some;
10758        let mut state = serializer.serialize_map(std::option::Option::None)?;
10759        if !self.parent.is_empty() {
10760            state.serialize_entry("parent", &self.parent)?;
10761        }
10762        if self.hcx_activation_key.is_some() {
10763            state.serialize_entry("hcxActivationKey", &self.hcx_activation_key)?;
10764        }
10765        if !self.hcx_activation_key_id.is_empty() {
10766            state.serialize_entry("hcxActivationKeyId", &self.hcx_activation_key_id)?;
10767        }
10768        if !self.request_id.is_empty() {
10769            state.serialize_entry("requestId", &self.request_id)?;
10770        }
10771        if !self._unknown_fields.is_empty() {
10772            for (key, value) in self._unknown_fields.iter() {
10773                state.serialize_entry(key, &value)?;
10774            }
10775        }
10776        state.end()
10777    }
10778}
10779
10780/// Request message for
10781/// [VmwareEngine.GetDnsForwarding][google.cloud.vmwareengine.v1.VmwareEngine.GetDnsForwarding]
10782///
10783/// [google.cloud.vmwareengine.v1.VmwareEngine.GetDnsForwarding]: crate::client::VmwareEngine::get_dns_forwarding
10784#[derive(Clone, Debug, Default, PartialEq)]
10785#[non_exhaustive]
10786pub struct GetDnsForwardingRequest {
10787    /// Required. The resource name of a `DnsForwarding` to retrieve.
10788    /// Resource names are schemeless URIs that follow the conventions in
10789    /// <https://cloud.google.com/apis/design/resource_names>.
10790    /// For example:
10791    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/dnsForwarding`
10792    pub name: std::string::String,
10793
10794    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10795}
10796
10797impl GetDnsForwardingRequest {
10798    pub fn new() -> Self {
10799        std::default::Default::default()
10800    }
10801
10802    /// Sets the value of [name][crate::model::GetDnsForwardingRequest::name].
10803    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10804        self.name = v.into();
10805        self
10806    }
10807}
10808
10809impl wkt::message::Message for GetDnsForwardingRequest {
10810    fn typename() -> &'static str {
10811        "type.googleapis.com/google.cloud.vmwareengine.v1.GetDnsForwardingRequest"
10812    }
10813}
10814
10815#[doc(hidden)]
10816impl<'de> serde::de::Deserialize<'de> for GetDnsForwardingRequest {
10817    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10818    where
10819        D: serde::Deserializer<'de>,
10820    {
10821        #[allow(non_camel_case_types)]
10822        #[doc(hidden)]
10823        #[derive(PartialEq, Eq, Hash)]
10824        enum __FieldTag {
10825            __name,
10826            Unknown(std::string::String),
10827        }
10828        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
10829            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10830            where
10831                D: serde::Deserializer<'de>,
10832            {
10833                struct Visitor;
10834                impl<'de> serde::de::Visitor<'de> for Visitor {
10835                    type Value = __FieldTag;
10836                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10837                        formatter.write_str("a field name for GetDnsForwardingRequest")
10838                    }
10839                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
10840                    where
10841                        E: serde::de::Error,
10842                    {
10843                        use std::result::Result::Ok;
10844                        use std::string::ToString;
10845                        match value {
10846                            "name" => Ok(__FieldTag::__name),
10847                            _ => Ok(__FieldTag::Unknown(value.to_string())),
10848                        }
10849                    }
10850                }
10851                deserializer.deserialize_identifier(Visitor)
10852            }
10853        }
10854        struct Visitor;
10855        impl<'de> serde::de::Visitor<'de> for Visitor {
10856            type Value = GetDnsForwardingRequest;
10857            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
10858                formatter.write_str("struct GetDnsForwardingRequest")
10859            }
10860            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
10861            where
10862                A: serde::de::MapAccess<'de>,
10863            {
10864                #[allow(unused_imports)]
10865                use serde::de::Error;
10866                use std::option::Option::Some;
10867                let mut fields = std::collections::HashSet::new();
10868                let mut result = Self::Value::new();
10869                while let Some(tag) = map.next_key::<__FieldTag>()? {
10870                    #[allow(clippy::match_single_binding)]
10871                    match tag {
10872                        __FieldTag::__name => {
10873                            if !fields.insert(__FieldTag::__name) {
10874                                return std::result::Result::Err(A::Error::duplicate_field(
10875                                    "multiple values for name",
10876                                ));
10877                            }
10878                            result.name = map
10879                                .next_value::<std::option::Option<std::string::String>>()?
10880                                .unwrap_or_default();
10881                        }
10882                        __FieldTag::Unknown(key) => {
10883                            let value = map.next_value::<serde_json::Value>()?;
10884                            result._unknown_fields.insert(key, value);
10885                        }
10886                    }
10887                }
10888                std::result::Result::Ok(result)
10889            }
10890        }
10891        deserializer.deserialize_any(Visitor)
10892    }
10893}
10894
10895#[doc(hidden)]
10896impl serde::ser::Serialize for GetDnsForwardingRequest {
10897    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10898    where
10899        S: serde::ser::Serializer,
10900    {
10901        use serde::ser::SerializeMap;
10902        #[allow(unused_imports)]
10903        use std::option::Option::Some;
10904        let mut state = serializer.serialize_map(std::option::Option::None)?;
10905        if !self.name.is_empty() {
10906            state.serialize_entry("name", &self.name)?;
10907        }
10908        if !self._unknown_fields.is_empty() {
10909            for (key, value) in self._unknown_fields.iter() {
10910                state.serialize_entry(key, &value)?;
10911            }
10912        }
10913        state.end()
10914    }
10915}
10916
10917/// Request message for
10918/// [VmwareEngine.UpdateDnsForwarding][google.cloud.vmwareengine.v1.VmwareEngine.UpdateDnsForwarding]
10919///
10920/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateDnsForwarding]: crate::client::VmwareEngine::update_dns_forwarding
10921#[derive(Clone, Debug, Default, PartialEq)]
10922#[non_exhaustive]
10923pub struct UpdateDnsForwardingRequest {
10924    /// Required. DnsForwarding config details.
10925    pub dns_forwarding: std::option::Option<crate::model::DnsForwarding>,
10926
10927    /// Required. Field mask is used to specify the fields to be overwritten in the
10928    /// `DnsForwarding` resource by the update.
10929    /// The fields specified in the `update_mask` are relative to the resource, not
10930    /// the full request. A field will be overwritten if it is in the mask. If the
10931    /// user does not provide a mask then all fields will be overwritten.
10932    pub update_mask: std::option::Option<wkt::FieldMask>,
10933
10934    /// Optional. A request ID to identify requests. Specify a unique request ID
10935    /// so that if you must retry your request, the server will know to ignore
10936    /// the request if it has already been completed. The server guarantees that a
10937    /// request doesn't result in creation of duplicate commitments for at least 60
10938    /// minutes.
10939    ///
10940    /// For example, consider a situation where you make an initial request and the
10941    /// request times out. If you make the request again with the same request ID,
10942    /// the server can check if original operation with the same request ID was
10943    /// received, and if so, will ignore the second request. This prevents clients
10944    /// from accidentally creating duplicate commitments.
10945    ///
10946    /// The request ID must be a valid UUID with the exception that zero UUID is
10947    /// not supported (00000000-0000-0000-0000-000000000000).
10948    pub request_id: std::string::String,
10949
10950    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10951}
10952
10953impl UpdateDnsForwardingRequest {
10954    pub fn new() -> Self {
10955        std::default::Default::default()
10956    }
10957
10958    /// Sets the value of [dns_forwarding][crate::model::UpdateDnsForwardingRequest::dns_forwarding].
10959    pub fn set_dns_forwarding<T>(mut self, v: T) -> Self
10960    where
10961        T: std::convert::Into<crate::model::DnsForwarding>,
10962    {
10963        self.dns_forwarding = std::option::Option::Some(v.into());
10964        self
10965    }
10966
10967    /// Sets or clears the value of [dns_forwarding][crate::model::UpdateDnsForwardingRequest::dns_forwarding].
10968    pub fn set_or_clear_dns_forwarding<T>(mut self, v: std::option::Option<T>) -> Self
10969    where
10970        T: std::convert::Into<crate::model::DnsForwarding>,
10971    {
10972        self.dns_forwarding = v.map(|x| x.into());
10973        self
10974    }
10975
10976    /// Sets the value of [update_mask][crate::model::UpdateDnsForwardingRequest::update_mask].
10977    pub fn set_update_mask<T>(mut self, v: T) -> Self
10978    where
10979        T: std::convert::Into<wkt::FieldMask>,
10980    {
10981        self.update_mask = std::option::Option::Some(v.into());
10982        self
10983    }
10984
10985    /// Sets or clears the value of [update_mask][crate::model::UpdateDnsForwardingRequest::update_mask].
10986    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
10987    where
10988        T: std::convert::Into<wkt::FieldMask>,
10989    {
10990        self.update_mask = v.map(|x| x.into());
10991        self
10992    }
10993
10994    /// Sets the value of [request_id][crate::model::UpdateDnsForwardingRequest::request_id].
10995    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10996        self.request_id = v.into();
10997        self
10998    }
10999}
11000
11001impl wkt::message::Message for UpdateDnsForwardingRequest {
11002    fn typename() -> &'static str {
11003        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateDnsForwardingRequest"
11004    }
11005}
11006
11007#[doc(hidden)]
11008impl<'de> serde::de::Deserialize<'de> for UpdateDnsForwardingRequest {
11009    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11010    where
11011        D: serde::Deserializer<'de>,
11012    {
11013        #[allow(non_camel_case_types)]
11014        #[doc(hidden)]
11015        #[derive(PartialEq, Eq, Hash)]
11016        enum __FieldTag {
11017            __dns_forwarding,
11018            __update_mask,
11019            __request_id,
11020            Unknown(std::string::String),
11021        }
11022        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
11023            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11024            where
11025                D: serde::Deserializer<'de>,
11026            {
11027                struct Visitor;
11028                impl<'de> serde::de::Visitor<'de> for Visitor {
11029                    type Value = __FieldTag;
11030                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11031                        formatter.write_str("a field name for UpdateDnsForwardingRequest")
11032                    }
11033                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
11034                    where
11035                        E: serde::de::Error,
11036                    {
11037                        use std::result::Result::Ok;
11038                        use std::string::ToString;
11039                        match value {
11040                            "dnsForwarding" => Ok(__FieldTag::__dns_forwarding),
11041                            "dns_forwarding" => Ok(__FieldTag::__dns_forwarding),
11042                            "updateMask" => Ok(__FieldTag::__update_mask),
11043                            "update_mask" => Ok(__FieldTag::__update_mask),
11044                            "requestId" => Ok(__FieldTag::__request_id),
11045                            "request_id" => Ok(__FieldTag::__request_id),
11046                            _ => Ok(__FieldTag::Unknown(value.to_string())),
11047                        }
11048                    }
11049                }
11050                deserializer.deserialize_identifier(Visitor)
11051            }
11052        }
11053        struct Visitor;
11054        impl<'de> serde::de::Visitor<'de> for Visitor {
11055            type Value = UpdateDnsForwardingRequest;
11056            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11057                formatter.write_str("struct UpdateDnsForwardingRequest")
11058            }
11059            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
11060            where
11061                A: serde::de::MapAccess<'de>,
11062            {
11063                #[allow(unused_imports)]
11064                use serde::de::Error;
11065                use std::option::Option::Some;
11066                let mut fields = std::collections::HashSet::new();
11067                let mut result = Self::Value::new();
11068                while let Some(tag) = map.next_key::<__FieldTag>()? {
11069                    #[allow(clippy::match_single_binding)]
11070                    match tag {
11071                        __FieldTag::__dns_forwarding => {
11072                            if !fields.insert(__FieldTag::__dns_forwarding) {
11073                                return std::result::Result::Err(A::Error::duplicate_field(
11074                                    "multiple values for dns_forwarding",
11075                                ));
11076                            }
11077                            result.dns_forwarding = map
11078                                .next_value::<std::option::Option<crate::model::DnsForwarding>>()?;
11079                        }
11080                        __FieldTag::__update_mask => {
11081                            if !fields.insert(__FieldTag::__update_mask) {
11082                                return std::result::Result::Err(A::Error::duplicate_field(
11083                                    "multiple values for update_mask",
11084                                ));
11085                            }
11086                            result.update_mask =
11087                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
11088                        }
11089                        __FieldTag::__request_id => {
11090                            if !fields.insert(__FieldTag::__request_id) {
11091                                return std::result::Result::Err(A::Error::duplicate_field(
11092                                    "multiple values for request_id",
11093                                ));
11094                            }
11095                            result.request_id = map
11096                                .next_value::<std::option::Option<std::string::String>>()?
11097                                .unwrap_or_default();
11098                        }
11099                        __FieldTag::Unknown(key) => {
11100                            let value = map.next_value::<serde_json::Value>()?;
11101                            result._unknown_fields.insert(key, value);
11102                        }
11103                    }
11104                }
11105                std::result::Result::Ok(result)
11106            }
11107        }
11108        deserializer.deserialize_any(Visitor)
11109    }
11110}
11111
11112#[doc(hidden)]
11113impl serde::ser::Serialize for UpdateDnsForwardingRequest {
11114    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11115    where
11116        S: serde::ser::Serializer,
11117    {
11118        use serde::ser::SerializeMap;
11119        #[allow(unused_imports)]
11120        use std::option::Option::Some;
11121        let mut state = serializer.serialize_map(std::option::Option::None)?;
11122        if self.dns_forwarding.is_some() {
11123            state.serialize_entry("dnsForwarding", &self.dns_forwarding)?;
11124        }
11125        if self.update_mask.is_some() {
11126            state.serialize_entry("updateMask", &self.update_mask)?;
11127        }
11128        if !self.request_id.is_empty() {
11129            state.serialize_entry("requestId", &self.request_id)?;
11130        }
11131        if !self._unknown_fields.is_empty() {
11132            for (key, value) in self._unknown_fields.iter() {
11133                state.serialize_entry(key, &value)?;
11134            }
11135        }
11136        state.end()
11137    }
11138}
11139
11140/// Request message for
11141/// [VmwareEngine.CreateNetworkPeering][google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPeering]
11142///
11143/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPeering]: crate::client::VmwareEngine::create_network_peering
11144#[derive(Clone, Debug, Default, PartialEq)]
11145#[non_exhaustive]
11146pub struct CreateNetworkPeeringRequest {
11147    /// Required. The resource name of the location to create the new network
11148    /// peering in. This value is always `global`, because `NetworkPeering` is a
11149    /// global resource. Resource names are schemeless URIs that follow the
11150    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
11151    /// example: `projects/my-project/locations/global`
11152    pub parent: std::string::String,
11153
11154    /// Required. The user-provided identifier of the new `NetworkPeering`.
11155    /// This identifier must be unique among `NetworkPeering` resources within the
11156    /// parent and becomes the final token in the name URI.
11157    /// The identifier must meet the following requirements:
11158    ///
11159    /// * Only contains 1-63 alphanumeric characters and hyphens
11160    /// * Begins with an alphabetical character
11161    /// * Ends with a non-hyphen character
11162    /// * Not formatted as a UUID
11163    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
11164    ///   (section 3.5)
11165    pub network_peering_id: std::string::String,
11166
11167    /// Required. The initial description of the new network peering.
11168    pub network_peering: std::option::Option<crate::model::NetworkPeering>,
11169
11170    /// Optional. A request ID to identify requests. Specify a unique request ID
11171    /// so that if you must retry your request, the server will know to ignore
11172    /// the request if it has already been completed. The server guarantees that a
11173    /// request doesn't result in creation of duplicate commitments for at least 60
11174    /// minutes.
11175    ///
11176    /// For example, consider a situation where you make an initial request and the
11177    /// request times out. If you make the request again with the same request
11178    /// ID, the server can check if original operation with the same request ID
11179    /// was received, and if so, will ignore the second request. This prevents
11180    /// clients from accidentally creating duplicate commitments.
11181    ///
11182    /// The request ID must be a valid UUID with the exception that zero UUID is
11183    /// not supported (00000000-0000-0000-0000-000000000000).
11184    pub request_id: std::string::String,
11185
11186    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11187}
11188
11189impl CreateNetworkPeeringRequest {
11190    pub fn new() -> Self {
11191        std::default::Default::default()
11192    }
11193
11194    /// Sets the value of [parent][crate::model::CreateNetworkPeeringRequest::parent].
11195    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11196        self.parent = v.into();
11197        self
11198    }
11199
11200    /// Sets the value of [network_peering_id][crate::model::CreateNetworkPeeringRequest::network_peering_id].
11201    pub fn set_network_peering_id<T: std::convert::Into<std::string::String>>(
11202        mut self,
11203        v: T,
11204    ) -> Self {
11205        self.network_peering_id = v.into();
11206        self
11207    }
11208
11209    /// Sets the value of [network_peering][crate::model::CreateNetworkPeeringRequest::network_peering].
11210    pub fn set_network_peering<T>(mut self, v: T) -> Self
11211    where
11212        T: std::convert::Into<crate::model::NetworkPeering>,
11213    {
11214        self.network_peering = std::option::Option::Some(v.into());
11215        self
11216    }
11217
11218    /// Sets or clears the value of [network_peering][crate::model::CreateNetworkPeeringRequest::network_peering].
11219    pub fn set_or_clear_network_peering<T>(mut self, v: std::option::Option<T>) -> Self
11220    where
11221        T: std::convert::Into<crate::model::NetworkPeering>,
11222    {
11223        self.network_peering = v.map(|x| x.into());
11224        self
11225    }
11226
11227    /// Sets the value of [request_id][crate::model::CreateNetworkPeeringRequest::request_id].
11228    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11229        self.request_id = v.into();
11230        self
11231    }
11232}
11233
11234impl wkt::message::Message for CreateNetworkPeeringRequest {
11235    fn typename() -> &'static str {
11236        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateNetworkPeeringRequest"
11237    }
11238}
11239
11240#[doc(hidden)]
11241impl<'de> serde::de::Deserialize<'de> for CreateNetworkPeeringRequest {
11242    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11243    where
11244        D: serde::Deserializer<'de>,
11245    {
11246        #[allow(non_camel_case_types)]
11247        #[doc(hidden)]
11248        #[derive(PartialEq, Eq, Hash)]
11249        enum __FieldTag {
11250            __parent,
11251            __network_peering_id,
11252            __network_peering,
11253            __request_id,
11254            Unknown(std::string::String),
11255        }
11256        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
11257            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11258            where
11259                D: serde::Deserializer<'de>,
11260            {
11261                struct Visitor;
11262                impl<'de> serde::de::Visitor<'de> for Visitor {
11263                    type Value = __FieldTag;
11264                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11265                        formatter.write_str("a field name for CreateNetworkPeeringRequest")
11266                    }
11267                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
11268                    where
11269                        E: serde::de::Error,
11270                    {
11271                        use std::result::Result::Ok;
11272                        use std::string::ToString;
11273                        match value {
11274                            "parent" => Ok(__FieldTag::__parent),
11275                            "networkPeeringId" => Ok(__FieldTag::__network_peering_id),
11276                            "network_peering_id" => Ok(__FieldTag::__network_peering_id),
11277                            "networkPeering" => Ok(__FieldTag::__network_peering),
11278                            "network_peering" => Ok(__FieldTag::__network_peering),
11279                            "requestId" => Ok(__FieldTag::__request_id),
11280                            "request_id" => Ok(__FieldTag::__request_id),
11281                            _ => Ok(__FieldTag::Unknown(value.to_string())),
11282                        }
11283                    }
11284                }
11285                deserializer.deserialize_identifier(Visitor)
11286            }
11287        }
11288        struct Visitor;
11289        impl<'de> serde::de::Visitor<'de> for Visitor {
11290            type Value = CreateNetworkPeeringRequest;
11291            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11292                formatter.write_str("struct CreateNetworkPeeringRequest")
11293            }
11294            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
11295            where
11296                A: serde::de::MapAccess<'de>,
11297            {
11298                #[allow(unused_imports)]
11299                use serde::de::Error;
11300                use std::option::Option::Some;
11301                let mut fields = std::collections::HashSet::new();
11302                let mut result = Self::Value::new();
11303                while let Some(tag) = map.next_key::<__FieldTag>()? {
11304                    #[allow(clippy::match_single_binding)]
11305                    match tag {
11306                        __FieldTag::__parent => {
11307                            if !fields.insert(__FieldTag::__parent) {
11308                                return std::result::Result::Err(A::Error::duplicate_field(
11309                                    "multiple values for parent",
11310                                ));
11311                            }
11312                            result.parent = map
11313                                .next_value::<std::option::Option<std::string::String>>()?
11314                                .unwrap_or_default();
11315                        }
11316                        __FieldTag::__network_peering_id => {
11317                            if !fields.insert(__FieldTag::__network_peering_id) {
11318                                return std::result::Result::Err(A::Error::duplicate_field(
11319                                    "multiple values for network_peering_id",
11320                                ));
11321                            }
11322                            result.network_peering_id = map
11323                                .next_value::<std::option::Option<std::string::String>>()?
11324                                .unwrap_or_default();
11325                        }
11326                        __FieldTag::__network_peering => {
11327                            if !fields.insert(__FieldTag::__network_peering) {
11328                                return std::result::Result::Err(A::Error::duplicate_field(
11329                                    "multiple values for network_peering",
11330                                ));
11331                            }
11332                            result.network_peering = map
11333                                .next_value::<std::option::Option<crate::model::NetworkPeering>>(
11334                                )?;
11335                        }
11336                        __FieldTag::__request_id => {
11337                            if !fields.insert(__FieldTag::__request_id) {
11338                                return std::result::Result::Err(A::Error::duplicate_field(
11339                                    "multiple values for request_id",
11340                                ));
11341                            }
11342                            result.request_id = map
11343                                .next_value::<std::option::Option<std::string::String>>()?
11344                                .unwrap_or_default();
11345                        }
11346                        __FieldTag::Unknown(key) => {
11347                            let value = map.next_value::<serde_json::Value>()?;
11348                            result._unknown_fields.insert(key, value);
11349                        }
11350                    }
11351                }
11352                std::result::Result::Ok(result)
11353            }
11354        }
11355        deserializer.deserialize_any(Visitor)
11356    }
11357}
11358
11359#[doc(hidden)]
11360impl serde::ser::Serialize for CreateNetworkPeeringRequest {
11361    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11362    where
11363        S: serde::ser::Serializer,
11364    {
11365        use serde::ser::SerializeMap;
11366        #[allow(unused_imports)]
11367        use std::option::Option::Some;
11368        let mut state = serializer.serialize_map(std::option::Option::None)?;
11369        if !self.parent.is_empty() {
11370            state.serialize_entry("parent", &self.parent)?;
11371        }
11372        if !self.network_peering_id.is_empty() {
11373            state.serialize_entry("networkPeeringId", &self.network_peering_id)?;
11374        }
11375        if self.network_peering.is_some() {
11376            state.serialize_entry("networkPeering", &self.network_peering)?;
11377        }
11378        if !self.request_id.is_empty() {
11379            state.serialize_entry("requestId", &self.request_id)?;
11380        }
11381        if !self._unknown_fields.is_empty() {
11382            for (key, value) in self._unknown_fields.iter() {
11383                state.serialize_entry(key, &value)?;
11384            }
11385        }
11386        state.end()
11387    }
11388}
11389
11390/// Request message for
11391/// [VmwareEngine.DeleteNetworkPeering][google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPeering]
11392///
11393/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPeering]: crate::client::VmwareEngine::delete_network_peering
11394#[derive(Clone, Debug, Default, PartialEq)]
11395#[non_exhaustive]
11396pub struct DeleteNetworkPeeringRequest {
11397    /// Required. The resource name of the network peering to be deleted.
11398    /// Resource names are schemeless URIs that follow the conventions in
11399    /// <https://cloud.google.com/apis/design/resource_names>.
11400    /// For example:
11401    /// `projects/my-project/locations/global/networkPeerings/my-peering`
11402    pub name: std::string::String,
11403
11404    /// Optional. A request ID to identify requests. Specify a unique request ID
11405    /// so that if you must retry your request, the server will know to ignore
11406    /// the request if it has already been completed. The server guarantees that a
11407    /// request doesn't result in creation of duplicate commitments for at least 60
11408    /// minutes.
11409    ///
11410    /// For example, consider a situation where you make an initial request and the
11411    /// request times out. If you make the request again with the same request
11412    /// ID, the server can check if original operation with the same request ID
11413    /// was received, and if so, will ignore the second request. This prevents
11414    /// clients from accidentally creating duplicate commitments.
11415    ///
11416    /// The request ID must be a valid UUID with the exception that zero UUID is
11417    /// not supported (00000000-0000-0000-0000-000000000000).
11418    pub request_id: std::string::String,
11419
11420    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11421}
11422
11423impl DeleteNetworkPeeringRequest {
11424    pub fn new() -> Self {
11425        std::default::Default::default()
11426    }
11427
11428    /// Sets the value of [name][crate::model::DeleteNetworkPeeringRequest::name].
11429    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11430        self.name = v.into();
11431        self
11432    }
11433
11434    /// Sets the value of [request_id][crate::model::DeleteNetworkPeeringRequest::request_id].
11435    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11436        self.request_id = v.into();
11437        self
11438    }
11439}
11440
11441impl wkt::message::Message for DeleteNetworkPeeringRequest {
11442    fn typename() -> &'static str {
11443        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteNetworkPeeringRequest"
11444    }
11445}
11446
11447#[doc(hidden)]
11448impl<'de> serde::de::Deserialize<'de> for DeleteNetworkPeeringRequest {
11449    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11450    where
11451        D: serde::Deserializer<'de>,
11452    {
11453        #[allow(non_camel_case_types)]
11454        #[doc(hidden)]
11455        #[derive(PartialEq, Eq, Hash)]
11456        enum __FieldTag {
11457            __name,
11458            __request_id,
11459            Unknown(std::string::String),
11460        }
11461        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
11462            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11463            where
11464                D: serde::Deserializer<'de>,
11465            {
11466                struct Visitor;
11467                impl<'de> serde::de::Visitor<'de> for Visitor {
11468                    type Value = __FieldTag;
11469                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11470                        formatter.write_str("a field name for DeleteNetworkPeeringRequest")
11471                    }
11472                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
11473                    where
11474                        E: serde::de::Error,
11475                    {
11476                        use std::result::Result::Ok;
11477                        use std::string::ToString;
11478                        match value {
11479                            "name" => Ok(__FieldTag::__name),
11480                            "requestId" => Ok(__FieldTag::__request_id),
11481                            "request_id" => Ok(__FieldTag::__request_id),
11482                            _ => Ok(__FieldTag::Unknown(value.to_string())),
11483                        }
11484                    }
11485                }
11486                deserializer.deserialize_identifier(Visitor)
11487            }
11488        }
11489        struct Visitor;
11490        impl<'de> serde::de::Visitor<'de> for Visitor {
11491            type Value = DeleteNetworkPeeringRequest;
11492            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11493                formatter.write_str("struct DeleteNetworkPeeringRequest")
11494            }
11495            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
11496            where
11497                A: serde::de::MapAccess<'de>,
11498            {
11499                #[allow(unused_imports)]
11500                use serde::de::Error;
11501                use std::option::Option::Some;
11502                let mut fields = std::collections::HashSet::new();
11503                let mut result = Self::Value::new();
11504                while let Some(tag) = map.next_key::<__FieldTag>()? {
11505                    #[allow(clippy::match_single_binding)]
11506                    match tag {
11507                        __FieldTag::__name => {
11508                            if !fields.insert(__FieldTag::__name) {
11509                                return std::result::Result::Err(A::Error::duplicate_field(
11510                                    "multiple values for name",
11511                                ));
11512                            }
11513                            result.name = map
11514                                .next_value::<std::option::Option<std::string::String>>()?
11515                                .unwrap_or_default();
11516                        }
11517                        __FieldTag::__request_id => {
11518                            if !fields.insert(__FieldTag::__request_id) {
11519                                return std::result::Result::Err(A::Error::duplicate_field(
11520                                    "multiple values for request_id",
11521                                ));
11522                            }
11523                            result.request_id = map
11524                                .next_value::<std::option::Option<std::string::String>>()?
11525                                .unwrap_or_default();
11526                        }
11527                        __FieldTag::Unknown(key) => {
11528                            let value = map.next_value::<serde_json::Value>()?;
11529                            result._unknown_fields.insert(key, value);
11530                        }
11531                    }
11532                }
11533                std::result::Result::Ok(result)
11534            }
11535        }
11536        deserializer.deserialize_any(Visitor)
11537    }
11538}
11539
11540#[doc(hidden)]
11541impl serde::ser::Serialize for DeleteNetworkPeeringRequest {
11542    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11543    where
11544        S: serde::ser::Serializer,
11545    {
11546        use serde::ser::SerializeMap;
11547        #[allow(unused_imports)]
11548        use std::option::Option::Some;
11549        let mut state = serializer.serialize_map(std::option::Option::None)?;
11550        if !self.name.is_empty() {
11551            state.serialize_entry("name", &self.name)?;
11552        }
11553        if !self.request_id.is_empty() {
11554            state.serialize_entry("requestId", &self.request_id)?;
11555        }
11556        if !self._unknown_fields.is_empty() {
11557            for (key, value) in self._unknown_fields.iter() {
11558                state.serialize_entry(key, &value)?;
11559            }
11560        }
11561        state.end()
11562    }
11563}
11564
11565/// Request message for
11566/// [VmwareEngine.GetNetworkPeering][google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPeering]
11567///
11568/// [google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPeering]: crate::client::VmwareEngine::get_network_peering
11569#[derive(Clone, Debug, Default, PartialEq)]
11570#[non_exhaustive]
11571pub struct GetNetworkPeeringRequest {
11572    /// Required. The resource name of the network peering to retrieve.
11573    /// Resource names are schemeless URIs that follow the conventions in
11574    /// <https://cloud.google.com/apis/design/resource_names>.
11575    /// For example:
11576    /// `projects/my-project/locations/global/networkPeerings/my-peering`
11577    pub name: std::string::String,
11578
11579    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11580}
11581
11582impl GetNetworkPeeringRequest {
11583    pub fn new() -> Self {
11584        std::default::Default::default()
11585    }
11586
11587    /// Sets the value of [name][crate::model::GetNetworkPeeringRequest::name].
11588    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11589        self.name = v.into();
11590        self
11591    }
11592}
11593
11594impl wkt::message::Message for GetNetworkPeeringRequest {
11595    fn typename() -> &'static str {
11596        "type.googleapis.com/google.cloud.vmwareengine.v1.GetNetworkPeeringRequest"
11597    }
11598}
11599
11600#[doc(hidden)]
11601impl<'de> serde::de::Deserialize<'de> for GetNetworkPeeringRequest {
11602    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11603    where
11604        D: serde::Deserializer<'de>,
11605    {
11606        #[allow(non_camel_case_types)]
11607        #[doc(hidden)]
11608        #[derive(PartialEq, Eq, Hash)]
11609        enum __FieldTag {
11610            __name,
11611            Unknown(std::string::String),
11612        }
11613        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
11614            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11615            where
11616                D: serde::Deserializer<'de>,
11617            {
11618                struct Visitor;
11619                impl<'de> serde::de::Visitor<'de> for Visitor {
11620                    type Value = __FieldTag;
11621                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11622                        formatter.write_str("a field name for GetNetworkPeeringRequest")
11623                    }
11624                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
11625                    where
11626                        E: serde::de::Error,
11627                    {
11628                        use std::result::Result::Ok;
11629                        use std::string::ToString;
11630                        match value {
11631                            "name" => Ok(__FieldTag::__name),
11632                            _ => Ok(__FieldTag::Unknown(value.to_string())),
11633                        }
11634                    }
11635                }
11636                deserializer.deserialize_identifier(Visitor)
11637            }
11638        }
11639        struct Visitor;
11640        impl<'de> serde::de::Visitor<'de> for Visitor {
11641            type Value = GetNetworkPeeringRequest;
11642            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11643                formatter.write_str("struct GetNetworkPeeringRequest")
11644            }
11645            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
11646            where
11647                A: serde::de::MapAccess<'de>,
11648            {
11649                #[allow(unused_imports)]
11650                use serde::de::Error;
11651                use std::option::Option::Some;
11652                let mut fields = std::collections::HashSet::new();
11653                let mut result = Self::Value::new();
11654                while let Some(tag) = map.next_key::<__FieldTag>()? {
11655                    #[allow(clippy::match_single_binding)]
11656                    match tag {
11657                        __FieldTag::__name => {
11658                            if !fields.insert(__FieldTag::__name) {
11659                                return std::result::Result::Err(A::Error::duplicate_field(
11660                                    "multiple values for name",
11661                                ));
11662                            }
11663                            result.name = map
11664                                .next_value::<std::option::Option<std::string::String>>()?
11665                                .unwrap_or_default();
11666                        }
11667                        __FieldTag::Unknown(key) => {
11668                            let value = map.next_value::<serde_json::Value>()?;
11669                            result._unknown_fields.insert(key, value);
11670                        }
11671                    }
11672                }
11673                std::result::Result::Ok(result)
11674            }
11675        }
11676        deserializer.deserialize_any(Visitor)
11677    }
11678}
11679
11680#[doc(hidden)]
11681impl serde::ser::Serialize for GetNetworkPeeringRequest {
11682    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11683    where
11684        S: serde::ser::Serializer,
11685    {
11686        use serde::ser::SerializeMap;
11687        #[allow(unused_imports)]
11688        use std::option::Option::Some;
11689        let mut state = serializer.serialize_map(std::option::Option::None)?;
11690        if !self.name.is_empty() {
11691            state.serialize_entry("name", &self.name)?;
11692        }
11693        if !self._unknown_fields.is_empty() {
11694            for (key, value) in self._unknown_fields.iter() {
11695                state.serialize_entry(key, &value)?;
11696            }
11697        }
11698        state.end()
11699    }
11700}
11701
11702/// Request message for
11703/// [VmwareEngine.ListNetworkPeerings][google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings]
11704///
11705/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings]: crate::client::VmwareEngine::list_network_peerings
11706#[derive(Clone, Debug, Default, PartialEq)]
11707#[non_exhaustive]
11708pub struct ListNetworkPeeringsRequest {
11709    /// Required. The resource name of the location (global) to query for
11710    /// network peerings. Resource names are schemeless URIs that follow the
11711    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
11712    /// example: `projects/my-project/locations/global`
11713    pub parent: std::string::String,
11714
11715    /// The maximum number of network peerings to return in one page.
11716    /// The maximum value is coerced to 1000.
11717    /// The default value of this field is 500.
11718    pub page_size: i32,
11719
11720    /// A page token, received from a previous `ListNetworkPeerings` call.
11721    /// Provide this to retrieve the subsequent page.
11722    ///
11723    /// When paginating, all other parameters provided to
11724    /// `ListNetworkPeerings` must match the call that provided the page
11725    /// token.
11726    pub page_token: std::string::String,
11727
11728    /// A filter expression that matches resources returned in the response.
11729    /// The expression must specify the field name, a comparison
11730    /// operator, and the value that you want to use for filtering. The value
11731    /// must be a string, a number, or a boolean. The comparison operator
11732    /// must be `=`, `!=`, `>`, or `<`.
11733    ///
11734    /// For example, if you are filtering a list of network peerings, you can
11735    /// exclude the ones named `example-peering` by specifying
11736    /// `name != "example-peering"`.
11737    ///
11738    /// To filter on multiple expressions, provide each separate expression within
11739    /// parentheses. For example:
11740    ///
11741    /// ```norust
11742    /// (name = "example-peering")
11743    /// (createTime > "2021-04-12T08:15:10.40Z")
11744    /// ```
11745    ///
11746    /// By default, each expression is an `AND` expression. However, you
11747    /// can include `AND` and `OR` expressions explicitly.
11748    /// For example:
11749    ///
11750    /// ```norust
11751    /// (name = "example-peering-1") AND
11752    /// (createTime > "2021-04-12T08:15:10.40Z") OR
11753    /// (name = "example-peering-2")
11754    /// ```
11755    pub filter: std::string::String,
11756
11757    /// Sorts list results by a certain order. By default, returned results
11758    /// are ordered by `name` in ascending order.
11759    /// You can also sort results in descending order based on the `name` value
11760    /// using `orderBy="name desc"`.
11761    /// Currently, only ordering by `name` is supported.
11762    pub order_by: std::string::String,
11763
11764    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11765}
11766
11767impl ListNetworkPeeringsRequest {
11768    pub fn new() -> Self {
11769        std::default::Default::default()
11770    }
11771
11772    /// Sets the value of [parent][crate::model::ListNetworkPeeringsRequest::parent].
11773    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11774        self.parent = v.into();
11775        self
11776    }
11777
11778    /// Sets the value of [page_size][crate::model::ListNetworkPeeringsRequest::page_size].
11779    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
11780        self.page_size = v.into();
11781        self
11782    }
11783
11784    /// Sets the value of [page_token][crate::model::ListNetworkPeeringsRequest::page_token].
11785    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11786        self.page_token = v.into();
11787        self
11788    }
11789
11790    /// Sets the value of [filter][crate::model::ListNetworkPeeringsRequest::filter].
11791    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11792        self.filter = v.into();
11793        self
11794    }
11795
11796    /// Sets the value of [order_by][crate::model::ListNetworkPeeringsRequest::order_by].
11797    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11798        self.order_by = v.into();
11799        self
11800    }
11801}
11802
11803impl wkt::message::Message for ListNetworkPeeringsRequest {
11804    fn typename() -> &'static str {
11805        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNetworkPeeringsRequest"
11806    }
11807}
11808
11809#[doc(hidden)]
11810impl<'de> serde::de::Deserialize<'de> for ListNetworkPeeringsRequest {
11811    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11812    where
11813        D: serde::Deserializer<'de>,
11814    {
11815        #[allow(non_camel_case_types)]
11816        #[doc(hidden)]
11817        #[derive(PartialEq, Eq, Hash)]
11818        enum __FieldTag {
11819            __parent,
11820            __page_size,
11821            __page_token,
11822            __filter,
11823            __order_by,
11824            Unknown(std::string::String),
11825        }
11826        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
11827            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11828            where
11829                D: serde::Deserializer<'de>,
11830            {
11831                struct Visitor;
11832                impl<'de> serde::de::Visitor<'de> for Visitor {
11833                    type Value = __FieldTag;
11834                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11835                        formatter.write_str("a field name for ListNetworkPeeringsRequest")
11836                    }
11837                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
11838                    where
11839                        E: serde::de::Error,
11840                    {
11841                        use std::result::Result::Ok;
11842                        use std::string::ToString;
11843                        match value {
11844                            "parent" => Ok(__FieldTag::__parent),
11845                            "pageSize" => Ok(__FieldTag::__page_size),
11846                            "page_size" => Ok(__FieldTag::__page_size),
11847                            "pageToken" => Ok(__FieldTag::__page_token),
11848                            "page_token" => Ok(__FieldTag::__page_token),
11849                            "filter" => Ok(__FieldTag::__filter),
11850                            "orderBy" => Ok(__FieldTag::__order_by),
11851                            "order_by" => Ok(__FieldTag::__order_by),
11852                            _ => Ok(__FieldTag::Unknown(value.to_string())),
11853                        }
11854                    }
11855                }
11856                deserializer.deserialize_identifier(Visitor)
11857            }
11858        }
11859        struct Visitor;
11860        impl<'de> serde::de::Visitor<'de> for Visitor {
11861            type Value = ListNetworkPeeringsRequest;
11862            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
11863                formatter.write_str("struct ListNetworkPeeringsRequest")
11864            }
11865            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
11866            where
11867                A: serde::de::MapAccess<'de>,
11868            {
11869                #[allow(unused_imports)]
11870                use serde::de::Error;
11871                use std::option::Option::Some;
11872                let mut fields = std::collections::HashSet::new();
11873                let mut result = Self::Value::new();
11874                while let Some(tag) = map.next_key::<__FieldTag>()? {
11875                    #[allow(clippy::match_single_binding)]
11876                    match tag {
11877                        __FieldTag::__parent => {
11878                            if !fields.insert(__FieldTag::__parent) {
11879                                return std::result::Result::Err(A::Error::duplicate_field(
11880                                    "multiple values for parent",
11881                                ));
11882                            }
11883                            result.parent = map
11884                                .next_value::<std::option::Option<std::string::String>>()?
11885                                .unwrap_or_default();
11886                        }
11887                        __FieldTag::__page_size => {
11888                            if !fields.insert(__FieldTag::__page_size) {
11889                                return std::result::Result::Err(A::Error::duplicate_field(
11890                                    "multiple values for page_size",
11891                                ));
11892                            }
11893                            struct __With(std::option::Option<i32>);
11894                            impl<'de> serde::de::Deserialize<'de> for __With {
11895                                fn deserialize<D>(
11896                                    deserializer: D,
11897                                ) -> std::result::Result<Self, D::Error>
11898                                where
11899                                    D: serde::de::Deserializer<'de>,
11900                                {
11901                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
11902                                }
11903                            }
11904                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
11905                        }
11906                        __FieldTag::__page_token => {
11907                            if !fields.insert(__FieldTag::__page_token) {
11908                                return std::result::Result::Err(A::Error::duplicate_field(
11909                                    "multiple values for page_token",
11910                                ));
11911                            }
11912                            result.page_token = map
11913                                .next_value::<std::option::Option<std::string::String>>()?
11914                                .unwrap_or_default();
11915                        }
11916                        __FieldTag::__filter => {
11917                            if !fields.insert(__FieldTag::__filter) {
11918                                return std::result::Result::Err(A::Error::duplicate_field(
11919                                    "multiple values for filter",
11920                                ));
11921                            }
11922                            result.filter = map
11923                                .next_value::<std::option::Option<std::string::String>>()?
11924                                .unwrap_or_default();
11925                        }
11926                        __FieldTag::__order_by => {
11927                            if !fields.insert(__FieldTag::__order_by) {
11928                                return std::result::Result::Err(A::Error::duplicate_field(
11929                                    "multiple values for order_by",
11930                                ));
11931                            }
11932                            result.order_by = map
11933                                .next_value::<std::option::Option<std::string::String>>()?
11934                                .unwrap_or_default();
11935                        }
11936                        __FieldTag::Unknown(key) => {
11937                            let value = map.next_value::<serde_json::Value>()?;
11938                            result._unknown_fields.insert(key, value);
11939                        }
11940                    }
11941                }
11942                std::result::Result::Ok(result)
11943            }
11944        }
11945        deserializer.deserialize_any(Visitor)
11946    }
11947}
11948
11949#[doc(hidden)]
11950impl serde::ser::Serialize for ListNetworkPeeringsRequest {
11951    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11952    where
11953        S: serde::ser::Serializer,
11954    {
11955        use serde::ser::SerializeMap;
11956        #[allow(unused_imports)]
11957        use std::option::Option::Some;
11958        let mut state = serializer.serialize_map(std::option::Option::None)?;
11959        if !self.parent.is_empty() {
11960            state.serialize_entry("parent", &self.parent)?;
11961        }
11962        if !wkt::internal::is_default(&self.page_size) {
11963            struct __With<'a>(&'a i32);
11964            impl<'a> serde::ser::Serialize for __With<'a> {
11965                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11966                where
11967                    S: serde::ser::Serializer,
11968                {
11969                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
11970                }
11971            }
11972            state.serialize_entry("pageSize", &__With(&self.page_size))?;
11973        }
11974        if !self.page_token.is_empty() {
11975            state.serialize_entry("pageToken", &self.page_token)?;
11976        }
11977        if !self.filter.is_empty() {
11978            state.serialize_entry("filter", &self.filter)?;
11979        }
11980        if !self.order_by.is_empty() {
11981            state.serialize_entry("orderBy", &self.order_by)?;
11982        }
11983        if !self._unknown_fields.is_empty() {
11984            for (key, value) in self._unknown_fields.iter() {
11985                state.serialize_entry(key, &value)?;
11986            }
11987        }
11988        state.end()
11989    }
11990}
11991
11992/// Request message for
11993/// [VmwareEngine.UpdateNetworkPeering][google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPeering]
11994///
11995/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPeering]: crate::client::VmwareEngine::update_network_peering
11996#[derive(Clone, Debug, Default, PartialEq)]
11997#[non_exhaustive]
11998pub struct UpdateNetworkPeeringRequest {
11999    /// Required. Network peering description.
12000    pub network_peering: std::option::Option<crate::model::NetworkPeering>,
12001
12002    /// Required. Field mask is used to specify the fields to be overwritten in the
12003    /// `NetworkPeering` resource by the update.
12004    /// The fields specified in the `update_mask` are relative to the resource, not
12005    /// the full request. A field will be overwritten if it is in the mask. If the
12006    /// user does not provide a mask then all fields will be overwritten.
12007    pub update_mask: std::option::Option<wkt::FieldMask>,
12008
12009    /// Optional. A request ID to identify requests. Specify a unique request ID
12010    /// so that if you must retry your request, the server will know to ignore
12011    /// the request if it has already been completed. The server guarantees that a
12012    /// request doesn't result in creation of duplicate commitments for at least 60
12013    /// minutes.
12014    ///
12015    /// For example, consider a situation where you make an initial request and the
12016    /// request times out. If you make the request again with the same request
12017    /// ID, the server can check if original operation with the same request ID
12018    /// was received, and if so, will ignore the second request. This prevents
12019    /// clients from accidentally creating duplicate commitments.
12020    ///
12021    /// The request ID must be a valid UUID with the exception that zero UUID is
12022    /// not supported (00000000-0000-0000-0000-000000000000).
12023    pub request_id: std::string::String,
12024
12025    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12026}
12027
12028impl UpdateNetworkPeeringRequest {
12029    pub fn new() -> Self {
12030        std::default::Default::default()
12031    }
12032
12033    /// Sets the value of [network_peering][crate::model::UpdateNetworkPeeringRequest::network_peering].
12034    pub fn set_network_peering<T>(mut self, v: T) -> Self
12035    where
12036        T: std::convert::Into<crate::model::NetworkPeering>,
12037    {
12038        self.network_peering = std::option::Option::Some(v.into());
12039        self
12040    }
12041
12042    /// Sets or clears the value of [network_peering][crate::model::UpdateNetworkPeeringRequest::network_peering].
12043    pub fn set_or_clear_network_peering<T>(mut self, v: std::option::Option<T>) -> Self
12044    where
12045        T: std::convert::Into<crate::model::NetworkPeering>,
12046    {
12047        self.network_peering = v.map(|x| x.into());
12048        self
12049    }
12050
12051    /// Sets the value of [update_mask][crate::model::UpdateNetworkPeeringRequest::update_mask].
12052    pub fn set_update_mask<T>(mut self, v: T) -> Self
12053    where
12054        T: std::convert::Into<wkt::FieldMask>,
12055    {
12056        self.update_mask = std::option::Option::Some(v.into());
12057        self
12058    }
12059
12060    /// Sets or clears the value of [update_mask][crate::model::UpdateNetworkPeeringRequest::update_mask].
12061    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
12062    where
12063        T: std::convert::Into<wkt::FieldMask>,
12064    {
12065        self.update_mask = v.map(|x| x.into());
12066        self
12067    }
12068
12069    /// Sets the value of [request_id][crate::model::UpdateNetworkPeeringRequest::request_id].
12070    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12071        self.request_id = v.into();
12072        self
12073    }
12074}
12075
12076impl wkt::message::Message for UpdateNetworkPeeringRequest {
12077    fn typename() -> &'static str {
12078        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateNetworkPeeringRequest"
12079    }
12080}
12081
12082#[doc(hidden)]
12083impl<'de> serde::de::Deserialize<'de> for UpdateNetworkPeeringRequest {
12084    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12085    where
12086        D: serde::Deserializer<'de>,
12087    {
12088        #[allow(non_camel_case_types)]
12089        #[doc(hidden)]
12090        #[derive(PartialEq, Eq, Hash)]
12091        enum __FieldTag {
12092            __network_peering,
12093            __update_mask,
12094            __request_id,
12095            Unknown(std::string::String),
12096        }
12097        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
12098            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12099            where
12100                D: serde::Deserializer<'de>,
12101            {
12102                struct Visitor;
12103                impl<'de> serde::de::Visitor<'de> for Visitor {
12104                    type Value = __FieldTag;
12105                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12106                        formatter.write_str("a field name for UpdateNetworkPeeringRequest")
12107                    }
12108                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
12109                    where
12110                        E: serde::de::Error,
12111                    {
12112                        use std::result::Result::Ok;
12113                        use std::string::ToString;
12114                        match value {
12115                            "networkPeering" => Ok(__FieldTag::__network_peering),
12116                            "network_peering" => Ok(__FieldTag::__network_peering),
12117                            "updateMask" => Ok(__FieldTag::__update_mask),
12118                            "update_mask" => Ok(__FieldTag::__update_mask),
12119                            "requestId" => Ok(__FieldTag::__request_id),
12120                            "request_id" => Ok(__FieldTag::__request_id),
12121                            _ => Ok(__FieldTag::Unknown(value.to_string())),
12122                        }
12123                    }
12124                }
12125                deserializer.deserialize_identifier(Visitor)
12126            }
12127        }
12128        struct Visitor;
12129        impl<'de> serde::de::Visitor<'de> for Visitor {
12130            type Value = UpdateNetworkPeeringRequest;
12131            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12132                formatter.write_str("struct UpdateNetworkPeeringRequest")
12133            }
12134            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
12135            where
12136                A: serde::de::MapAccess<'de>,
12137            {
12138                #[allow(unused_imports)]
12139                use serde::de::Error;
12140                use std::option::Option::Some;
12141                let mut fields = std::collections::HashSet::new();
12142                let mut result = Self::Value::new();
12143                while let Some(tag) = map.next_key::<__FieldTag>()? {
12144                    #[allow(clippy::match_single_binding)]
12145                    match tag {
12146                        __FieldTag::__network_peering => {
12147                            if !fields.insert(__FieldTag::__network_peering) {
12148                                return std::result::Result::Err(A::Error::duplicate_field(
12149                                    "multiple values for network_peering",
12150                                ));
12151                            }
12152                            result.network_peering = map
12153                                .next_value::<std::option::Option<crate::model::NetworkPeering>>(
12154                                )?;
12155                        }
12156                        __FieldTag::__update_mask => {
12157                            if !fields.insert(__FieldTag::__update_mask) {
12158                                return std::result::Result::Err(A::Error::duplicate_field(
12159                                    "multiple values for update_mask",
12160                                ));
12161                            }
12162                            result.update_mask =
12163                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
12164                        }
12165                        __FieldTag::__request_id => {
12166                            if !fields.insert(__FieldTag::__request_id) {
12167                                return std::result::Result::Err(A::Error::duplicate_field(
12168                                    "multiple values for request_id",
12169                                ));
12170                            }
12171                            result.request_id = map
12172                                .next_value::<std::option::Option<std::string::String>>()?
12173                                .unwrap_or_default();
12174                        }
12175                        __FieldTag::Unknown(key) => {
12176                            let value = map.next_value::<serde_json::Value>()?;
12177                            result._unknown_fields.insert(key, value);
12178                        }
12179                    }
12180                }
12181                std::result::Result::Ok(result)
12182            }
12183        }
12184        deserializer.deserialize_any(Visitor)
12185    }
12186}
12187
12188#[doc(hidden)]
12189impl serde::ser::Serialize for UpdateNetworkPeeringRequest {
12190    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12191    where
12192        S: serde::ser::Serializer,
12193    {
12194        use serde::ser::SerializeMap;
12195        #[allow(unused_imports)]
12196        use std::option::Option::Some;
12197        let mut state = serializer.serialize_map(std::option::Option::None)?;
12198        if self.network_peering.is_some() {
12199            state.serialize_entry("networkPeering", &self.network_peering)?;
12200        }
12201        if self.update_mask.is_some() {
12202            state.serialize_entry("updateMask", &self.update_mask)?;
12203        }
12204        if !self.request_id.is_empty() {
12205            state.serialize_entry("requestId", &self.request_id)?;
12206        }
12207        if !self._unknown_fields.is_empty() {
12208            for (key, value) in self._unknown_fields.iter() {
12209                state.serialize_entry(key, &value)?;
12210            }
12211        }
12212        state.end()
12213    }
12214}
12215
12216/// Response message for
12217/// [VmwareEngine.ListNetworkPeerings][google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings]
12218///
12219/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings]: crate::client::VmwareEngine::list_network_peerings
12220#[derive(Clone, Debug, Default, PartialEq)]
12221#[non_exhaustive]
12222pub struct ListNetworkPeeringsResponse {
12223    /// A list of network peerings.
12224    pub network_peerings: std::vec::Vec<crate::model::NetworkPeering>,
12225
12226    /// A token, which can be sent as `page_token` to retrieve the next page.
12227    /// If this field is omitted, there are no subsequent pages.
12228    pub next_page_token: std::string::String,
12229
12230    /// Unreachable resources.
12231    pub unreachable: std::vec::Vec<std::string::String>,
12232
12233    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12234}
12235
12236impl ListNetworkPeeringsResponse {
12237    pub fn new() -> Self {
12238        std::default::Default::default()
12239    }
12240
12241    /// Sets the value of [network_peerings][crate::model::ListNetworkPeeringsResponse::network_peerings].
12242    pub fn set_network_peerings<T, V>(mut self, v: T) -> Self
12243    where
12244        T: std::iter::IntoIterator<Item = V>,
12245        V: std::convert::Into<crate::model::NetworkPeering>,
12246    {
12247        use std::iter::Iterator;
12248        self.network_peerings = v.into_iter().map(|i| i.into()).collect();
12249        self
12250    }
12251
12252    /// Sets the value of [next_page_token][crate::model::ListNetworkPeeringsResponse::next_page_token].
12253    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12254        self.next_page_token = v.into();
12255        self
12256    }
12257
12258    /// Sets the value of [unreachable][crate::model::ListNetworkPeeringsResponse::unreachable].
12259    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
12260    where
12261        T: std::iter::IntoIterator<Item = V>,
12262        V: std::convert::Into<std::string::String>,
12263    {
12264        use std::iter::Iterator;
12265        self.unreachable = v.into_iter().map(|i| i.into()).collect();
12266        self
12267    }
12268}
12269
12270impl wkt::message::Message for ListNetworkPeeringsResponse {
12271    fn typename() -> &'static str {
12272        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNetworkPeeringsResponse"
12273    }
12274}
12275
12276#[doc(hidden)]
12277impl gax::paginator::internal::PageableResponse for ListNetworkPeeringsResponse {
12278    type PageItem = crate::model::NetworkPeering;
12279
12280    fn items(self) -> std::vec::Vec<Self::PageItem> {
12281        self.network_peerings
12282    }
12283
12284    fn next_page_token(&self) -> std::string::String {
12285        use std::clone::Clone;
12286        self.next_page_token.clone()
12287    }
12288}
12289
12290#[doc(hidden)]
12291impl<'de> serde::de::Deserialize<'de> for ListNetworkPeeringsResponse {
12292    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12293    where
12294        D: serde::Deserializer<'de>,
12295    {
12296        #[allow(non_camel_case_types)]
12297        #[doc(hidden)]
12298        #[derive(PartialEq, Eq, Hash)]
12299        enum __FieldTag {
12300            __network_peerings,
12301            __next_page_token,
12302            __unreachable,
12303            Unknown(std::string::String),
12304        }
12305        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
12306            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12307            where
12308                D: serde::Deserializer<'de>,
12309            {
12310                struct Visitor;
12311                impl<'de> serde::de::Visitor<'de> for Visitor {
12312                    type Value = __FieldTag;
12313                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12314                        formatter.write_str("a field name for ListNetworkPeeringsResponse")
12315                    }
12316                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
12317                    where
12318                        E: serde::de::Error,
12319                    {
12320                        use std::result::Result::Ok;
12321                        use std::string::ToString;
12322                        match value {
12323                            "networkPeerings" => Ok(__FieldTag::__network_peerings),
12324                            "network_peerings" => Ok(__FieldTag::__network_peerings),
12325                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
12326                            "next_page_token" => Ok(__FieldTag::__next_page_token),
12327                            "unreachable" => Ok(__FieldTag::__unreachable),
12328                            _ => Ok(__FieldTag::Unknown(value.to_string())),
12329                        }
12330                    }
12331                }
12332                deserializer.deserialize_identifier(Visitor)
12333            }
12334        }
12335        struct Visitor;
12336        impl<'de> serde::de::Visitor<'de> for Visitor {
12337            type Value = ListNetworkPeeringsResponse;
12338            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12339                formatter.write_str("struct ListNetworkPeeringsResponse")
12340            }
12341            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
12342            where
12343                A: serde::de::MapAccess<'de>,
12344            {
12345                #[allow(unused_imports)]
12346                use serde::de::Error;
12347                use std::option::Option::Some;
12348                let mut fields = std::collections::HashSet::new();
12349                let mut result = Self::Value::new();
12350                while let Some(tag) = map.next_key::<__FieldTag>()? {
12351                    #[allow(clippy::match_single_binding)]
12352                    match tag {
12353                        __FieldTag::__network_peerings => {
12354                            if !fields.insert(__FieldTag::__network_peerings) {
12355                                return std::result::Result::Err(A::Error::duplicate_field(
12356                                    "multiple values for network_peerings",
12357                                ));
12358                            }
12359                            result.network_peerings =
12360                                map.next_value::<std::option::Option<
12361                                    std::vec::Vec<crate::model::NetworkPeering>,
12362                                >>()?
12363                                .unwrap_or_default();
12364                        }
12365                        __FieldTag::__next_page_token => {
12366                            if !fields.insert(__FieldTag::__next_page_token) {
12367                                return std::result::Result::Err(A::Error::duplicate_field(
12368                                    "multiple values for next_page_token",
12369                                ));
12370                            }
12371                            result.next_page_token = map
12372                                .next_value::<std::option::Option<std::string::String>>()?
12373                                .unwrap_or_default();
12374                        }
12375                        __FieldTag::__unreachable => {
12376                            if !fields.insert(__FieldTag::__unreachable) {
12377                                return std::result::Result::Err(A::Error::duplicate_field(
12378                                    "multiple values for unreachable",
12379                                ));
12380                            }
12381                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
12382                        }
12383                        __FieldTag::Unknown(key) => {
12384                            let value = map.next_value::<serde_json::Value>()?;
12385                            result._unknown_fields.insert(key, value);
12386                        }
12387                    }
12388                }
12389                std::result::Result::Ok(result)
12390            }
12391        }
12392        deserializer.deserialize_any(Visitor)
12393    }
12394}
12395
12396#[doc(hidden)]
12397impl serde::ser::Serialize for ListNetworkPeeringsResponse {
12398    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12399    where
12400        S: serde::ser::Serializer,
12401    {
12402        use serde::ser::SerializeMap;
12403        #[allow(unused_imports)]
12404        use std::option::Option::Some;
12405        let mut state = serializer.serialize_map(std::option::Option::None)?;
12406        if !self.network_peerings.is_empty() {
12407            state.serialize_entry("networkPeerings", &self.network_peerings)?;
12408        }
12409        if !self.next_page_token.is_empty() {
12410            state.serialize_entry("nextPageToken", &self.next_page_token)?;
12411        }
12412        if !self.unreachable.is_empty() {
12413            state.serialize_entry("unreachable", &self.unreachable)?;
12414        }
12415        if !self._unknown_fields.is_empty() {
12416            for (key, value) in self._unknown_fields.iter() {
12417                state.serialize_entry(key, &value)?;
12418            }
12419        }
12420        state.end()
12421    }
12422}
12423
12424/// Request message for
12425/// [VmwareEngine.ListPeeringRoutes][google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes]
12426///
12427/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes]: crate::client::VmwareEngine::list_peering_routes
12428#[derive(Clone, Debug, Default, PartialEq)]
12429#[non_exhaustive]
12430pub struct ListPeeringRoutesRequest {
12431    /// Required. The resource name of the network peering to retrieve peering
12432    /// routes from. Resource names are schemeless URIs that follow the conventions
12433    /// in <https://cloud.google.com/apis/design/resource_names>. For example:
12434    /// `projects/my-project/locations/global/networkPeerings/my-peering`
12435    pub parent: std::string::String,
12436
12437    /// The maximum number of peering routes to return in one page.
12438    /// The service may return fewer than this value.
12439    /// The maximum value is coerced to 1000.
12440    /// The default value of this field is 500.
12441    pub page_size: i32,
12442
12443    /// A page token, received from a previous `ListPeeringRoutes` call.
12444    /// Provide this to retrieve the subsequent page.
12445    /// When paginating, all other parameters provided to `ListPeeringRoutes` must
12446    /// match the call that provided the page token.
12447    pub page_token: std::string::String,
12448
12449    /// A filter expression that matches resources returned in the response.
12450    /// Currently, only filtering on the `direction` field is supported. To return
12451    /// routes imported from the peer network, provide "direction=INCOMING". To
12452    /// return routes exported from the VMware Engine network, provide
12453    /// "direction=OUTGOING". Other filter expressions return an error.
12454    pub filter: std::string::String,
12455
12456    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12457}
12458
12459impl ListPeeringRoutesRequest {
12460    pub fn new() -> Self {
12461        std::default::Default::default()
12462    }
12463
12464    /// Sets the value of [parent][crate::model::ListPeeringRoutesRequest::parent].
12465    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12466        self.parent = v.into();
12467        self
12468    }
12469
12470    /// Sets the value of [page_size][crate::model::ListPeeringRoutesRequest::page_size].
12471    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
12472        self.page_size = v.into();
12473        self
12474    }
12475
12476    /// Sets the value of [page_token][crate::model::ListPeeringRoutesRequest::page_token].
12477    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12478        self.page_token = v.into();
12479        self
12480    }
12481
12482    /// Sets the value of [filter][crate::model::ListPeeringRoutesRequest::filter].
12483    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12484        self.filter = v.into();
12485        self
12486    }
12487}
12488
12489impl wkt::message::Message for ListPeeringRoutesRequest {
12490    fn typename() -> &'static str {
12491        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPeeringRoutesRequest"
12492    }
12493}
12494
12495#[doc(hidden)]
12496impl<'de> serde::de::Deserialize<'de> for ListPeeringRoutesRequest {
12497    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12498    where
12499        D: serde::Deserializer<'de>,
12500    {
12501        #[allow(non_camel_case_types)]
12502        #[doc(hidden)]
12503        #[derive(PartialEq, Eq, Hash)]
12504        enum __FieldTag {
12505            __parent,
12506            __page_size,
12507            __page_token,
12508            __filter,
12509            Unknown(std::string::String),
12510        }
12511        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
12512            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12513            where
12514                D: serde::Deserializer<'de>,
12515            {
12516                struct Visitor;
12517                impl<'de> serde::de::Visitor<'de> for Visitor {
12518                    type Value = __FieldTag;
12519                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12520                        formatter.write_str("a field name for ListPeeringRoutesRequest")
12521                    }
12522                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
12523                    where
12524                        E: serde::de::Error,
12525                    {
12526                        use std::result::Result::Ok;
12527                        use std::string::ToString;
12528                        match value {
12529                            "parent" => Ok(__FieldTag::__parent),
12530                            "pageSize" => Ok(__FieldTag::__page_size),
12531                            "page_size" => Ok(__FieldTag::__page_size),
12532                            "pageToken" => Ok(__FieldTag::__page_token),
12533                            "page_token" => Ok(__FieldTag::__page_token),
12534                            "filter" => Ok(__FieldTag::__filter),
12535                            _ => Ok(__FieldTag::Unknown(value.to_string())),
12536                        }
12537                    }
12538                }
12539                deserializer.deserialize_identifier(Visitor)
12540            }
12541        }
12542        struct Visitor;
12543        impl<'de> serde::de::Visitor<'de> for Visitor {
12544            type Value = ListPeeringRoutesRequest;
12545            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12546                formatter.write_str("struct ListPeeringRoutesRequest")
12547            }
12548            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
12549            where
12550                A: serde::de::MapAccess<'de>,
12551            {
12552                #[allow(unused_imports)]
12553                use serde::de::Error;
12554                use std::option::Option::Some;
12555                let mut fields = std::collections::HashSet::new();
12556                let mut result = Self::Value::new();
12557                while let Some(tag) = map.next_key::<__FieldTag>()? {
12558                    #[allow(clippy::match_single_binding)]
12559                    match tag {
12560                        __FieldTag::__parent => {
12561                            if !fields.insert(__FieldTag::__parent) {
12562                                return std::result::Result::Err(A::Error::duplicate_field(
12563                                    "multiple values for parent",
12564                                ));
12565                            }
12566                            result.parent = map
12567                                .next_value::<std::option::Option<std::string::String>>()?
12568                                .unwrap_or_default();
12569                        }
12570                        __FieldTag::__page_size => {
12571                            if !fields.insert(__FieldTag::__page_size) {
12572                                return std::result::Result::Err(A::Error::duplicate_field(
12573                                    "multiple values for page_size",
12574                                ));
12575                            }
12576                            struct __With(std::option::Option<i32>);
12577                            impl<'de> serde::de::Deserialize<'de> for __With {
12578                                fn deserialize<D>(
12579                                    deserializer: D,
12580                                ) -> std::result::Result<Self, D::Error>
12581                                where
12582                                    D: serde::de::Deserializer<'de>,
12583                                {
12584                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
12585                                }
12586                            }
12587                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
12588                        }
12589                        __FieldTag::__page_token => {
12590                            if !fields.insert(__FieldTag::__page_token) {
12591                                return std::result::Result::Err(A::Error::duplicate_field(
12592                                    "multiple values for page_token",
12593                                ));
12594                            }
12595                            result.page_token = map
12596                                .next_value::<std::option::Option<std::string::String>>()?
12597                                .unwrap_or_default();
12598                        }
12599                        __FieldTag::__filter => {
12600                            if !fields.insert(__FieldTag::__filter) {
12601                                return std::result::Result::Err(A::Error::duplicate_field(
12602                                    "multiple values for filter",
12603                                ));
12604                            }
12605                            result.filter = map
12606                                .next_value::<std::option::Option<std::string::String>>()?
12607                                .unwrap_or_default();
12608                        }
12609                        __FieldTag::Unknown(key) => {
12610                            let value = map.next_value::<serde_json::Value>()?;
12611                            result._unknown_fields.insert(key, value);
12612                        }
12613                    }
12614                }
12615                std::result::Result::Ok(result)
12616            }
12617        }
12618        deserializer.deserialize_any(Visitor)
12619    }
12620}
12621
12622#[doc(hidden)]
12623impl serde::ser::Serialize for ListPeeringRoutesRequest {
12624    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12625    where
12626        S: serde::ser::Serializer,
12627    {
12628        use serde::ser::SerializeMap;
12629        #[allow(unused_imports)]
12630        use std::option::Option::Some;
12631        let mut state = serializer.serialize_map(std::option::Option::None)?;
12632        if !self.parent.is_empty() {
12633            state.serialize_entry("parent", &self.parent)?;
12634        }
12635        if !wkt::internal::is_default(&self.page_size) {
12636            struct __With<'a>(&'a i32);
12637            impl<'a> serde::ser::Serialize for __With<'a> {
12638                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12639                where
12640                    S: serde::ser::Serializer,
12641                {
12642                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
12643                }
12644            }
12645            state.serialize_entry("pageSize", &__With(&self.page_size))?;
12646        }
12647        if !self.page_token.is_empty() {
12648            state.serialize_entry("pageToken", &self.page_token)?;
12649        }
12650        if !self.filter.is_empty() {
12651            state.serialize_entry("filter", &self.filter)?;
12652        }
12653        if !self._unknown_fields.is_empty() {
12654            for (key, value) in self._unknown_fields.iter() {
12655                state.serialize_entry(key, &value)?;
12656            }
12657        }
12658        state.end()
12659    }
12660}
12661
12662/// Response message for
12663/// [VmwareEngine.ListPeeringRoutes][google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes]
12664///
12665/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes]: crate::client::VmwareEngine::list_peering_routes
12666#[derive(Clone, Debug, Default, PartialEq)]
12667#[non_exhaustive]
12668pub struct ListPeeringRoutesResponse {
12669    /// A list of peering routes.
12670    pub peering_routes: std::vec::Vec<crate::model::PeeringRoute>,
12671
12672    /// A token, which can be sent as `page_token` to retrieve the next page.
12673    /// If this field is omitted, there are no subsequent pages.
12674    pub next_page_token: std::string::String,
12675
12676    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12677}
12678
12679impl ListPeeringRoutesResponse {
12680    pub fn new() -> Self {
12681        std::default::Default::default()
12682    }
12683
12684    /// Sets the value of [peering_routes][crate::model::ListPeeringRoutesResponse::peering_routes].
12685    pub fn set_peering_routes<T, V>(mut self, v: T) -> Self
12686    where
12687        T: std::iter::IntoIterator<Item = V>,
12688        V: std::convert::Into<crate::model::PeeringRoute>,
12689    {
12690        use std::iter::Iterator;
12691        self.peering_routes = v.into_iter().map(|i| i.into()).collect();
12692        self
12693    }
12694
12695    /// Sets the value of [next_page_token][crate::model::ListPeeringRoutesResponse::next_page_token].
12696    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12697        self.next_page_token = v.into();
12698        self
12699    }
12700}
12701
12702impl wkt::message::Message for ListPeeringRoutesResponse {
12703    fn typename() -> &'static str {
12704        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPeeringRoutesResponse"
12705    }
12706}
12707
12708#[doc(hidden)]
12709impl gax::paginator::internal::PageableResponse for ListPeeringRoutesResponse {
12710    type PageItem = crate::model::PeeringRoute;
12711
12712    fn items(self) -> std::vec::Vec<Self::PageItem> {
12713        self.peering_routes
12714    }
12715
12716    fn next_page_token(&self) -> std::string::String {
12717        use std::clone::Clone;
12718        self.next_page_token.clone()
12719    }
12720}
12721
12722#[doc(hidden)]
12723impl<'de> serde::de::Deserialize<'de> for ListPeeringRoutesResponse {
12724    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12725    where
12726        D: serde::Deserializer<'de>,
12727    {
12728        #[allow(non_camel_case_types)]
12729        #[doc(hidden)]
12730        #[derive(PartialEq, Eq, Hash)]
12731        enum __FieldTag {
12732            __peering_routes,
12733            __next_page_token,
12734            Unknown(std::string::String),
12735        }
12736        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
12737            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12738            where
12739                D: serde::Deserializer<'de>,
12740            {
12741                struct Visitor;
12742                impl<'de> serde::de::Visitor<'de> for Visitor {
12743                    type Value = __FieldTag;
12744                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12745                        formatter.write_str("a field name for ListPeeringRoutesResponse")
12746                    }
12747                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
12748                    where
12749                        E: serde::de::Error,
12750                    {
12751                        use std::result::Result::Ok;
12752                        use std::string::ToString;
12753                        match value {
12754                            "peeringRoutes" => Ok(__FieldTag::__peering_routes),
12755                            "peering_routes" => Ok(__FieldTag::__peering_routes),
12756                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
12757                            "next_page_token" => Ok(__FieldTag::__next_page_token),
12758                            _ => Ok(__FieldTag::Unknown(value.to_string())),
12759                        }
12760                    }
12761                }
12762                deserializer.deserialize_identifier(Visitor)
12763            }
12764        }
12765        struct Visitor;
12766        impl<'de> serde::de::Visitor<'de> for Visitor {
12767            type Value = ListPeeringRoutesResponse;
12768            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12769                formatter.write_str("struct ListPeeringRoutesResponse")
12770            }
12771            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
12772            where
12773                A: serde::de::MapAccess<'de>,
12774            {
12775                #[allow(unused_imports)]
12776                use serde::de::Error;
12777                use std::option::Option::Some;
12778                let mut fields = std::collections::HashSet::new();
12779                let mut result = Self::Value::new();
12780                while let Some(tag) = map.next_key::<__FieldTag>()? {
12781                    #[allow(clippy::match_single_binding)]
12782                    match tag {
12783                        __FieldTag::__peering_routes => {
12784                            if !fields.insert(__FieldTag::__peering_routes) {
12785                                return std::result::Result::Err(A::Error::duplicate_field(
12786                                    "multiple values for peering_routes",
12787                                ));
12788                            }
12789                            result.peering_routes = map.next_value::<std::option::Option<std::vec::Vec<crate::model::PeeringRoute>>>()?.unwrap_or_default();
12790                        }
12791                        __FieldTag::__next_page_token => {
12792                            if !fields.insert(__FieldTag::__next_page_token) {
12793                                return std::result::Result::Err(A::Error::duplicate_field(
12794                                    "multiple values for next_page_token",
12795                                ));
12796                            }
12797                            result.next_page_token = map
12798                                .next_value::<std::option::Option<std::string::String>>()?
12799                                .unwrap_or_default();
12800                        }
12801                        __FieldTag::Unknown(key) => {
12802                            let value = map.next_value::<serde_json::Value>()?;
12803                            result._unknown_fields.insert(key, value);
12804                        }
12805                    }
12806                }
12807                std::result::Result::Ok(result)
12808            }
12809        }
12810        deserializer.deserialize_any(Visitor)
12811    }
12812}
12813
12814#[doc(hidden)]
12815impl serde::ser::Serialize for ListPeeringRoutesResponse {
12816    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12817    where
12818        S: serde::ser::Serializer,
12819    {
12820        use serde::ser::SerializeMap;
12821        #[allow(unused_imports)]
12822        use std::option::Option::Some;
12823        let mut state = serializer.serialize_map(std::option::Option::None)?;
12824        if !self.peering_routes.is_empty() {
12825            state.serialize_entry("peeringRoutes", &self.peering_routes)?;
12826        }
12827        if !self.next_page_token.is_empty() {
12828            state.serialize_entry("nextPageToken", &self.next_page_token)?;
12829        }
12830        if !self._unknown_fields.is_empty() {
12831            for (key, value) in self._unknown_fields.iter() {
12832                state.serialize_entry(key, &value)?;
12833            }
12834        }
12835        state.end()
12836    }
12837}
12838
12839/// Request message for
12840/// [VmwareEngine.ListNetworkPolicies][google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies]
12841///
12842/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies]: crate::client::VmwareEngine::list_network_policies
12843#[derive(Clone, Debug, Default, PartialEq)]
12844#[non_exhaustive]
12845pub struct ListNetworkPoliciesRequest {
12846    /// Required. The resource name of the location (region) to query for
12847    /// network policies. Resource names are schemeless URIs that follow the
12848    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
12849    /// example: `projects/my-project/locations/us-central1`
12850    pub parent: std::string::String,
12851
12852    /// The maximum number of network policies to return in one page.
12853    /// The service may return fewer than this value.
12854    /// The maximum value is coerced to 1000.
12855    /// The default value of this field is 500.
12856    pub page_size: i32,
12857
12858    /// A page token, received from a previous `ListNetworkPolicies` call.
12859    /// Provide this to retrieve the subsequent page.
12860    ///
12861    /// When paginating, all other parameters provided to
12862    /// `ListNetworkPolicies` must match the call that provided the page
12863    /// token.
12864    pub page_token: std::string::String,
12865
12866    /// A filter expression that matches resources returned in the response.
12867    /// The expression must specify the field name, a comparison
12868    /// operator, and the value that you want to use for filtering. The value
12869    /// must be a string, a number, or a boolean. The comparison operator
12870    /// must be `=`, `!=`, `>`, or `<`.
12871    ///
12872    /// For example, if you are filtering a list of network policies, you can
12873    /// exclude the ones named `example-policy` by specifying
12874    /// `name != "example-policy"`.
12875    ///
12876    /// To filter on multiple expressions, provide each separate expression within
12877    /// parentheses. For example:
12878    ///
12879    /// ```norust
12880    /// (name = "example-policy")
12881    /// (createTime > "2021-04-12T08:15:10.40Z")
12882    /// ```
12883    ///
12884    /// By default, each expression is an `AND` expression. However, you
12885    /// can include `AND` and `OR` expressions explicitly.
12886    /// For example:
12887    ///
12888    /// ```norust
12889    /// (name = "example-policy-1") AND
12890    /// (createTime > "2021-04-12T08:15:10.40Z") OR
12891    /// (name = "example-policy-2")
12892    /// ```
12893    pub filter: std::string::String,
12894
12895    /// Sorts list results by a certain order. By default, returned results
12896    /// are ordered by `name` in ascending order.
12897    /// You can also sort results in descending order based on the `name` value
12898    /// using `orderBy="name desc"`.
12899    /// Currently, only ordering by `name` is supported.
12900    pub order_by: std::string::String,
12901
12902    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12903}
12904
12905impl ListNetworkPoliciesRequest {
12906    pub fn new() -> Self {
12907        std::default::Default::default()
12908    }
12909
12910    /// Sets the value of [parent][crate::model::ListNetworkPoliciesRequest::parent].
12911    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12912        self.parent = v.into();
12913        self
12914    }
12915
12916    /// Sets the value of [page_size][crate::model::ListNetworkPoliciesRequest::page_size].
12917    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
12918        self.page_size = v.into();
12919        self
12920    }
12921
12922    /// Sets the value of [page_token][crate::model::ListNetworkPoliciesRequest::page_token].
12923    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12924        self.page_token = v.into();
12925        self
12926    }
12927
12928    /// Sets the value of [filter][crate::model::ListNetworkPoliciesRequest::filter].
12929    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12930        self.filter = v.into();
12931        self
12932    }
12933
12934    /// Sets the value of [order_by][crate::model::ListNetworkPoliciesRequest::order_by].
12935    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12936        self.order_by = v.into();
12937        self
12938    }
12939}
12940
12941impl wkt::message::Message for ListNetworkPoliciesRequest {
12942    fn typename() -> &'static str {
12943        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNetworkPoliciesRequest"
12944    }
12945}
12946
12947#[doc(hidden)]
12948impl<'de> serde::de::Deserialize<'de> for ListNetworkPoliciesRequest {
12949    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12950    where
12951        D: serde::Deserializer<'de>,
12952    {
12953        #[allow(non_camel_case_types)]
12954        #[doc(hidden)]
12955        #[derive(PartialEq, Eq, Hash)]
12956        enum __FieldTag {
12957            __parent,
12958            __page_size,
12959            __page_token,
12960            __filter,
12961            __order_by,
12962            Unknown(std::string::String),
12963        }
12964        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
12965            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12966            where
12967                D: serde::Deserializer<'de>,
12968            {
12969                struct Visitor;
12970                impl<'de> serde::de::Visitor<'de> for Visitor {
12971                    type Value = __FieldTag;
12972                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
12973                        formatter.write_str("a field name for ListNetworkPoliciesRequest")
12974                    }
12975                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
12976                    where
12977                        E: serde::de::Error,
12978                    {
12979                        use std::result::Result::Ok;
12980                        use std::string::ToString;
12981                        match value {
12982                            "parent" => Ok(__FieldTag::__parent),
12983                            "pageSize" => Ok(__FieldTag::__page_size),
12984                            "page_size" => Ok(__FieldTag::__page_size),
12985                            "pageToken" => Ok(__FieldTag::__page_token),
12986                            "page_token" => Ok(__FieldTag::__page_token),
12987                            "filter" => Ok(__FieldTag::__filter),
12988                            "orderBy" => Ok(__FieldTag::__order_by),
12989                            "order_by" => Ok(__FieldTag::__order_by),
12990                            _ => Ok(__FieldTag::Unknown(value.to_string())),
12991                        }
12992                    }
12993                }
12994                deserializer.deserialize_identifier(Visitor)
12995            }
12996        }
12997        struct Visitor;
12998        impl<'de> serde::de::Visitor<'de> for Visitor {
12999            type Value = ListNetworkPoliciesRequest;
13000            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13001                formatter.write_str("struct ListNetworkPoliciesRequest")
13002            }
13003            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
13004            where
13005                A: serde::de::MapAccess<'de>,
13006            {
13007                #[allow(unused_imports)]
13008                use serde::de::Error;
13009                use std::option::Option::Some;
13010                let mut fields = std::collections::HashSet::new();
13011                let mut result = Self::Value::new();
13012                while let Some(tag) = map.next_key::<__FieldTag>()? {
13013                    #[allow(clippy::match_single_binding)]
13014                    match tag {
13015                        __FieldTag::__parent => {
13016                            if !fields.insert(__FieldTag::__parent) {
13017                                return std::result::Result::Err(A::Error::duplicate_field(
13018                                    "multiple values for parent",
13019                                ));
13020                            }
13021                            result.parent = map
13022                                .next_value::<std::option::Option<std::string::String>>()?
13023                                .unwrap_or_default();
13024                        }
13025                        __FieldTag::__page_size => {
13026                            if !fields.insert(__FieldTag::__page_size) {
13027                                return std::result::Result::Err(A::Error::duplicate_field(
13028                                    "multiple values for page_size",
13029                                ));
13030                            }
13031                            struct __With(std::option::Option<i32>);
13032                            impl<'de> serde::de::Deserialize<'de> for __With {
13033                                fn deserialize<D>(
13034                                    deserializer: D,
13035                                ) -> std::result::Result<Self, D::Error>
13036                                where
13037                                    D: serde::de::Deserializer<'de>,
13038                                {
13039                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
13040                                }
13041                            }
13042                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
13043                        }
13044                        __FieldTag::__page_token => {
13045                            if !fields.insert(__FieldTag::__page_token) {
13046                                return std::result::Result::Err(A::Error::duplicate_field(
13047                                    "multiple values for page_token",
13048                                ));
13049                            }
13050                            result.page_token = map
13051                                .next_value::<std::option::Option<std::string::String>>()?
13052                                .unwrap_or_default();
13053                        }
13054                        __FieldTag::__filter => {
13055                            if !fields.insert(__FieldTag::__filter) {
13056                                return std::result::Result::Err(A::Error::duplicate_field(
13057                                    "multiple values for filter",
13058                                ));
13059                            }
13060                            result.filter = map
13061                                .next_value::<std::option::Option<std::string::String>>()?
13062                                .unwrap_or_default();
13063                        }
13064                        __FieldTag::__order_by => {
13065                            if !fields.insert(__FieldTag::__order_by) {
13066                                return std::result::Result::Err(A::Error::duplicate_field(
13067                                    "multiple values for order_by",
13068                                ));
13069                            }
13070                            result.order_by = map
13071                                .next_value::<std::option::Option<std::string::String>>()?
13072                                .unwrap_or_default();
13073                        }
13074                        __FieldTag::Unknown(key) => {
13075                            let value = map.next_value::<serde_json::Value>()?;
13076                            result._unknown_fields.insert(key, value);
13077                        }
13078                    }
13079                }
13080                std::result::Result::Ok(result)
13081            }
13082        }
13083        deserializer.deserialize_any(Visitor)
13084    }
13085}
13086
13087#[doc(hidden)]
13088impl serde::ser::Serialize for ListNetworkPoliciesRequest {
13089    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13090    where
13091        S: serde::ser::Serializer,
13092    {
13093        use serde::ser::SerializeMap;
13094        #[allow(unused_imports)]
13095        use std::option::Option::Some;
13096        let mut state = serializer.serialize_map(std::option::Option::None)?;
13097        if !self.parent.is_empty() {
13098            state.serialize_entry("parent", &self.parent)?;
13099        }
13100        if !wkt::internal::is_default(&self.page_size) {
13101            struct __With<'a>(&'a i32);
13102            impl<'a> serde::ser::Serialize for __With<'a> {
13103                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13104                where
13105                    S: serde::ser::Serializer,
13106                {
13107                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
13108                }
13109            }
13110            state.serialize_entry("pageSize", &__With(&self.page_size))?;
13111        }
13112        if !self.page_token.is_empty() {
13113            state.serialize_entry("pageToken", &self.page_token)?;
13114        }
13115        if !self.filter.is_empty() {
13116            state.serialize_entry("filter", &self.filter)?;
13117        }
13118        if !self.order_by.is_empty() {
13119            state.serialize_entry("orderBy", &self.order_by)?;
13120        }
13121        if !self._unknown_fields.is_empty() {
13122            for (key, value) in self._unknown_fields.iter() {
13123                state.serialize_entry(key, &value)?;
13124            }
13125        }
13126        state.end()
13127    }
13128}
13129
13130/// Response message for
13131/// [VmwareEngine.ListNetworkPolicies][google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies]
13132///
13133/// [google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies]: crate::client::VmwareEngine::list_network_policies
13134#[derive(Clone, Debug, Default, PartialEq)]
13135#[non_exhaustive]
13136pub struct ListNetworkPoliciesResponse {
13137    /// A list of network policies.
13138    pub network_policies: std::vec::Vec<crate::model::NetworkPolicy>,
13139
13140    /// A token, which can be send as `page_token` to retrieve the next page.
13141    /// If this field is omitted, there are no subsequent pages.
13142    pub next_page_token: std::string::String,
13143
13144    /// Locations that could not be reached when making an aggregated query using
13145    /// wildcards.
13146    pub unreachable: std::vec::Vec<std::string::String>,
13147
13148    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13149}
13150
13151impl ListNetworkPoliciesResponse {
13152    pub fn new() -> Self {
13153        std::default::Default::default()
13154    }
13155
13156    /// Sets the value of [network_policies][crate::model::ListNetworkPoliciesResponse::network_policies].
13157    pub fn set_network_policies<T, V>(mut self, v: T) -> Self
13158    where
13159        T: std::iter::IntoIterator<Item = V>,
13160        V: std::convert::Into<crate::model::NetworkPolicy>,
13161    {
13162        use std::iter::Iterator;
13163        self.network_policies = v.into_iter().map(|i| i.into()).collect();
13164        self
13165    }
13166
13167    /// Sets the value of [next_page_token][crate::model::ListNetworkPoliciesResponse::next_page_token].
13168    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13169        self.next_page_token = v.into();
13170        self
13171    }
13172
13173    /// Sets the value of [unreachable][crate::model::ListNetworkPoliciesResponse::unreachable].
13174    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
13175    where
13176        T: std::iter::IntoIterator<Item = V>,
13177        V: std::convert::Into<std::string::String>,
13178    {
13179        use std::iter::Iterator;
13180        self.unreachable = v.into_iter().map(|i| i.into()).collect();
13181        self
13182    }
13183}
13184
13185impl wkt::message::Message for ListNetworkPoliciesResponse {
13186    fn typename() -> &'static str {
13187        "type.googleapis.com/google.cloud.vmwareengine.v1.ListNetworkPoliciesResponse"
13188    }
13189}
13190
13191#[doc(hidden)]
13192impl gax::paginator::internal::PageableResponse for ListNetworkPoliciesResponse {
13193    type PageItem = crate::model::NetworkPolicy;
13194
13195    fn items(self) -> std::vec::Vec<Self::PageItem> {
13196        self.network_policies
13197    }
13198
13199    fn next_page_token(&self) -> std::string::String {
13200        use std::clone::Clone;
13201        self.next_page_token.clone()
13202    }
13203}
13204
13205#[doc(hidden)]
13206impl<'de> serde::de::Deserialize<'de> for ListNetworkPoliciesResponse {
13207    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13208    where
13209        D: serde::Deserializer<'de>,
13210    {
13211        #[allow(non_camel_case_types)]
13212        #[doc(hidden)]
13213        #[derive(PartialEq, Eq, Hash)]
13214        enum __FieldTag {
13215            __network_policies,
13216            __next_page_token,
13217            __unreachable,
13218            Unknown(std::string::String),
13219        }
13220        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
13221            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13222            where
13223                D: serde::Deserializer<'de>,
13224            {
13225                struct Visitor;
13226                impl<'de> serde::de::Visitor<'de> for Visitor {
13227                    type Value = __FieldTag;
13228                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13229                        formatter.write_str("a field name for ListNetworkPoliciesResponse")
13230                    }
13231                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
13232                    where
13233                        E: serde::de::Error,
13234                    {
13235                        use std::result::Result::Ok;
13236                        use std::string::ToString;
13237                        match value {
13238                            "networkPolicies" => Ok(__FieldTag::__network_policies),
13239                            "network_policies" => Ok(__FieldTag::__network_policies),
13240                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
13241                            "next_page_token" => Ok(__FieldTag::__next_page_token),
13242                            "unreachable" => Ok(__FieldTag::__unreachable),
13243                            _ => Ok(__FieldTag::Unknown(value.to_string())),
13244                        }
13245                    }
13246                }
13247                deserializer.deserialize_identifier(Visitor)
13248            }
13249        }
13250        struct Visitor;
13251        impl<'de> serde::de::Visitor<'de> for Visitor {
13252            type Value = ListNetworkPoliciesResponse;
13253            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13254                formatter.write_str("struct ListNetworkPoliciesResponse")
13255            }
13256            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
13257            where
13258                A: serde::de::MapAccess<'de>,
13259            {
13260                #[allow(unused_imports)]
13261                use serde::de::Error;
13262                use std::option::Option::Some;
13263                let mut fields = std::collections::HashSet::new();
13264                let mut result = Self::Value::new();
13265                while let Some(tag) = map.next_key::<__FieldTag>()? {
13266                    #[allow(clippy::match_single_binding)]
13267                    match tag {
13268                        __FieldTag::__network_policies => {
13269                            if !fields.insert(__FieldTag::__network_policies) {
13270                                return std::result::Result::Err(A::Error::duplicate_field(
13271                                    "multiple values for network_policies",
13272                                ));
13273                            }
13274                            result.network_policies = map.next_value::<std::option::Option<std::vec::Vec<crate::model::NetworkPolicy>>>()?.unwrap_or_default();
13275                        }
13276                        __FieldTag::__next_page_token => {
13277                            if !fields.insert(__FieldTag::__next_page_token) {
13278                                return std::result::Result::Err(A::Error::duplicate_field(
13279                                    "multiple values for next_page_token",
13280                                ));
13281                            }
13282                            result.next_page_token = map
13283                                .next_value::<std::option::Option<std::string::String>>()?
13284                                .unwrap_or_default();
13285                        }
13286                        __FieldTag::__unreachable => {
13287                            if !fields.insert(__FieldTag::__unreachable) {
13288                                return std::result::Result::Err(A::Error::duplicate_field(
13289                                    "multiple values for unreachable",
13290                                ));
13291                            }
13292                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
13293                        }
13294                        __FieldTag::Unknown(key) => {
13295                            let value = map.next_value::<serde_json::Value>()?;
13296                            result._unknown_fields.insert(key, value);
13297                        }
13298                    }
13299                }
13300                std::result::Result::Ok(result)
13301            }
13302        }
13303        deserializer.deserialize_any(Visitor)
13304    }
13305}
13306
13307#[doc(hidden)]
13308impl serde::ser::Serialize for ListNetworkPoliciesResponse {
13309    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13310    where
13311        S: serde::ser::Serializer,
13312    {
13313        use serde::ser::SerializeMap;
13314        #[allow(unused_imports)]
13315        use std::option::Option::Some;
13316        let mut state = serializer.serialize_map(std::option::Option::None)?;
13317        if !self.network_policies.is_empty() {
13318            state.serialize_entry("networkPolicies", &self.network_policies)?;
13319        }
13320        if !self.next_page_token.is_empty() {
13321            state.serialize_entry("nextPageToken", &self.next_page_token)?;
13322        }
13323        if !self.unreachable.is_empty() {
13324            state.serialize_entry("unreachable", &self.unreachable)?;
13325        }
13326        if !self._unknown_fields.is_empty() {
13327            for (key, value) in self._unknown_fields.iter() {
13328                state.serialize_entry(key, &value)?;
13329            }
13330        }
13331        state.end()
13332    }
13333}
13334
13335/// Request message for
13336/// [VmwareEngine.GetNetworkPolicy][google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPolicy]
13337///
13338/// [google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPolicy]: crate::client::VmwareEngine::get_network_policy
13339#[derive(Clone, Debug, Default, PartialEq)]
13340#[non_exhaustive]
13341pub struct GetNetworkPolicyRequest {
13342    /// Required. The resource name of the network policy to retrieve.
13343    /// Resource names are schemeless URIs that follow the conventions in
13344    /// <https://cloud.google.com/apis/design/resource_names>.
13345    /// For example:
13346    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
13347    pub name: std::string::String,
13348
13349    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13350}
13351
13352impl GetNetworkPolicyRequest {
13353    pub fn new() -> Self {
13354        std::default::Default::default()
13355    }
13356
13357    /// Sets the value of [name][crate::model::GetNetworkPolicyRequest::name].
13358    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13359        self.name = v.into();
13360        self
13361    }
13362}
13363
13364impl wkt::message::Message for GetNetworkPolicyRequest {
13365    fn typename() -> &'static str {
13366        "type.googleapis.com/google.cloud.vmwareengine.v1.GetNetworkPolicyRequest"
13367    }
13368}
13369
13370#[doc(hidden)]
13371impl<'de> serde::de::Deserialize<'de> for GetNetworkPolicyRequest {
13372    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13373    where
13374        D: serde::Deserializer<'de>,
13375    {
13376        #[allow(non_camel_case_types)]
13377        #[doc(hidden)]
13378        #[derive(PartialEq, Eq, Hash)]
13379        enum __FieldTag {
13380            __name,
13381            Unknown(std::string::String),
13382        }
13383        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
13384            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13385            where
13386                D: serde::Deserializer<'de>,
13387            {
13388                struct Visitor;
13389                impl<'de> serde::de::Visitor<'de> for Visitor {
13390                    type Value = __FieldTag;
13391                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13392                        formatter.write_str("a field name for GetNetworkPolicyRequest")
13393                    }
13394                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
13395                    where
13396                        E: serde::de::Error,
13397                    {
13398                        use std::result::Result::Ok;
13399                        use std::string::ToString;
13400                        match value {
13401                            "name" => Ok(__FieldTag::__name),
13402                            _ => Ok(__FieldTag::Unknown(value.to_string())),
13403                        }
13404                    }
13405                }
13406                deserializer.deserialize_identifier(Visitor)
13407            }
13408        }
13409        struct Visitor;
13410        impl<'de> serde::de::Visitor<'de> for Visitor {
13411            type Value = GetNetworkPolicyRequest;
13412            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13413                formatter.write_str("struct GetNetworkPolicyRequest")
13414            }
13415            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
13416            where
13417                A: serde::de::MapAccess<'de>,
13418            {
13419                #[allow(unused_imports)]
13420                use serde::de::Error;
13421                use std::option::Option::Some;
13422                let mut fields = std::collections::HashSet::new();
13423                let mut result = Self::Value::new();
13424                while let Some(tag) = map.next_key::<__FieldTag>()? {
13425                    #[allow(clippy::match_single_binding)]
13426                    match tag {
13427                        __FieldTag::__name => {
13428                            if !fields.insert(__FieldTag::__name) {
13429                                return std::result::Result::Err(A::Error::duplicate_field(
13430                                    "multiple values for name",
13431                                ));
13432                            }
13433                            result.name = map
13434                                .next_value::<std::option::Option<std::string::String>>()?
13435                                .unwrap_or_default();
13436                        }
13437                        __FieldTag::Unknown(key) => {
13438                            let value = map.next_value::<serde_json::Value>()?;
13439                            result._unknown_fields.insert(key, value);
13440                        }
13441                    }
13442                }
13443                std::result::Result::Ok(result)
13444            }
13445        }
13446        deserializer.deserialize_any(Visitor)
13447    }
13448}
13449
13450#[doc(hidden)]
13451impl serde::ser::Serialize for GetNetworkPolicyRequest {
13452    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13453    where
13454        S: serde::ser::Serializer,
13455    {
13456        use serde::ser::SerializeMap;
13457        #[allow(unused_imports)]
13458        use std::option::Option::Some;
13459        let mut state = serializer.serialize_map(std::option::Option::None)?;
13460        if !self.name.is_empty() {
13461            state.serialize_entry("name", &self.name)?;
13462        }
13463        if !self._unknown_fields.is_empty() {
13464            for (key, value) in self._unknown_fields.iter() {
13465                state.serialize_entry(key, &value)?;
13466            }
13467        }
13468        state.end()
13469    }
13470}
13471
13472/// Request message for
13473/// [VmwareEngine.UpdateNetworkPolicy][google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPolicy]
13474///
13475/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPolicy]: crate::client::VmwareEngine::update_network_policy
13476#[derive(Clone, Debug, Default, PartialEq)]
13477#[non_exhaustive]
13478pub struct UpdateNetworkPolicyRequest {
13479    /// Required. Network policy description.
13480    pub network_policy: std::option::Option<crate::model::NetworkPolicy>,
13481
13482    /// Required. Field mask is used to specify the fields to be overwritten in the
13483    /// `NetworkPolicy` resource by the update.
13484    /// The fields specified in the `update_mask` are relative to the resource, not
13485    /// the full request. A field will be overwritten if it is in the mask. If the
13486    /// user does not provide a mask then all fields will be overwritten.
13487    pub update_mask: std::option::Option<wkt::FieldMask>,
13488
13489    /// Optional. A request ID to identify requests. Specify a unique request ID
13490    /// so that if you must retry your request, the server will know to ignore
13491    /// the request if it has already been completed. The server guarantees that a
13492    /// request doesn't result in creation of duplicate commitments for at least 60
13493    /// minutes.
13494    ///
13495    /// For example, consider a situation where you make an initial request and the
13496    /// request times out. If you make the request again with the same request
13497    /// ID, the server can check if original operation with the same request ID
13498    /// was received, and if so, will ignore the second request. This prevents
13499    /// clients from accidentally creating duplicate commitments.
13500    ///
13501    /// The request ID must be a valid UUID with the exception that zero UUID is
13502    /// not supported (00000000-0000-0000-0000-000000000000).
13503    pub request_id: std::string::String,
13504
13505    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13506}
13507
13508impl UpdateNetworkPolicyRequest {
13509    pub fn new() -> Self {
13510        std::default::Default::default()
13511    }
13512
13513    /// Sets the value of [network_policy][crate::model::UpdateNetworkPolicyRequest::network_policy].
13514    pub fn set_network_policy<T>(mut self, v: T) -> Self
13515    where
13516        T: std::convert::Into<crate::model::NetworkPolicy>,
13517    {
13518        self.network_policy = std::option::Option::Some(v.into());
13519        self
13520    }
13521
13522    /// Sets or clears the value of [network_policy][crate::model::UpdateNetworkPolicyRequest::network_policy].
13523    pub fn set_or_clear_network_policy<T>(mut self, v: std::option::Option<T>) -> Self
13524    where
13525        T: std::convert::Into<crate::model::NetworkPolicy>,
13526    {
13527        self.network_policy = v.map(|x| x.into());
13528        self
13529    }
13530
13531    /// Sets the value of [update_mask][crate::model::UpdateNetworkPolicyRequest::update_mask].
13532    pub fn set_update_mask<T>(mut self, v: T) -> Self
13533    where
13534        T: std::convert::Into<wkt::FieldMask>,
13535    {
13536        self.update_mask = std::option::Option::Some(v.into());
13537        self
13538    }
13539
13540    /// Sets or clears the value of [update_mask][crate::model::UpdateNetworkPolicyRequest::update_mask].
13541    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
13542    where
13543        T: std::convert::Into<wkt::FieldMask>,
13544    {
13545        self.update_mask = v.map(|x| x.into());
13546        self
13547    }
13548
13549    /// Sets the value of [request_id][crate::model::UpdateNetworkPolicyRequest::request_id].
13550    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13551        self.request_id = v.into();
13552        self
13553    }
13554}
13555
13556impl wkt::message::Message for UpdateNetworkPolicyRequest {
13557    fn typename() -> &'static str {
13558        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateNetworkPolicyRequest"
13559    }
13560}
13561
13562#[doc(hidden)]
13563impl<'de> serde::de::Deserialize<'de> for UpdateNetworkPolicyRequest {
13564    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13565    where
13566        D: serde::Deserializer<'de>,
13567    {
13568        #[allow(non_camel_case_types)]
13569        #[doc(hidden)]
13570        #[derive(PartialEq, Eq, Hash)]
13571        enum __FieldTag {
13572            __network_policy,
13573            __update_mask,
13574            __request_id,
13575            Unknown(std::string::String),
13576        }
13577        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
13578            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13579            where
13580                D: serde::Deserializer<'de>,
13581            {
13582                struct Visitor;
13583                impl<'de> serde::de::Visitor<'de> for Visitor {
13584                    type Value = __FieldTag;
13585                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13586                        formatter.write_str("a field name for UpdateNetworkPolicyRequest")
13587                    }
13588                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
13589                    where
13590                        E: serde::de::Error,
13591                    {
13592                        use std::result::Result::Ok;
13593                        use std::string::ToString;
13594                        match value {
13595                            "networkPolicy" => Ok(__FieldTag::__network_policy),
13596                            "network_policy" => Ok(__FieldTag::__network_policy),
13597                            "updateMask" => Ok(__FieldTag::__update_mask),
13598                            "update_mask" => Ok(__FieldTag::__update_mask),
13599                            "requestId" => Ok(__FieldTag::__request_id),
13600                            "request_id" => Ok(__FieldTag::__request_id),
13601                            _ => Ok(__FieldTag::Unknown(value.to_string())),
13602                        }
13603                    }
13604                }
13605                deserializer.deserialize_identifier(Visitor)
13606            }
13607        }
13608        struct Visitor;
13609        impl<'de> serde::de::Visitor<'de> for Visitor {
13610            type Value = UpdateNetworkPolicyRequest;
13611            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13612                formatter.write_str("struct UpdateNetworkPolicyRequest")
13613            }
13614            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
13615            where
13616                A: serde::de::MapAccess<'de>,
13617            {
13618                #[allow(unused_imports)]
13619                use serde::de::Error;
13620                use std::option::Option::Some;
13621                let mut fields = std::collections::HashSet::new();
13622                let mut result = Self::Value::new();
13623                while let Some(tag) = map.next_key::<__FieldTag>()? {
13624                    #[allow(clippy::match_single_binding)]
13625                    match tag {
13626                        __FieldTag::__network_policy => {
13627                            if !fields.insert(__FieldTag::__network_policy) {
13628                                return std::result::Result::Err(A::Error::duplicate_field(
13629                                    "multiple values for network_policy",
13630                                ));
13631                            }
13632                            result.network_policy = map
13633                                .next_value::<std::option::Option<crate::model::NetworkPolicy>>()?;
13634                        }
13635                        __FieldTag::__update_mask => {
13636                            if !fields.insert(__FieldTag::__update_mask) {
13637                                return std::result::Result::Err(A::Error::duplicate_field(
13638                                    "multiple values for update_mask",
13639                                ));
13640                            }
13641                            result.update_mask =
13642                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
13643                        }
13644                        __FieldTag::__request_id => {
13645                            if !fields.insert(__FieldTag::__request_id) {
13646                                return std::result::Result::Err(A::Error::duplicate_field(
13647                                    "multiple values for request_id",
13648                                ));
13649                            }
13650                            result.request_id = map
13651                                .next_value::<std::option::Option<std::string::String>>()?
13652                                .unwrap_or_default();
13653                        }
13654                        __FieldTag::Unknown(key) => {
13655                            let value = map.next_value::<serde_json::Value>()?;
13656                            result._unknown_fields.insert(key, value);
13657                        }
13658                    }
13659                }
13660                std::result::Result::Ok(result)
13661            }
13662        }
13663        deserializer.deserialize_any(Visitor)
13664    }
13665}
13666
13667#[doc(hidden)]
13668impl serde::ser::Serialize for UpdateNetworkPolicyRequest {
13669    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13670    where
13671        S: serde::ser::Serializer,
13672    {
13673        use serde::ser::SerializeMap;
13674        #[allow(unused_imports)]
13675        use std::option::Option::Some;
13676        let mut state = serializer.serialize_map(std::option::Option::None)?;
13677        if self.network_policy.is_some() {
13678            state.serialize_entry("networkPolicy", &self.network_policy)?;
13679        }
13680        if self.update_mask.is_some() {
13681            state.serialize_entry("updateMask", &self.update_mask)?;
13682        }
13683        if !self.request_id.is_empty() {
13684            state.serialize_entry("requestId", &self.request_id)?;
13685        }
13686        if !self._unknown_fields.is_empty() {
13687            for (key, value) in self._unknown_fields.iter() {
13688                state.serialize_entry(key, &value)?;
13689            }
13690        }
13691        state.end()
13692    }
13693}
13694
13695/// Request message for
13696/// [VmwareEngine.CreateNetworkPolicy][google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPolicy]
13697///
13698/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPolicy]: crate::client::VmwareEngine::create_network_policy
13699#[derive(Clone, Debug, Default, PartialEq)]
13700#[non_exhaustive]
13701pub struct CreateNetworkPolicyRequest {
13702    /// Required. The resource name of the location (region)
13703    /// to create the new network policy in.
13704    /// Resource names are schemeless URIs that follow the conventions in
13705    /// <https://cloud.google.com/apis/design/resource_names>.
13706    /// For example:
13707    /// `projects/my-project/locations/us-central1`
13708    pub parent: std::string::String,
13709
13710    /// Required. The user-provided identifier of the network policy to be created.
13711    /// This identifier must be unique within parent
13712    /// `projects/{my-project}/locations/{us-central1}/networkPolicies` and becomes
13713    /// the final token in the name URI.
13714    /// The identifier must meet the following requirements:
13715    ///
13716    /// * Only contains 1-63 alphanumeric characters and hyphens
13717    /// * Begins with an alphabetical character
13718    /// * Ends with a non-hyphen character
13719    /// * Not formatted as a UUID
13720    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
13721    ///   (section 3.5)
13722    pub network_policy_id: std::string::String,
13723
13724    /// Required. The network policy configuration to use in the request.
13725    pub network_policy: std::option::Option<crate::model::NetworkPolicy>,
13726
13727    /// Optional. A request ID to identify requests. Specify a unique request ID
13728    /// so that if you must retry your request, the server will know to ignore
13729    /// the request if it has already been completed. The server guarantees that a
13730    /// request doesn't result in creation of duplicate commitments for at least 60
13731    /// minutes.
13732    ///
13733    /// For example, consider a situation where you make an initial request and the
13734    /// request times out. If you make the request again with the same request
13735    /// ID, the server can check if original operation with the same request ID
13736    /// was received, and if so, will ignore the second request. This prevents
13737    /// clients from accidentally creating duplicate commitments.
13738    ///
13739    /// The request ID must be a valid UUID with the exception that zero UUID is
13740    /// not supported (00000000-0000-0000-0000-000000000000).
13741    pub request_id: std::string::String,
13742
13743    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13744}
13745
13746impl CreateNetworkPolicyRequest {
13747    pub fn new() -> Self {
13748        std::default::Default::default()
13749    }
13750
13751    /// Sets the value of [parent][crate::model::CreateNetworkPolicyRequest::parent].
13752    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13753        self.parent = v.into();
13754        self
13755    }
13756
13757    /// Sets the value of [network_policy_id][crate::model::CreateNetworkPolicyRequest::network_policy_id].
13758    pub fn set_network_policy_id<T: std::convert::Into<std::string::String>>(
13759        mut self,
13760        v: T,
13761    ) -> Self {
13762        self.network_policy_id = v.into();
13763        self
13764    }
13765
13766    /// Sets the value of [network_policy][crate::model::CreateNetworkPolicyRequest::network_policy].
13767    pub fn set_network_policy<T>(mut self, v: T) -> Self
13768    where
13769        T: std::convert::Into<crate::model::NetworkPolicy>,
13770    {
13771        self.network_policy = std::option::Option::Some(v.into());
13772        self
13773    }
13774
13775    /// Sets or clears the value of [network_policy][crate::model::CreateNetworkPolicyRequest::network_policy].
13776    pub fn set_or_clear_network_policy<T>(mut self, v: std::option::Option<T>) -> Self
13777    where
13778        T: std::convert::Into<crate::model::NetworkPolicy>,
13779    {
13780        self.network_policy = v.map(|x| x.into());
13781        self
13782    }
13783
13784    /// Sets the value of [request_id][crate::model::CreateNetworkPolicyRequest::request_id].
13785    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13786        self.request_id = v.into();
13787        self
13788    }
13789}
13790
13791impl wkt::message::Message for CreateNetworkPolicyRequest {
13792    fn typename() -> &'static str {
13793        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateNetworkPolicyRequest"
13794    }
13795}
13796
13797#[doc(hidden)]
13798impl<'de> serde::de::Deserialize<'de> for CreateNetworkPolicyRequest {
13799    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13800    where
13801        D: serde::Deserializer<'de>,
13802    {
13803        #[allow(non_camel_case_types)]
13804        #[doc(hidden)]
13805        #[derive(PartialEq, Eq, Hash)]
13806        enum __FieldTag {
13807            __parent,
13808            __network_policy_id,
13809            __network_policy,
13810            __request_id,
13811            Unknown(std::string::String),
13812        }
13813        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
13814            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13815            where
13816                D: serde::Deserializer<'de>,
13817            {
13818                struct Visitor;
13819                impl<'de> serde::de::Visitor<'de> for Visitor {
13820                    type Value = __FieldTag;
13821                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13822                        formatter.write_str("a field name for CreateNetworkPolicyRequest")
13823                    }
13824                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
13825                    where
13826                        E: serde::de::Error,
13827                    {
13828                        use std::result::Result::Ok;
13829                        use std::string::ToString;
13830                        match value {
13831                            "parent" => Ok(__FieldTag::__parent),
13832                            "networkPolicyId" => Ok(__FieldTag::__network_policy_id),
13833                            "network_policy_id" => Ok(__FieldTag::__network_policy_id),
13834                            "networkPolicy" => Ok(__FieldTag::__network_policy),
13835                            "network_policy" => Ok(__FieldTag::__network_policy),
13836                            "requestId" => Ok(__FieldTag::__request_id),
13837                            "request_id" => Ok(__FieldTag::__request_id),
13838                            _ => Ok(__FieldTag::Unknown(value.to_string())),
13839                        }
13840                    }
13841                }
13842                deserializer.deserialize_identifier(Visitor)
13843            }
13844        }
13845        struct Visitor;
13846        impl<'de> serde::de::Visitor<'de> for Visitor {
13847            type Value = CreateNetworkPolicyRequest;
13848            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
13849                formatter.write_str("struct CreateNetworkPolicyRequest")
13850            }
13851            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
13852            where
13853                A: serde::de::MapAccess<'de>,
13854            {
13855                #[allow(unused_imports)]
13856                use serde::de::Error;
13857                use std::option::Option::Some;
13858                let mut fields = std::collections::HashSet::new();
13859                let mut result = Self::Value::new();
13860                while let Some(tag) = map.next_key::<__FieldTag>()? {
13861                    #[allow(clippy::match_single_binding)]
13862                    match tag {
13863                        __FieldTag::__parent => {
13864                            if !fields.insert(__FieldTag::__parent) {
13865                                return std::result::Result::Err(A::Error::duplicate_field(
13866                                    "multiple values for parent",
13867                                ));
13868                            }
13869                            result.parent = map
13870                                .next_value::<std::option::Option<std::string::String>>()?
13871                                .unwrap_or_default();
13872                        }
13873                        __FieldTag::__network_policy_id => {
13874                            if !fields.insert(__FieldTag::__network_policy_id) {
13875                                return std::result::Result::Err(A::Error::duplicate_field(
13876                                    "multiple values for network_policy_id",
13877                                ));
13878                            }
13879                            result.network_policy_id = map
13880                                .next_value::<std::option::Option<std::string::String>>()?
13881                                .unwrap_or_default();
13882                        }
13883                        __FieldTag::__network_policy => {
13884                            if !fields.insert(__FieldTag::__network_policy) {
13885                                return std::result::Result::Err(A::Error::duplicate_field(
13886                                    "multiple values for network_policy",
13887                                ));
13888                            }
13889                            result.network_policy = map
13890                                .next_value::<std::option::Option<crate::model::NetworkPolicy>>()?;
13891                        }
13892                        __FieldTag::__request_id => {
13893                            if !fields.insert(__FieldTag::__request_id) {
13894                                return std::result::Result::Err(A::Error::duplicate_field(
13895                                    "multiple values for request_id",
13896                                ));
13897                            }
13898                            result.request_id = map
13899                                .next_value::<std::option::Option<std::string::String>>()?
13900                                .unwrap_or_default();
13901                        }
13902                        __FieldTag::Unknown(key) => {
13903                            let value = map.next_value::<serde_json::Value>()?;
13904                            result._unknown_fields.insert(key, value);
13905                        }
13906                    }
13907                }
13908                std::result::Result::Ok(result)
13909            }
13910        }
13911        deserializer.deserialize_any(Visitor)
13912    }
13913}
13914
13915#[doc(hidden)]
13916impl serde::ser::Serialize for CreateNetworkPolicyRequest {
13917    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13918    where
13919        S: serde::ser::Serializer,
13920    {
13921        use serde::ser::SerializeMap;
13922        #[allow(unused_imports)]
13923        use std::option::Option::Some;
13924        let mut state = serializer.serialize_map(std::option::Option::None)?;
13925        if !self.parent.is_empty() {
13926            state.serialize_entry("parent", &self.parent)?;
13927        }
13928        if !self.network_policy_id.is_empty() {
13929            state.serialize_entry("networkPolicyId", &self.network_policy_id)?;
13930        }
13931        if self.network_policy.is_some() {
13932            state.serialize_entry("networkPolicy", &self.network_policy)?;
13933        }
13934        if !self.request_id.is_empty() {
13935            state.serialize_entry("requestId", &self.request_id)?;
13936        }
13937        if !self._unknown_fields.is_empty() {
13938            for (key, value) in self._unknown_fields.iter() {
13939                state.serialize_entry(key, &value)?;
13940            }
13941        }
13942        state.end()
13943    }
13944}
13945
13946/// Request message for
13947/// [VmwareEngine.DeleteNetworkPolicy][google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPolicy]
13948///
13949/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPolicy]: crate::client::VmwareEngine::delete_network_policy
13950#[derive(Clone, Debug, Default, PartialEq)]
13951#[non_exhaustive]
13952pub struct DeleteNetworkPolicyRequest {
13953    /// Required. The resource name of the network policy to delete.
13954    /// Resource names are schemeless URIs that follow the conventions in
13955    /// <https://cloud.google.com/apis/design/resource_names>.
13956    /// For example:
13957    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
13958    pub name: std::string::String,
13959
13960    /// Optional. A request ID to identify requests. Specify a unique request ID
13961    /// so that if you must retry your request, the server will know to ignore
13962    /// the request if it has already been completed. The server guarantees that a
13963    /// request doesn't result in creation of duplicate commitments for at least 60
13964    /// minutes.
13965    ///
13966    /// For example, consider a situation where you make an initial request and the
13967    /// request times out. If you make the request again with the same request
13968    /// ID, the server can check if original operation with the same request ID
13969    /// was received, and if so, will ignore the second request. This prevents
13970    /// clients from accidentally creating duplicate commitments.
13971    ///
13972    /// The request ID must be a valid UUID with the exception that zero UUID is
13973    /// not supported (00000000-0000-0000-0000-000000000000).
13974    pub request_id: std::string::String,
13975
13976    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13977}
13978
13979impl DeleteNetworkPolicyRequest {
13980    pub fn new() -> Self {
13981        std::default::Default::default()
13982    }
13983
13984    /// Sets the value of [name][crate::model::DeleteNetworkPolicyRequest::name].
13985    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13986        self.name = v.into();
13987        self
13988    }
13989
13990    /// Sets the value of [request_id][crate::model::DeleteNetworkPolicyRequest::request_id].
13991    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13992        self.request_id = v.into();
13993        self
13994    }
13995}
13996
13997impl wkt::message::Message for DeleteNetworkPolicyRequest {
13998    fn typename() -> &'static str {
13999        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteNetworkPolicyRequest"
14000    }
14001}
14002
14003#[doc(hidden)]
14004impl<'de> serde::de::Deserialize<'de> for DeleteNetworkPolicyRequest {
14005    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14006    where
14007        D: serde::Deserializer<'de>,
14008    {
14009        #[allow(non_camel_case_types)]
14010        #[doc(hidden)]
14011        #[derive(PartialEq, Eq, Hash)]
14012        enum __FieldTag {
14013            __name,
14014            __request_id,
14015            Unknown(std::string::String),
14016        }
14017        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
14018            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14019            where
14020                D: serde::Deserializer<'de>,
14021            {
14022                struct Visitor;
14023                impl<'de> serde::de::Visitor<'de> for Visitor {
14024                    type Value = __FieldTag;
14025                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14026                        formatter.write_str("a field name for DeleteNetworkPolicyRequest")
14027                    }
14028                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
14029                    where
14030                        E: serde::de::Error,
14031                    {
14032                        use std::result::Result::Ok;
14033                        use std::string::ToString;
14034                        match value {
14035                            "name" => Ok(__FieldTag::__name),
14036                            "requestId" => Ok(__FieldTag::__request_id),
14037                            "request_id" => Ok(__FieldTag::__request_id),
14038                            _ => Ok(__FieldTag::Unknown(value.to_string())),
14039                        }
14040                    }
14041                }
14042                deserializer.deserialize_identifier(Visitor)
14043            }
14044        }
14045        struct Visitor;
14046        impl<'de> serde::de::Visitor<'de> for Visitor {
14047            type Value = DeleteNetworkPolicyRequest;
14048            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14049                formatter.write_str("struct DeleteNetworkPolicyRequest")
14050            }
14051            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
14052            where
14053                A: serde::de::MapAccess<'de>,
14054            {
14055                #[allow(unused_imports)]
14056                use serde::de::Error;
14057                use std::option::Option::Some;
14058                let mut fields = std::collections::HashSet::new();
14059                let mut result = Self::Value::new();
14060                while let Some(tag) = map.next_key::<__FieldTag>()? {
14061                    #[allow(clippy::match_single_binding)]
14062                    match tag {
14063                        __FieldTag::__name => {
14064                            if !fields.insert(__FieldTag::__name) {
14065                                return std::result::Result::Err(A::Error::duplicate_field(
14066                                    "multiple values for name",
14067                                ));
14068                            }
14069                            result.name = map
14070                                .next_value::<std::option::Option<std::string::String>>()?
14071                                .unwrap_or_default();
14072                        }
14073                        __FieldTag::__request_id => {
14074                            if !fields.insert(__FieldTag::__request_id) {
14075                                return std::result::Result::Err(A::Error::duplicate_field(
14076                                    "multiple values for request_id",
14077                                ));
14078                            }
14079                            result.request_id = map
14080                                .next_value::<std::option::Option<std::string::String>>()?
14081                                .unwrap_or_default();
14082                        }
14083                        __FieldTag::Unknown(key) => {
14084                            let value = map.next_value::<serde_json::Value>()?;
14085                            result._unknown_fields.insert(key, value);
14086                        }
14087                    }
14088                }
14089                std::result::Result::Ok(result)
14090            }
14091        }
14092        deserializer.deserialize_any(Visitor)
14093    }
14094}
14095
14096#[doc(hidden)]
14097impl serde::ser::Serialize for DeleteNetworkPolicyRequest {
14098    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14099    where
14100        S: serde::ser::Serializer,
14101    {
14102        use serde::ser::SerializeMap;
14103        #[allow(unused_imports)]
14104        use std::option::Option::Some;
14105        let mut state = serializer.serialize_map(std::option::Option::None)?;
14106        if !self.name.is_empty() {
14107            state.serialize_entry("name", &self.name)?;
14108        }
14109        if !self.request_id.is_empty() {
14110            state.serialize_entry("requestId", &self.request_id)?;
14111        }
14112        if !self._unknown_fields.is_empty() {
14113            for (key, value) in self._unknown_fields.iter() {
14114                state.serialize_entry(key, &value)?;
14115            }
14116        }
14117        state.end()
14118    }
14119}
14120
14121/// Request message for
14122/// [VmwareEngine.ListManagementDnsZoneBindings][google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings]
14123///
14124/// [google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings]: crate::client::VmwareEngine::list_management_dns_zone_bindings
14125#[derive(Clone, Debug, Default, PartialEq)]
14126#[non_exhaustive]
14127pub struct ListManagementDnsZoneBindingsRequest {
14128    /// Required. The resource name of the private cloud to be queried for
14129    /// management DNS zone bindings.
14130    /// Resource names are schemeless URIs that follow the conventions in
14131    /// <https://cloud.google.com/apis/design/resource_names>.
14132    /// For example:
14133    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
14134    pub parent: std::string::String,
14135
14136    /// The maximum number of management DNS zone bindings to return in one page.
14137    /// The service may return fewer than this value.
14138    /// The maximum value is coerced to 1000.
14139    /// The default value of this field is 500.
14140    pub page_size: i32,
14141
14142    /// A page token, received from a previous `ListManagementDnsZoneBindings`
14143    /// call. Provide this to retrieve the subsequent page.
14144    ///
14145    /// When paginating, all other parameters provided to
14146    /// `ListManagementDnsZoneBindings` must match the call that provided the page
14147    /// token.
14148    pub page_token: std::string::String,
14149
14150    /// A filter expression that matches resources returned in the response.
14151    /// The expression must specify the field name, a comparison
14152    /// operator, and the value that you want to use for filtering. The value
14153    /// must be a string, a number, or a boolean. The comparison operator
14154    /// must be `=`, `!=`, `>`, or `<`.
14155    ///
14156    /// For example, if you are filtering a list of Management DNS Zone Bindings,
14157    /// you can exclude the ones named `example-management-dns-zone-binding` by
14158    /// specifying `name != "example-management-dns-zone-binding"`.
14159    ///
14160    /// To filter on multiple expressions, provide each separate expression within
14161    /// parentheses. For example:
14162    ///
14163    /// ```norust
14164    /// (name = "example-management-dns-zone-binding")
14165    /// (createTime > "2021-04-12T08:15:10.40Z")
14166    /// ```
14167    ///
14168    /// By default, each expression is an `AND` expression. However, you
14169    /// can include `AND` and `OR` expressions explicitly.
14170    /// For example:
14171    ///
14172    /// ```norust
14173    /// (name = "example-management-dns-zone-binding-1") AND
14174    /// (createTime > "2021-04-12T08:15:10.40Z") OR
14175    /// (name = "example-management-dns-zone-binding-2")
14176    /// ```
14177    pub filter: std::string::String,
14178
14179    /// Sorts list results by a certain order. By default, returned results
14180    /// are ordered by `name` in ascending order.
14181    /// You can also sort results in descending order based on the `name` value
14182    /// using `orderBy="name desc"`.
14183    /// Currently, only ordering by `name` is supported.
14184    pub order_by: std::string::String,
14185
14186    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14187}
14188
14189impl ListManagementDnsZoneBindingsRequest {
14190    pub fn new() -> Self {
14191        std::default::Default::default()
14192    }
14193
14194    /// Sets the value of [parent][crate::model::ListManagementDnsZoneBindingsRequest::parent].
14195    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14196        self.parent = v.into();
14197        self
14198    }
14199
14200    /// Sets the value of [page_size][crate::model::ListManagementDnsZoneBindingsRequest::page_size].
14201    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
14202        self.page_size = v.into();
14203        self
14204    }
14205
14206    /// Sets the value of [page_token][crate::model::ListManagementDnsZoneBindingsRequest::page_token].
14207    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14208        self.page_token = v.into();
14209        self
14210    }
14211
14212    /// Sets the value of [filter][crate::model::ListManagementDnsZoneBindingsRequest::filter].
14213    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14214        self.filter = v.into();
14215        self
14216    }
14217
14218    /// Sets the value of [order_by][crate::model::ListManagementDnsZoneBindingsRequest::order_by].
14219    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14220        self.order_by = v.into();
14221        self
14222    }
14223}
14224
14225impl wkt::message::Message for ListManagementDnsZoneBindingsRequest {
14226    fn typename() -> &'static str {
14227        "type.googleapis.com/google.cloud.vmwareengine.v1.ListManagementDnsZoneBindingsRequest"
14228    }
14229}
14230
14231#[doc(hidden)]
14232impl<'de> serde::de::Deserialize<'de> for ListManagementDnsZoneBindingsRequest {
14233    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14234    where
14235        D: serde::Deserializer<'de>,
14236    {
14237        #[allow(non_camel_case_types)]
14238        #[doc(hidden)]
14239        #[derive(PartialEq, Eq, Hash)]
14240        enum __FieldTag {
14241            __parent,
14242            __page_size,
14243            __page_token,
14244            __filter,
14245            __order_by,
14246            Unknown(std::string::String),
14247        }
14248        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
14249            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14250            where
14251                D: serde::Deserializer<'de>,
14252            {
14253                struct Visitor;
14254                impl<'de> serde::de::Visitor<'de> for Visitor {
14255                    type Value = __FieldTag;
14256                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14257                        formatter.write_str("a field name for ListManagementDnsZoneBindingsRequest")
14258                    }
14259                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
14260                    where
14261                        E: serde::de::Error,
14262                    {
14263                        use std::result::Result::Ok;
14264                        use std::string::ToString;
14265                        match value {
14266                            "parent" => Ok(__FieldTag::__parent),
14267                            "pageSize" => Ok(__FieldTag::__page_size),
14268                            "page_size" => Ok(__FieldTag::__page_size),
14269                            "pageToken" => Ok(__FieldTag::__page_token),
14270                            "page_token" => Ok(__FieldTag::__page_token),
14271                            "filter" => Ok(__FieldTag::__filter),
14272                            "orderBy" => Ok(__FieldTag::__order_by),
14273                            "order_by" => Ok(__FieldTag::__order_by),
14274                            _ => Ok(__FieldTag::Unknown(value.to_string())),
14275                        }
14276                    }
14277                }
14278                deserializer.deserialize_identifier(Visitor)
14279            }
14280        }
14281        struct Visitor;
14282        impl<'de> serde::de::Visitor<'de> for Visitor {
14283            type Value = ListManagementDnsZoneBindingsRequest;
14284            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14285                formatter.write_str("struct ListManagementDnsZoneBindingsRequest")
14286            }
14287            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
14288            where
14289                A: serde::de::MapAccess<'de>,
14290            {
14291                #[allow(unused_imports)]
14292                use serde::de::Error;
14293                use std::option::Option::Some;
14294                let mut fields = std::collections::HashSet::new();
14295                let mut result = Self::Value::new();
14296                while let Some(tag) = map.next_key::<__FieldTag>()? {
14297                    #[allow(clippy::match_single_binding)]
14298                    match tag {
14299                        __FieldTag::__parent => {
14300                            if !fields.insert(__FieldTag::__parent) {
14301                                return std::result::Result::Err(A::Error::duplicate_field(
14302                                    "multiple values for parent",
14303                                ));
14304                            }
14305                            result.parent = map
14306                                .next_value::<std::option::Option<std::string::String>>()?
14307                                .unwrap_or_default();
14308                        }
14309                        __FieldTag::__page_size => {
14310                            if !fields.insert(__FieldTag::__page_size) {
14311                                return std::result::Result::Err(A::Error::duplicate_field(
14312                                    "multiple values for page_size",
14313                                ));
14314                            }
14315                            struct __With(std::option::Option<i32>);
14316                            impl<'de> serde::de::Deserialize<'de> for __With {
14317                                fn deserialize<D>(
14318                                    deserializer: D,
14319                                ) -> std::result::Result<Self, D::Error>
14320                                where
14321                                    D: serde::de::Deserializer<'de>,
14322                                {
14323                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
14324                                }
14325                            }
14326                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
14327                        }
14328                        __FieldTag::__page_token => {
14329                            if !fields.insert(__FieldTag::__page_token) {
14330                                return std::result::Result::Err(A::Error::duplicate_field(
14331                                    "multiple values for page_token",
14332                                ));
14333                            }
14334                            result.page_token = map
14335                                .next_value::<std::option::Option<std::string::String>>()?
14336                                .unwrap_or_default();
14337                        }
14338                        __FieldTag::__filter => {
14339                            if !fields.insert(__FieldTag::__filter) {
14340                                return std::result::Result::Err(A::Error::duplicate_field(
14341                                    "multiple values for filter",
14342                                ));
14343                            }
14344                            result.filter = map
14345                                .next_value::<std::option::Option<std::string::String>>()?
14346                                .unwrap_or_default();
14347                        }
14348                        __FieldTag::__order_by => {
14349                            if !fields.insert(__FieldTag::__order_by) {
14350                                return std::result::Result::Err(A::Error::duplicate_field(
14351                                    "multiple values for order_by",
14352                                ));
14353                            }
14354                            result.order_by = map
14355                                .next_value::<std::option::Option<std::string::String>>()?
14356                                .unwrap_or_default();
14357                        }
14358                        __FieldTag::Unknown(key) => {
14359                            let value = map.next_value::<serde_json::Value>()?;
14360                            result._unknown_fields.insert(key, value);
14361                        }
14362                    }
14363                }
14364                std::result::Result::Ok(result)
14365            }
14366        }
14367        deserializer.deserialize_any(Visitor)
14368    }
14369}
14370
14371#[doc(hidden)]
14372impl serde::ser::Serialize for ListManagementDnsZoneBindingsRequest {
14373    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14374    where
14375        S: serde::ser::Serializer,
14376    {
14377        use serde::ser::SerializeMap;
14378        #[allow(unused_imports)]
14379        use std::option::Option::Some;
14380        let mut state = serializer.serialize_map(std::option::Option::None)?;
14381        if !self.parent.is_empty() {
14382            state.serialize_entry("parent", &self.parent)?;
14383        }
14384        if !wkt::internal::is_default(&self.page_size) {
14385            struct __With<'a>(&'a i32);
14386            impl<'a> serde::ser::Serialize for __With<'a> {
14387                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14388                where
14389                    S: serde::ser::Serializer,
14390                {
14391                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
14392                }
14393            }
14394            state.serialize_entry("pageSize", &__With(&self.page_size))?;
14395        }
14396        if !self.page_token.is_empty() {
14397            state.serialize_entry("pageToken", &self.page_token)?;
14398        }
14399        if !self.filter.is_empty() {
14400            state.serialize_entry("filter", &self.filter)?;
14401        }
14402        if !self.order_by.is_empty() {
14403            state.serialize_entry("orderBy", &self.order_by)?;
14404        }
14405        if !self._unknown_fields.is_empty() {
14406            for (key, value) in self._unknown_fields.iter() {
14407                state.serialize_entry(key, &value)?;
14408            }
14409        }
14410        state.end()
14411    }
14412}
14413
14414/// Response message for
14415/// [VmwareEngine.ListManagementDnsZoneBindings][google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings]
14416///
14417/// [google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings]: crate::client::VmwareEngine::list_management_dns_zone_bindings
14418#[derive(Clone, Debug, Default, PartialEq)]
14419#[non_exhaustive]
14420pub struct ListManagementDnsZoneBindingsResponse {
14421    /// A list of management DNS zone bindings.
14422    pub management_dns_zone_bindings: std::vec::Vec<crate::model::ManagementDnsZoneBinding>,
14423
14424    /// A token, which can be sent as `page_token` to retrieve the next page.
14425    /// If this field is omitted, there are no subsequent pages.
14426    pub next_page_token: std::string::String,
14427
14428    /// Locations that could not be reached when making an aggregated query using
14429    /// wildcards.
14430    pub unreachable: std::vec::Vec<std::string::String>,
14431
14432    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14433}
14434
14435impl ListManagementDnsZoneBindingsResponse {
14436    pub fn new() -> Self {
14437        std::default::Default::default()
14438    }
14439
14440    /// Sets the value of [management_dns_zone_bindings][crate::model::ListManagementDnsZoneBindingsResponse::management_dns_zone_bindings].
14441    pub fn set_management_dns_zone_bindings<T, V>(mut self, v: T) -> Self
14442    where
14443        T: std::iter::IntoIterator<Item = V>,
14444        V: std::convert::Into<crate::model::ManagementDnsZoneBinding>,
14445    {
14446        use std::iter::Iterator;
14447        self.management_dns_zone_bindings = v.into_iter().map(|i| i.into()).collect();
14448        self
14449    }
14450
14451    /// Sets the value of [next_page_token][crate::model::ListManagementDnsZoneBindingsResponse::next_page_token].
14452    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14453        self.next_page_token = v.into();
14454        self
14455    }
14456
14457    /// Sets the value of [unreachable][crate::model::ListManagementDnsZoneBindingsResponse::unreachable].
14458    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
14459    where
14460        T: std::iter::IntoIterator<Item = V>,
14461        V: std::convert::Into<std::string::String>,
14462    {
14463        use std::iter::Iterator;
14464        self.unreachable = v.into_iter().map(|i| i.into()).collect();
14465        self
14466    }
14467}
14468
14469impl wkt::message::Message for ListManagementDnsZoneBindingsResponse {
14470    fn typename() -> &'static str {
14471        "type.googleapis.com/google.cloud.vmwareengine.v1.ListManagementDnsZoneBindingsResponse"
14472    }
14473}
14474
14475#[doc(hidden)]
14476impl gax::paginator::internal::PageableResponse for ListManagementDnsZoneBindingsResponse {
14477    type PageItem = crate::model::ManagementDnsZoneBinding;
14478
14479    fn items(self) -> std::vec::Vec<Self::PageItem> {
14480        self.management_dns_zone_bindings
14481    }
14482
14483    fn next_page_token(&self) -> std::string::String {
14484        use std::clone::Clone;
14485        self.next_page_token.clone()
14486    }
14487}
14488
14489#[doc(hidden)]
14490impl<'de> serde::de::Deserialize<'de> for ListManagementDnsZoneBindingsResponse {
14491    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14492    where
14493        D: serde::Deserializer<'de>,
14494    {
14495        #[allow(non_camel_case_types)]
14496        #[doc(hidden)]
14497        #[derive(PartialEq, Eq, Hash)]
14498        enum __FieldTag {
14499            __management_dns_zone_bindings,
14500            __next_page_token,
14501            __unreachable,
14502            Unknown(std::string::String),
14503        }
14504        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
14505            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14506            where
14507                D: serde::Deserializer<'de>,
14508            {
14509                struct Visitor;
14510                impl<'de> serde::de::Visitor<'de> for Visitor {
14511                    type Value = __FieldTag;
14512                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14513                        formatter
14514                            .write_str("a field name for ListManagementDnsZoneBindingsResponse")
14515                    }
14516                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
14517                    where
14518                        E: serde::de::Error,
14519                    {
14520                        use std::result::Result::Ok;
14521                        use std::string::ToString;
14522                        match value {
14523                            "managementDnsZoneBindings" => {
14524                                Ok(__FieldTag::__management_dns_zone_bindings)
14525                            }
14526                            "management_dns_zone_bindings" => {
14527                                Ok(__FieldTag::__management_dns_zone_bindings)
14528                            }
14529                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
14530                            "next_page_token" => Ok(__FieldTag::__next_page_token),
14531                            "unreachable" => Ok(__FieldTag::__unreachable),
14532                            _ => Ok(__FieldTag::Unknown(value.to_string())),
14533                        }
14534                    }
14535                }
14536                deserializer.deserialize_identifier(Visitor)
14537            }
14538        }
14539        struct Visitor;
14540        impl<'de> serde::de::Visitor<'de> for Visitor {
14541            type Value = ListManagementDnsZoneBindingsResponse;
14542            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14543                formatter.write_str("struct ListManagementDnsZoneBindingsResponse")
14544            }
14545            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
14546            where
14547                A: serde::de::MapAccess<'de>,
14548            {
14549                #[allow(unused_imports)]
14550                use serde::de::Error;
14551                use std::option::Option::Some;
14552                let mut fields = std::collections::HashSet::new();
14553                let mut result = Self::Value::new();
14554                while let Some(tag) = map.next_key::<__FieldTag>()? {
14555                    #[allow(clippy::match_single_binding)]
14556                    match tag {
14557                        __FieldTag::__management_dns_zone_bindings => {
14558                            if !fields.insert(__FieldTag::__management_dns_zone_bindings) {
14559                                return std::result::Result::Err(A::Error::duplicate_field(
14560                                    "multiple values for management_dns_zone_bindings",
14561                                ));
14562                            }
14563                            result.management_dns_zone_bindings = map
14564                                .next_value::<std::option::Option<
14565                                    std::vec::Vec<crate::model::ManagementDnsZoneBinding>,
14566                                >>()?
14567                                .unwrap_or_default();
14568                        }
14569                        __FieldTag::__next_page_token => {
14570                            if !fields.insert(__FieldTag::__next_page_token) {
14571                                return std::result::Result::Err(A::Error::duplicate_field(
14572                                    "multiple values for next_page_token",
14573                                ));
14574                            }
14575                            result.next_page_token = map
14576                                .next_value::<std::option::Option<std::string::String>>()?
14577                                .unwrap_or_default();
14578                        }
14579                        __FieldTag::__unreachable => {
14580                            if !fields.insert(__FieldTag::__unreachable) {
14581                                return std::result::Result::Err(A::Error::duplicate_field(
14582                                    "multiple values for unreachable",
14583                                ));
14584                            }
14585                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
14586                        }
14587                        __FieldTag::Unknown(key) => {
14588                            let value = map.next_value::<serde_json::Value>()?;
14589                            result._unknown_fields.insert(key, value);
14590                        }
14591                    }
14592                }
14593                std::result::Result::Ok(result)
14594            }
14595        }
14596        deserializer.deserialize_any(Visitor)
14597    }
14598}
14599
14600#[doc(hidden)]
14601impl serde::ser::Serialize for ListManagementDnsZoneBindingsResponse {
14602    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14603    where
14604        S: serde::ser::Serializer,
14605    {
14606        use serde::ser::SerializeMap;
14607        #[allow(unused_imports)]
14608        use std::option::Option::Some;
14609        let mut state = serializer.serialize_map(std::option::Option::None)?;
14610        if !self.management_dns_zone_bindings.is_empty() {
14611            state.serialize_entry(
14612                "managementDnsZoneBindings",
14613                &self.management_dns_zone_bindings,
14614            )?;
14615        }
14616        if !self.next_page_token.is_empty() {
14617            state.serialize_entry("nextPageToken", &self.next_page_token)?;
14618        }
14619        if !self.unreachable.is_empty() {
14620            state.serialize_entry("unreachable", &self.unreachable)?;
14621        }
14622        if !self._unknown_fields.is_empty() {
14623            for (key, value) in self._unknown_fields.iter() {
14624                state.serialize_entry(key, &value)?;
14625            }
14626        }
14627        state.end()
14628    }
14629}
14630
14631/// Request message for
14632/// [VmwareEngine.GetManagementDnsZoneBinding][google.cloud.vmwareengine.v1.VmwareEngine.GetManagementDnsZoneBinding]
14633///
14634/// [google.cloud.vmwareengine.v1.VmwareEngine.GetManagementDnsZoneBinding]: crate::client::VmwareEngine::get_management_dns_zone_binding
14635#[derive(Clone, Debug, Default, PartialEq)]
14636#[non_exhaustive]
14637pub struct GetManagementDnsZoneBindingRequest {
14638    /// Required. The resource name of the management DNS zone binding to
14639    /// retrieve. Resource names are schemeless URIs that follow the conventions in
14640    /// <https://cloud.google.com/apis/design/resource_names>.
14641    /// For example:
14642    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
14643    pub name: std::string::String,
14644
14645    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14646}
14647
14648impl GetManagementDnsZoneBindingRequest {
14649    pub fn new() -> Self {
14650        std::default::Default::default()
14651    }
14652
14653    /// Sets the value of [name][crate::model::GetManagementDnsZoneBindingRequest::name].
14654    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14655        self.name = v.into();
14656        self
14657    }
14658}
14659
14660impl wkt::message::Message for GetManagementDnsZoneBindingRequest {
14661    fn typename() -> &'static str {
14662        "type.googleapis.com/google.cloud.vmwareengine.v1.GetManagementDnsZoneBindingRequest"
14663    }
14664}
14665
14666#[doc(hidden)]
14667impl<'de> serde::de::Deserialize<'de> for GetManagementDnsZoneBindingRequest {
14668    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14669    where
14670        D: serde::Deserializer<'de>,
14671    {
14672        #[allow(non_camel_case_types)]
14673        #[doc(hidden)]
14674        #[derive(PartialEq, Eq, Hash)]
14675        enum __FieldTag {
14676            __name,
14677            Unknown(std::string::String),
14678        }
14679        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
14680            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14681            where
14682                D: serde::Deserializer<'de>,
14683            {
14684                struct Visitor;
14685                impl<'de> serde::de::Visitor<'de> for Visitor {
14686                    type Value = __FieldTag;
14687                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14688                        formatter.write_str("a field name for GetManagementDnsZoneBindingRequest")
14689                    }
14690                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
14691                    where
14692                        E: serde::de::Error,
14693                    {
14694                        use std::result::Result::Ok;
14695                        use std::string::ToString;
14696                        match value {
14697                            "name" => Ok(__FieldTag::__name),
14698                            _ => Ok(__FieldTag::Unknown(value.to_string())),
14699                        }
14700                    }
14701                }
14702                deserializer.deserialize_identifier(Visitor)
14703            }
14704        }
14705        struct Visitor;
14706        impl<'de> serde::de::Visitor<'de> for Visitor {
14707            type Value = GetManagementDnsZoneBindingRequest;
14708            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14709                formatter.write_str("struct GetManagementDnsZoneBindingRequest")
14710            }
14711            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
14712            where
14713                A: serde::de::MapAccess<'de>,
14714            {
14715                #[allow(unused_imports)]
14716                use serde::de::Error;
14717                use std::option::Option::Some;
14718                let mut fields = std::collections::HashSet::new();
14719                let mut result = Self::Value::new();
14720                while let Some(tag) = map.next_key::<__FieldTag>()? {
14721                    #[allow(clippy::match_single_binding)]
14722                    match tag {
14723                        __FieldTag::__name => {
14724                            if !fields.insert(__FieldTag::__name) {
14725                                return std::result::Result::Err(A::Error::duplicate_field(
14726                                    "multiple values for name",
14727                                ));
14728                            }
14729                            result.name = map
14730                                .next_value::<std::option::Option<std::string::String>>()?
14731                                .unwrap_or_default();
14732                        }
14733                        __FieldTag::Unknown(key) => {
14734                            let value = map.next_value::<serde_json::Value>()?;
14735                            result._unknown_fields.insert(key, value);
14736                        }
14737                    }
14738                }
14739                std::result::Result::Ok(result)
14740            }
14741        }
14742        deserializer.deserialize_any(Visitor)
14743    }
14744}
14745
14746#[doc(hidden)]
14747impl serde::ser::Serialize for GetManagementDnsZoneBindingRequest {
14748    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14749    where
14750        S: serde::ser::Serializer,
14751    {
14752        use serde::ser::SerializeMap;
14753        #[allow(unused_imports)]
14754        use std::option::Option::Some;
14755        let mut state = serializer.serialize_map(std::option::Option::None)?;
14756        if !self.name.is_empty() {
14757            state.serialize_entry("name", &self.name)?;
14758        }
14759        if !self._unknown_fields.is_empty() {
14760            for (key, value) in self._unknown_fields.iter() {
14761                state.serialize_entry(key, &value)?;
14762            }
14763        }
14764        state.end()
14765    }
14766}
14767
14768/// Request message for [VmwareEngine.CreateManagementDnsZoneBindings][]
14769#[derive(Clone, Debug, Default, PartialEq)]
14770#[non_exhaustive]
14771pub struct CreateManagementDnsZoneBindingRequest {
14772    /// Required. The resource name of the private cloud
14773    /// to create a new management DNS zone binding for.
14774    /// Resource names are schemeless URIs that follow the conventions in
14775    /// <https://cloud.google.com/apis/design/resource_names>.
14776    /// For example:
14777    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
14778    pub parent: std::string::String,
14779
14780    /// Required. The initial values for a new management DNS zone binding.
14781    pub management_dns_zone_binding: std::option::Option<crate::model::ManagementDnsZoneBinding>,
14782
14783    /// Required. The user-provided identifier of the `ManagementDnsZoneBinding`
14784    /// resource to be created. This identifier must be unique among
14785    /// `ManagementDnsZoneBinding` resources within the parent and becomes the
14786    /// final token in the name URI. The identifier must meet the following
14787    /// requirements:
14788    ///
14789    /// * Only contains 1-63 alphanumeric characters and hyphens
14790    /// * Begins with an alphabetical character
14791    /// * Ends with a non-hyphen character
14792    /// * Not formatted as a UUID
14793    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
14794    ///   (section 3.5)
14795    pub management_dns_zone_binding_id: std::string::String,
14796
14797    /// Optional. A request ID to identify requests. Specify a unique request ID
14798    /// so that if you must retry your request, the server will know to ignore
14799    /// the request if it has already been completed. The server guarantees that a
14800    /// request doesn't result in creation of duplicate commitments for at least 60
14801    /// minutes.
14802    ///
14803    /// For example, consider a situation where you make an initial request and the
14804    /// request times out. If you make the request again with the same request ID,
14805    /// the server can check if the original operation with the same request ID was
14806    /// received, and if so, will ignore the second request. This prevents clients
14807    /// from accidentally creating duplicate commitments.
14808    ///
14809    /// The request ID must be a valid UUID with the exception that zero UUID is
14810    /// not supported (00000000-0000-0000-0000-000000000000).
14811    pub request_id: std::string::String,
14812
14813    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14814}
14815
14816impl CreateManagementDnsZoneBindingRequest {
14817    pub fn new() -> Self {
14818        std::default::Default::default()
14819    }
14820
14821    /// Sets the value of [parent][crate::model::CreateManagementDnsZoneBindingRequest::parent].
14822    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14823        self.parent = v.into();
14824        self
14825    }
14826
14827    /// Sets the value of [management_dns_zone_binding][crate::model::CreateManagementDnsZoneBindingRequest::management_dns_zone_binding].
14828    pub fn set_management_dns_zone_binding<T>(mut self, v: T) -> Self
14829    where
14830        T: std::convert::Into<crate::model::ManagementDnsZoneBinding>,
14831    {
14832        self.management_dns_zone_binding = std::option::Option::Some(v.into());
14833        self
14834    }
14835
14836    /// Sets or clears the value of [management_dns_zone_binding][crate::model::CreateManagementDnsZoneBindingRequest::management_dns_zone_binding].
14837    pub fn set_or_clear_management_dns_zone_binding<T>(mut self, v: std::option::Option<T>) -> Self
14838    where
14839        T: std::convert::Into<crate::model::ManagementDnsZoneBinding>,
14840    {
14841        self.management_dns_zone_binding = v.map(|x| x.into());
14842        self
14843    }
14844
14845    /// Sets the value of [management_dns_zone_binding_id][crate::model::CreateManagementDnsZoneBindingRequest::management_dns_zone_binding_id].
14846    pub fn set_management_dns_zone_binding_id<T: std::convert::Into<std::string::String>>(
14847        mut self,
14848        v: T,
14849    ) -> Self {
14850        self.management_dns_zone_binding_id = v.into();
14851        self
14852    }
14853
14854    /// Sets the value of [request_id][crate::model::CreateManagementDnsZoneBindingRequest::request_id].
14855    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14856        self.request_id = v.into();
14857        self
14858    }
14859}
14860
14861impl wkt::message::Message for CreateManagementDnsZoneBindingRequest {
14862    fn typename() -> &'static str {
14863        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateManagementDnsZoneBindingRequest"
14864    }
14865}
14866
14867#[doc(hidden)]
14868impl<'de> serde::de::Deserialize<'de> for CreateManagementDnsZoneBindingRequest {
14869    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14870    where
14871        D: serde::Deserializer<'de>,
14872    {
14873        #[allow(non_camel_case_types)]
14874        #[doc(hidden)]
14875        #[derive(PartialEq, Eq, Hash)]
14876        enum __FieldTag {
14877            __parent,
14878            __management_dns_zone_binding,
14879            __management_dns_zone_binding_id,
14880            __request_id,
14881            Unknown(std::string::String),
14882        }
14883        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
14884            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14885            where
14886                D: serde::Deserializer<'de>,
14887            {
14888                struct Visitor;
14889                impl<'de> serde::de::Visitor<'de> for Visitor {
14890                    type Value = __FieldTag;
14891                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14892                        formatter
14893                            .write_str("a field name for CreateManagementDnsZoneBindingRequest")
14894                    }
14895                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
14896                    where
14897                        E: serde::de::Error,
14898                    {
14899                        use std::result::Result::Ok;
14900                        use std::string::ToString;
14901                        match value {
14902                            "parent" => Ok(__FieldTag::__parent),
14903                            "managementDnsZoneBinding" => {
14904                                Ok(__FieldTag::__management_dns_zone_binding)
14905                            }
14906                            "management_dns_zone_binding" => {
14907                                Ok(__FieldTag::__management_dns_zone_binding)
14908                            }
14909                            "managementDnsZoneBindingId" => {
14910                                Ok(__FieldTag::__management_dns_zone_binding_id)
14911                            }
14912                            "management_dns_zone_binding_id" => {
14913                                Ok(__FieldTag::__management_dns_zone_binding_id)
14914                            }
14915                            "requestId" => Ok(__FieldTag::__request_id),
14916                            "request_id" => Ok(__FieldTag::__request_id),
14917                            _ => Ok(__FieldTag::Unknown(value.to_string())),
14918                        }
14919                    }
14920                }
14921                deserializer.deserialize_identifier(Visitor)
14922            }
14923        }
14924        struct Visitor;
14925        impl<'de> serde::de::Visitor<'de> for Visitor {
14926            type Value = CreateManagementDnsZoneBindingRequest;
14927            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
14928                formatter.write_str("struct CreateManagementDnsZoneBindingRequest")
14929            }
14930            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
14931            where
14932                A: serde::de::MapAccess<'de>,
14933            {
14934                #[allow(unused_imports)]
14935                use serde::de::Error;
14936                use std::option::Option::Some;
14937                let mut fields = std::collections::HashSet::new();
14938                let mut result = Self::Value::new();
14939                while let Some(tag) = map.next_key::<__FieldTag>()? {
14940                    #[allow(clippy::match_single_binding)]
14941                    match tag {
14942                        __FieldTag::__parent => {
14943                            if !fields.insert(__FieldTag::__parent) {
14944                                return std::result::Result::Err(A::Error::duplicate_field(
14945                                    "multiple values for parent",
14946                                ));
14947                            }
14948                            result.parent = map
14949                                .next_value::<std::option::Option<std::string::String>>()?
14950                                .unwrap_or_default();
14951                        }
14952                        __FieldTag::__management_dns_zone_binding => {
14953                            if !fields.insert(__FieldTag::__management_dns_zone_binding) {
14954                                return std::result::Result::Err(A::Error::duplicate_field(
14955                                    "multiple values for management_dns_zone_binding",
14956                                ));
14957                            }
14958                            result.management_dns_zone_binding = map.next_value::<std::option::Option<crate::model::ManagementDnsZoneBinding>>()?
14959                                ;
14960                        }
14961                        __FieldTag::__management_dns_zone_binding_id => {
14962                            if !fields.insert(__FieldTag::__management_dns_zone_binding_id) {
14963                                return std::result::Result::Err(A::Error::duplicate_field(
14964                                    "multiple values for management_dns_zone_binding_id",
14965                                ));
14966                            }
14967                            result.management_dns_zone_binding_id = map
14968                                .next_value::<std::option::Option<std::string::String>>()?
14969                                .unwrap_or_default();
14970                        }
14971                        __FieldTag::__request_id => {
14972                            if !fields.insert(__FieldTag::__request_id) {
14973                                return std::result::Result::Err(A::Error::duplicate_field(
14974                                    "multiple values for request_id",
14975                                ));
14976                            }
14977                            result.request_id = map
14978                                .next_value::<std::option::Option<std::string::String>>()?
14979                                .unwrap_or_default();
14980                        }
14981                        __FieldTag::Unknown(key) => {
14982                            let value = map.next_value::<serde_json::Value>()?;
14983                            result._unknown_fields.insert(key, value);
14984                        }
14985                    }
14986                }
14987                std::result::Result::Ok(result)
14988            }
14989        }
14990        deserializer.deserialize_any(Visitor)
14991    }
14992}
14993
14994#[doc(hidden)]
14995impl serde::ser::Serialize for CreateManagementDnsZoneBindingRequest {
14996    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14997    where
14998        S: serde::ser::Serializer,
14999    {
15000        use serde::ser::SerializeMap;
15001        #[allow(unused_imports)]
15002        use std::option::Option::Some;
15003        let mut state = serializer.serialize_map(std::option::Option::None)?;
15004        if !self.parent.is_empty() {
15005            state.serialize_entry("parent", &self.parent)?;
15006        }
15007        if self.management_dns_zone_binding.is_some() {
15008            state.serialize_entry(
15009                "managementDnsZoneBinding",
15010                &self.management_dns_zone_binding,
15011            )?;
15012        }
15013        if !self.management_dns_zone_binding_id.is_empty() {
15014            state.serialize_entry(
15015                "managementDnsZoneBindingId",
15016                &self.management_dns_zone_binding_id,
15017            )?;
15018        }
15019        if !self.request_id.is_empty() {
15020            state.serialize_entry("requestId", &self.request_id)?;
15021        }
15022        if !self._unknown_fields.is_empty() {
15023            for (key, value) in self._unknown_fields.iter() {
15024                state.serialize_entry(key, &value)?;
15025            }
15026        }
15027        state.end()
15028    }
15029}
15030
15031/// Request message for
15032/// [VmwareEngine.UpdateManagementDnsZoneBinding][google.cloud.vmwareengine.v1.VmwareEngine.UpdateManagementDnsZoneBinding]
15033///
15034/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateManagementDnsZoneBinding]: crate::client::VmwareEngine::update_management_dns_zone_binding
15035#[derive(Clone, Debug, Default, PartialEq)]
15036#[non_exhaustive]
15037pub struct UpdateManagementDnsZoneBindingRequest {
15038    /// Required. Field mask is used to specify the fields to be overwritten in the
15039    /// `ManagementDnsZoneBinding` resource by the update.
15040    /// The fields specified in the `update_mask` are relative to the resource, not
15041    /// the full request. A field will be overwritten if it is in the mask. If the
15042    /// user does not provide a mask then all fields will be overwritten.
15043    pub update_mask: std::option::Option<wkt::FieldMask>,
15044
15045    /// Required. New values to update the management DNS zone binding with.
15046    pub management_dns_zone_binding: std::option::Option<crate::model::ManagementDnsZoneBinding>,
15047
15048    /// Optional. A request ID to identify requests. Specify a unique request ID
15049    /// so that if you must retry your request, the server will know to ignore
15050    /// the request if it has already been completed. The server guarantees that a
15051    /// request doesn't result in creation of duplicate commitments for at least 60
15052    /// minutes.
15053    ///
15054    /// For example, consider a situation where you make an initial request and the
15055    /// request times out. If you make the request again with the same request ID,
15056    /// the server can check if the original operation with the same request ID was
15057    /// received, and if so, will ignore the second request. This prevents clients
15058    /// from accidentally creating duplicate commitments.
15059    ///
15060    /// The request ID must be a valid UUID with the exception that zero UUID is
15061    /// not supported (00000000-0000-0000-0000-000000000000).
15062    pub request_id: std::string::String,
15063
15064    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15065}
15066
15067impl UpdateManagementDnsZoneBindingRequest {
15068    pub fn new() -> Self {
15069        std::default::Default::default()
15070    }
15071
15072    /// Sets the value of [update_mask][crate::model::UpdateManagementDnsZoneBindingRequest::update_mask].
15073    pub fn set_update_mask<T>(mut self, v: T) -> Self
15074    where
15075        T: std::convert::Into<wkt::FieldMask>,
15076    {
15077        self.update_mask = std::option::Option::Some(v.into());
15078        self
15079    }
15080
15081    /// Sets or clears the value of [update_mask][crate::model::UpdateManagementDnsZoneBindingRequest::update_mask].
15082    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
15083    where
15084        T: std::convert::Into<wkt::FieldMask>,
15085    {
15086        self.update_mask = v.map(|x| x.into());
15087        self
15088    }
15089
15090    /// Sets the value of [management_dns_zone_binding][crate::model::UpdateManagementDnsZoneBindingRequest::management_dns_zone_binding].
15091    pub fn set_management_dns_zone_binding<T>(mut self, v: T) -> Self
15092    where
15093        T: std::convert::Into<crate::model::ManagementDnsZoneBinding>,
15094    {
15095        self.management_dns_zone_binding = std::option::Option::Some(v.into());
15096        self
15097    }
15098
15099    /// Sets or clears the value of [management_dns_zone_binding][crate::model::UpdateManagementDnsZoneBindingRequest::management_dns_zone_binding].
15100    pub fn set_or_clear_management_dns_zone_binding<T>(mut self, v: std::option::Option<T>) -> Self
15101    where
15102        T: std::convert::Into<crate::model::ManagementDnsZoneBinding>,
15103    {
15104        self.management_dns_zone_binding = v.map(|x| x.into());
15105        self
15106    }
15107
15108    /// Sets the value of [request_id][crate::model::UpdateManagementDnsZoneBindingRequest::request_id].
15109    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15110        self.request_id = v.into();
15111        self
15112    }
15113}
15114
15115impl wkt::message::Message for UpdateManagementDnsZoneBindingRequest {
15116    fn typename() -> &'static str {
15117        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateManagementDnsZoneBindingRequest"
15118    }
15119}
15120
15121#[doc(hidden)]
15122impl<'de> serde::de::Deserialize<'de> for UpdateManagementDnsZoneBindingRequest {
15123    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15124    where
15125        D: serde::Deserializer<'de>,
15126    {
15127        #[allow(non_camel_case_types)]
15128        #[doc(hidden)]
15129        #[derive(PartialEq, Eq, Hash)]
15130        enum __FieldTag {
15131            __update_mask,
15132            __management_dns_zone_binding,
15133            __request_id,
15134            Unknown(std::string::String),
15135        }
15136        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
15137            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15138            where
15139                D: serde::Deserializer<'de>,
15140            {
15141                struct Visitor;
15142                impl<'de> serde::de::Visitor<'de> for Visitor {
15143                    type Value = __FieldTag;
15144                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15145                        formatter
15146                            .write_str("a field name for UpdateManagementDnsZoneBindingRequest")
15147                    }
15148                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
15149                    where
15150                        E: serde::de::Error,
15151                    {
15152                        use std::result::Result::Ok;
15153                        use std::string::ToString;
15154                        match value {
15155                            "updateMask" => Ok(__FieldTag::__update_mask),
15156                            "update_mask" => Ok(__FieldTag::__update_mask),
15157                            "managementDnsZoneBinding" => {
15158                                Ok(__FieldTag::__management_dns_zone_binding)
15159                            }
15160                            "management_dns_zone_binding" => {
15161                                Ok(__FieldTag::__management_dns_zone_binding)
15162                            }
15163                            "requestId" => Ok(__FieldTag::__request_id),
15164                            "request_id" => Ok(__FieldTag::__request_id),
15165                            _ => Ok(__FieldTag::Unknown(value.to_string())),
15166                        }
15167                    }
15168                }
15169                deserializer.deserialize_identifier(Visitor)
15170            }
15171        }
15172        struct Visitor;
15173        impl<'de> serde::de::Visitor<'de> for Visitor {
15174            type Value = UpdateManagementDnsZoneBindingRequest;
15175            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15176                formatter.write_str("struct UpdateManagementDnsZoneBindingRequest")
15177            }
15178            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
15179            where
15180                A: serde::de::MapAccess<'de>,
15181            {
15182                #[allow(unused_imports)]
15183                use serde::de::Error;
15184                use std::option::Option::Some;
15185                let mut fields = std::collections::HashSet::new();
15186                let mut result = Self::Value::new();
15187                while let Some(tag) = map.next_key::<__FieldTag>()? {
15188                    #[allow(clippy::match_single_binding)]
15189                    match tag {
15190                        __FieldTag::__update_mask => {
15191                            if !fields.insert(__FieldTag::__update_mask) {
15192                                return std::result::Result::Err(A::Error::duplicate_field(
15193                                    "multiple values for update_mask",
15194                                ));
15195                            }
15196                            result.update_mask =
15197                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
15198                        }
15199                        __FieldTag::__management_dns_zone_binding => {
15200                            if !fields.insert(__FieldTag::__management_dns_zone_binding) {
15201                                return std::result::Result::Err(A::Error::duplicate_field(
15202                                    "multiple values for management_dns_zone_binding",
15203                                ));
15204                            }
15205                            result.management_dns_zone_binding = map.next_value::<std::option::Option<crate::model::ManagementDnsZoneBinding>>()?
15206                                ;
15207                        }
15208                        __FieldTag::__request_id => {
15209                            if !fields.insert(__FieldTag::__request_id) {
15210                                return std::result::Result::Err(A::Error::duplicate_field(
15211                                    "multiple values for request_id",
15212                                ));
15213                            }
15214                            result.request_id = map
15215                                .next_value::<std::option::Option<std::string::String>>()?
15216                                .unwrap_or_default();
15217                        }
15218                        __FieldTag::Unknown(key) => {
15219                            let value = map.next_value::<serde_json::Value>()?;
15220                            result._unknown_fields.insert(key, value);
15221                        }
15222                    }
15223                }
15224                std::result::Result::Ok(result)
15225            }
15226        }
15227        deserializer.deserialize_any(Visitor)
15228    }
15229}
15230
15231#[doc(hidden)]
15232impl serde::ser::Serialize for UpdateManagementDnsZoneBindingRequest {
15233    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15234    where
15235        S: serde::ser::Serializer,
15236    {
15237        use serde::ser::SerializeMap;
15238        #[allow(unused_imports)]
15239        use std::option::Option::Some;
15240        let mut state = serializer.serialize_map(std::option::Option::None)?;
15241        if self.update_mask.is_some() {
15242            state.serialize_entry("updateMask", &self.update_mask)?;
15243        }
15244        if self.management_dns_zone_binding.is_some() {
15245            state.serialize_entry(
15246                "managementDnsZoneBinding",
15247                &self.management_dns_zone_binding,
15248            )?;
15249        }
15250        if !self.request_id.is_empty() {
15251            state.serialize_entry("requestId", &self.request_id)?;
15252        }
15253        if !self._unknown_fields.is_empty() {
15254            for (key, value) in self._unknown_fields.iter() {
15255                state.serialize_entry(key, &value)?;
15256            }
15257        }
15258        state.end()
15259    }
15260}
15261
15262/// Request message for
15263/// [VmwareEngine.DeleteManagementDnsZoneBinding][google.cloud.vmwareengine.v1.VmwareEngine.DeleteManagementDnsZoneBinding]
15264///
15265/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteManagementDnsZoneBinding]: crate::client::VmwareEngine::delete_management_dns_zone_binding
15266#[derive(Clone, Debug, Default, PartialEq)]
15267#[non_exhaustive]
15268pub struct DeleteManagementDnsZoneBindingRequest {
15269    /// Required. The resource name of the management DNS zone binding to delete.
15270    /// Resource names are schemeless URIs that follow the conventions in
15271    /// <https://cloud.google.com/apis/design/resource_names>.
15272    /// For example:
15273    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
15274    pub name: std::string::String,
15275
15276    /// Optional. A request ID to identify requests. Specify a unique request ID
15277    /// so that if you must retry your request, the server will know to ignore
15278    /// the request if it has already been completed. The server guarantees that a
15279    /// request doesn't result in creation of duplicate commitments for at least 60
15280    /// minutes.
15281    ///
15282    /// For example, consider a situation where you make an initial request and the
15283    /// request times out. If you make the request again with the same request
15284    /// ID, the server can check if the original operation with the same request ID
15285    /// was received, and if so, will ignore the second request. This prevents
15286    /// clients from accidentally creating duplicate commitments.
15287    ///
15288    /// The request ID must be a valid UUID with the exception that zero UUID is
15289    /// not supported (00000000-0000-0000-0000-000000000000).
15290    pub request_id: std::string::String,
15291
15292    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15293}
15294
15295impl DeleteManagementDnsZoneBindingRequest {
15296    pub fn new() -> Self {
15297        std::default::Default::default()
15298    }
15299
15300    /// Sets the value of [name][crate::model::DeleteManagementDnsZoneBindingRequest::name].
15301    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15302        self.name = v.into();
15303        self
15304    }
15305
15306    /// Sets the value of [request_id][crate::model::DeleteManagementDnsZoneBindingRequest::request_id].
15307    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15308        self.request_id = v.into();
15309        self
15310    }
15311}
15312
15313impl wkt::message::Message for DeleteManagementDnsZoneBindingRequest {
15314    fn typename() -> &'static str {
15315        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteManagementDnsZoneBindingRequest"
15316    }
15317}
15318
15319#[doc(hidden)]
15320impl<'de> serde::de::Deserialize<'de> for DeleteManagementDnsZoneBindingRequest {
15321    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15322    where
15323        D: serde::Deserializer<'de>,
15324    {
15325        #[allow(non_camel_case_types)]
15326        #[doc(hidden)]
15327        #[derive(PartialEq, Eq, Hash)]
15328        enum __FieldTag {
15329            __name,
15330            __request_id,
15331            Unknown(std::string::String),
15332        }
15333        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
15334            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15335            where
15336                D: serde::Deserializer<'de>,
15337            {
15338                struct Visitor;
15339                impl<'de> serde::de::Visitor<'de> for Visitor {
15340                    type Value = __FieldTag;
15341                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15342                        formatter
15343                            .write_str("a field name for DeleteManagementDnsZoneBindingRequest")
15344                    }
15345                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
15346                    where
15347                        E: serde::de::Error,
15348                    {
15349                        use std::result::Result::Ok;
15350                        use std::string::ToString;
15351                        match value {
15352                            "name" => Ok(__FieldTag::__name),
15353                            "requestId" => Ok(__FieldTag::__request_id),
15354                            "request_id" => Ok(__FieldTag::__request_id),
15355                            _ => Ok(__FieldTag::Unknown(value.to_string())),
15356                        }
15357                    }
15358                }
15359                deserializer.deserialize_identifier(Visitor)
15360            }
15361        }
15362        struct Visitor;
15363        impl<'de> serde::de::Visitor<'de> for Visitor {
15364            type Value = DeleteManagementDnsZoneBindingRequest;
15365            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15366                formatter.write_str("struct DeleteManagementDnsZoneBindingRequest")
15367            }
15368            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
15369            where
15370                A: serde::de::MapAccess<'de>,
15371            {
15372                #[allow(unused_imports)]
15373                use serde::de::Error;
15374                use std::option::Option::Some;
15375                let mut fields = std::collections::HashSet::new();
15376                let mut result = Self::Value::new();
15377                while let Some(tag) = map.next_key::<__FieldTag>()? {
15378                    #[allow(clippy::match_single_binding)]
15379                    match tag {
15380                        __FieldTag::__name => {
15381                            if !fields.insert(__FieldTag::__name) {
15382                                return std::result::Result::Err(A::Error::duplicate_field(
15383                                    "multiple values for name",
15384                                ));
15385                            }
15386                            result.name = map
15387                                .next_value::<std::option::Option<std::string::String>>()?
15388                                .unwrap_or_default();
15389                        }
15390                        __FieldTag::__request_id => {
15391                            if !fields.insert(__FieldTag::__request_id) {
15392                                return std::result::Result::Err(A::Error::duplicate_field(
15393                                    "multiple values for request_id",
15394                                ));
15395                            }
15396                            result.request_id = map
15397                                .next_value::<std::option::Option<std::string::String>>()?
15398                                .unwrap_or_default();
15399                        }
15400                        __FieldTag::Unknown(key) => {
15401                            let value = map.next_value::<serde_json::Value>()?;
15402                            result._unknown_fields.insert(key, value);
15403                        }
15404                    }
15405                }
15406                std::result::Result::Ok(result)
15407            }
15408        }
15409        deserializer.deserialize_any(Visitor)
15410    }
15411}
15412
15413#[doc(hidden)]
15414impl serde::ser::Serialize for DeleteManagementDnsZoneBindingRequest {
15415    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15416    where
15417        S: serde::ser::Serializer,
15418    {
15419        use serde::ser::SerializeMap;
15420        #[allow(unused_imports)]
15421        use std::option::Option::Some;
15422        let mut state = serializer.serialize_map(std::option::Option::None)?;
15423        if !self.name.is_empty() {
15424            state.serialize_entry("name", &self.name)?;
15425        }
15426        if !self.request_id.is_empty() {
15427            state.serialize_entry("requestId", &self.request_id)?;
15428        }
15429        if !self._unknown_fields.is_empty() {
15430            for (key, value) in self._unknown_fields.iter() {
15431                state.serialize_entry(key, &value)?;
15432            }
15433        }
15434        state.end()
15435    }
15436}
15437
15438/// Request message for [VmwareEngine.RepairManagementDnsZoneBindings][]
15439#[derive(Clone, Debug, Default, PartialEq)]
15440#[non_exhaustive]
15441pub struct RepairManagementDnsZoneBindingRequest {
15442    /// Required. The resource name of the management DNS zone binding to repair.
15443    /// Resource names are schemeless URIs that follow the conventions in
15444    /// <https://cloud.google.com/apis/design/resource_names>.
15445    /// For example:
15446    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
15447    pub name: std::string::String,
15448
15449    /// Optional. A request ID to identify requests. Specify a unique request ID
15450    /// so that if you must retry your request, the server will know to ignore
15451    /// the request if it has already been completed. The server guarantees that a
15452    /// request doesn't result in creation of duplicate commitments for at least 60
15453    /// minutes.
15454    ///
15455    /// For example, consider a situation where you make an initial request and the
15456    /// request times out. If you make the request again with the same request ID,
15457    /// the server can check if the original operation with the same request ID was
15458    /// received, and if so, will ignore the second request. This prevents clients
15459    /// from accidentally creating duplicate commitments.
15460    ///
15461    /// The request ID must be a valid UUID with the exception that zero UUID is
15462    /// not supported (00000000-0000-0000-0000-000000000000).
15463    pub request_id: std::string::String,
15464
15465    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15466}
15467
15468impl RepairManagementDnsZoneBindingRequest {
15469    pub fn new() -> Self {
15470        std::default::Default::default()
15471    }
15472
15473    /// Sets the value of [name][crate::model::RepairManagementDnsZoneBindingRequest::name].
15474    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15475        self.name = v.into();
15476        self
15477    }
15478
15479    /// Sets the value of [request_id][crate::model::RepairManagementDnsZoneBindingRequest::request_id].
15480    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15481        self.request_id = v.into();
15482        self
15483    }
15484}
15485
15486impl wkt::message::Message for RepairManagementDnsZoneBindingRequest {
15487    fn typename() -> &'static str {
15488        "type.googleapis.com/google.cloud.vmwareengine.v1.RepairManagementDnsZoneBindingRequest"
15489    }
15490}
15491
15492#[doc(hidden)]
15493impl<'de> serde::de::Deserialize<'de> for RepairManagementDnsZoneBindingRequest {
15494    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15495    where
15496        D: serde::Deserializer<'de>,
15497    {
15498        #[allow(non_camel_case_types)]
15499        #[doc(hidden)]
15500        #[derive(PartialEq, Eq, Hash)]
15501        enum __FieldTag {
15502            __name,
15503            __request_id,
15504            Unknown(std::string::String),
15505        }
15506        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
15507            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15508            where
15509                D: serde::Deserializer<'de>,
15510            {
15511                struct Visitor;
15512                impl<'de> serde::de::Visitor<'de> for Visitor {
15513                    type Value = __FieldTag;
15514                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15515                        formatter
15516                            .write_str("a field name for RepairManagementDnsZoneBindingRequest")
15517                    }
15518                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
15519                    where
15520                        E: serde::de::Error,
15521                    {
15522                        use std::result::Result::Ok;
15523                        use std::string::ToString;
15524                        match value {
15525                            "name" => Ok(__FieldTag::__name),
15526                            "requestId" => Ok(__FieldTag::__request_id),
15527                            "request_id" => Ok(__FieldTag::__request_id),
15528                            _ => Ok(__FieldTag::Unknown(value.to_string())),
15529                        }
15530                    }
15531                }
15532                deserializer.deserialize_identifier(Visitor)
15533            }
15534        }
15535        struct Visitor;
15536        impl<'de> serde::de::Visitor<'de> for Visitor {
15537            type Value = RepairManagementDnsZoneBindingRequest;
15538            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15539                formatter.write_str("struct RepairManagementDnsZoneBindingRequest")
15540            }
15541            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
15542            where
15543                A: serde::de::MapAccess<'de>,
15544            {
15545                #[allow(unused_imports)]
15546                use serde::de::Error;
15547                use std::option::Option::Some;
15548                let mut fields = std::collections::HashSet::new();
15549                let mut result = Self::Value::new();
15550                while let Some(tag) = map.next_key::<__FieldTag>()? {
15551                    #[allow(clippy::match_single_binding)]
15552                    match tag {
15553                        __FieldTag::__name => {
15554                            if !fields.insert(__FieldTag::__name) {
15555                                return std::result::Result::Err(A::Error::duplicate_field(
15556                                    "multiple values for name",
15557                                ));
15558                            }
15559                            result.name = map
15560                                .next_value::<std::option::Option<std::string::String>>()?
15561                                .unwrap_or_default();
15562                        }
15563                        __FieldTag::__request_id => {
15564                            if !fields.insert(__FieldTag::__request_id) {
15565                                return std::result::Result::Err(A::Error::duplicate_field(
15566                                    "multiple values for request_id",
15567                                ));
15568                            }
15569                            result.request_id = map
15570                                .next_value::<std::option::Option<std::string::String>>()?
15571                                .unwrap_or_default();
15572                        }
15573                        __FieldTag::Unknown(key) => {
15574                            let value = map.next_value::<serde_json::Value>()?;
15575                            result._unknown_fields.insert(key, value);
15576                        }
15577                    }
15578                }
15579                std::result::Result::Ok(result)
15580            }
15581        }
15582        deserializer.deserialize_any(Visitor)
15583    }
15584}
15585
15586#[doc(hidden)]
15587impl serde::ser::Serialize for RepairManagementDnsZoneBindingRequest {
15588    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15589    where
15590        S: serde::ser::Serializer,
15591    {
15592        use serde::ser::SerializeMap;
15593        #[allow(unused_imports)]
15594        use std::option::Option::Some;
15595        let mut state = serializer.serialize_map(std::option::Option::None)?;
15596        if !self.name.is_empty() {
15597            state.serialize_entry("name", &self.name)?;
15598        }
15599        if !self.request_id.is_empty() {
15600            state.serialize_entry("requestId", &self.request_id)?;
15601        }
15602        if !self._unknown_fields.is_empty() {
15603            for (key, value) in self._unknown_fields.iter() {
15604                state.serialize_entry(key, &value)?;
15605            }
15606        }
15607        state.end()
15608    }
15609}
15610
15611/// Request message for
15612/// [VmwareEngine.CreateVmwareEngineNetwork][google.cloud.vmwareengine.v1.VmwareEngine.CreateVmwareEngineNetwork]
15613///
15614/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateVmwareEngineNetwork]: crate::client::VmwareEngine::create_vmware_engine_network
15615#[derive(Clone, Debug, Default, PartialEq)]
15616#[non_exhaustive]
15617pub struct CreateVmwareEngineNetworkRequest {
15618    /// Required. The resource name of the location to create the new VMware Engine
15619    /// network in. A VMware Engine network of type
15620    /// `LEGACY` is a regional resource, and a VMware
15621    /// Engine network of type `STANDARD` is a global resource.
15622    /// Resource names are schemeless URIs that follow the conventions in
15623    /// <https://cloud.google.com/apis/design/resource_names>. For example:
15624    /// `projects/my-project/locations/global`
15625    pub parent: std::string::String,
15626
15627    /// Required. The user-provided identifier of the new VMware Engine network.
15628    /// This identifier must be unique among VMware Engine network resources
15629    /// within the parent and becomes the final token in the name URI. The
15630    /// identifier must meet the following requirements:
15631    ///
15632    /// * For networks of type LEGACY, adheres to the format:
15633    ///   `{region-id}-default`. Replace `{region-id}` with the region where you want
15634    ///   to create the VMware Engine network. For example, "us-central1-default".
15635    /// * Only contains 1-63 alphanumeric characters and hyphens
15636    /// * Begins with an alphabetical character
15637    /// * Ends with a non-hyphen character
15638    /// * Not formatted as a UUID
15639    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
15640    ///   (section 3.5)
15641    pub vmware_engine_network_id: std::string::String,
15642
15643    /// Required. The initial description of the new VMware Engine network.
15644    pub vmware_engine_network: std::option::Option<crate::model::VmwareEngineNetwork>,
15645
15646    /// Optional. A request ID to identify requests. Specify a unique request ID
15647    /// so that if you must retry your request, the server will know to ignore
15648    /// the request if it has already been completed. The server guarantees that a
15649    /// request doesn't result in creation of duplicate commitments for at least 60
15650    /// minutes.
15651    ///
15652    /// For example, consider a situation where you make an initial request and the
15653    /// request times out. If you make the request again with the same request
15654    /// ID, the server can check if original operation with the same request ID
15655    /// was received, and if so, will ignore the second request. This prevents
15656    /// clients from accidentally creating duplicate commitments.
15657    ///
15658    /// The request ID must be a valid UUID with the exception that zero UUID is
15659    /// not supported (00000000-0000-0000-0000-000000000000).
15660    pub request_id: std::string::String,
15661
15662    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15663}
15664
15665impl CreateVmwareEngineNetworkRequest {
15666    pub fn new() -> Self {
15667        std::default::Default::default()
15668    }
15669
15670    /// Sets the value of [parent][crate::model::CreateVmwareEngineNetworkRequest::parent].
15671    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15672        self.parent = v.into();
15673        self
15674    }
15675
15676    /// Sets the value of [vmware_engine_network_id][crate::model::CreateVmwareEngineNetworkRequest::vmware_engine_network_id].
15677    pub fn set_vmware_engine_network_id<T: std::convert::Into<std::string::String>>(
15678        mut self,
15679        v: T,
15680    ) -> Self {
15681        self.vmware_engine_network_id = v.into();
15682        self
15683    }
15684
15685    /// Sets the value of [vmware_engine_network][crate::model::CreateVmwareEngineNetworkRequest::vmware_engine_network].
15686    pub fn set_vmware_engine_network<T>(mut self, v: T) -> Self
15687    where
15688        T: std::convert::Into<crate::model::VmwareEngineNetwork>,
15689    {
15690        self.vmware_engine_network = std::option::Option::Some(v.into());
15691        self
15692    }
15693
15694    /// Sets or clears the value of [vmware_engine_network][crate::model::CreateVmwareEngineNetworkRequest::vmware_engine_network].
15695    pub fn set_or_clear_vmware_engine_network<T>(mut self, v: std::option::Option<T>) -> Self
15696    where
15697        T: std::convert::Into<crate::model::VmwareEngineNetwork>,
15698    {
15699        self.vmware_engine_network = v.map(|x| x.into());
15700        self
15701    }
15702
15703    /// Sets the value of [request_id][crate::model::CreateVmwareEngineNetworkRequest::request_id].
15704    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15705        self.request_id = v.into();
15706        self
15707    }
15708}
15709
15710impl wkt::message::Message for CreateVmwareEngineNetworkRequest {
15711    fn typename() -> &'static str {
15712        "type.googleapis.com/google.cloud.vmwareengine.v1.CreateVmwareEngineNetworkRequest"
15713    }
15714}
15715
15716#[doc(hidden)]
15717impl<'de> serde::de::Deserialize<'de> for CreateVmwareEngineNetworkRequest {
15718    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15719    where
15720        D: serde::Deserializer<'de>,
15721    {
15722        #[allow(non_camel_case_types)]
15723        #[doc(hidden)]
15724        #[derive(PartialEq, Eq, Hash)]
15725        enum __FieldTag {
15726            __parent,
15727            __vmware_engine_network_id,
15728            __vmware_engine_network,
15729            __request_id,
15730            Unknown(std::string::String),
15731        }
15732        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
15733            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15734            where
15735                D: serde::Deserializer<'de>,
15736            {
15737                struct Visitor;
15738                impl<'de> serde::de::Visitor<'de> for Visitor {
15739                    type Value = __FieldTag;
15740                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15741                        formatter.write_str("a field name for CreateVmwareEngineNetworkRequest")
15742                    }
15743                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
15744                    where
15745                        E: serde::de::Error,
15746                    {
15747                        use std::result::Result::Ok;
15748                        use std::string::ToString;
15749                        match value {
15750                            "parent" => Ok(__FieldTag::__parent),
15751                            "vmwareEngineNetworkId" => Ok(__FieldTag::__vmware_engine_network_id),
15752                            "vmware_engine_network_id" => {
15753                                Ok(__FieldTag::__vmware_engine_network_id)
15754                            }
15755                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
15756                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
15757                            "requestId" => Ok(__FieldTag::__request_id),
15758                            "request_id" => Ok(__FieldTag::__request_id),
15759                            _ => Ok(__FieldTag::Unknown(value.to_string())),
15760                        }
15761                    }
15762                }
15763                deserializer.deserialize_identifier(Visitor)
15764            }
15765        }
15766        struct Visitor;
15767        impl<'de> serde::de::Visitor<'de> for Visitor {
15768            type Value = CreateVmwareEngineNetworkRequest;
15769            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15770                formatter.write_str("struct CreateVmwareEngineNetworkRequest")
15771            }
15772            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
15773            where
15774                A: serde::de::MapAccess<'de>,
15775            {
15776                #[allow(unused_imports)]
15777                use serde::de::Error;
15778                use std::option::Option::Some;
15779                let mut fields = std::collections::HashSet::new();
15780                let mut result = Self::Value::new();
15781                while let Some(tag) = map.next_key::<__FieldTag>()? {
15782                    #[allow(clippy::match_single_binding)]
15783                    match tag {
15784                        __FieldTag::__parent => {
15785                            if !fields.insert(__FieldTag::__parent) {
15786                                return std::result::Result::Err(A::Error::duplicate_field(
15787                                    "multiple values for parent",
15788                                ));
15789                            }
15790                            result.parent = map
15791                                .next_value::<std::option::Option<std::string::String>>()?
15792                                .unwrap_or_default();
15793                        }
15794                        __FieldTag::__vmware_engine_network_id => {
15795                            if !fields.insert(__FieldTag::__vmware_engine_network_id) {
15796                                return std::result::Result::Err(A::Error::duplicate_field(
15797                                    "multiple values for vmware_engine_network_id",
15798                                ));
15799                            }
15800                            result.vmware_engine_network_id = map
15801                                .next_value::<std::option::Option<std::string::String>>()?
15802                                .unwrap_or_default();
15803                        }
15804                        __FieldTag::__vmware_engine_network => {
15805                            if !fields.insert(__FieldTag::__vmware_engine_network) {
15806                                return std::result::Result::Err(A::Error::duplicate_field(
15807                                    "multiple values for vmware_engine_network",
15808                                ));
15809                            }
15810                            result.vmware_engine_network = map.next_value::<std::option::Option<crate::model::VmwareEngineNetwork>>()?
15811                                ;
15812                        }
15813                        __FieldTag::__request_id => {
15814                            if !fields.insert(__FieldTag::__request_id) {
15815                                return std::result::Result::Err(A::Error::duplicate_field(
15816                                    "multiple values for request_id",
15817                                ));
15818                            }
15819                            result.request_id = map
15820                                .next_value::<std::option::Option<std::string::String>>()?
15821                                .unwrap_or_default();
15822                        }
15823                        __FieldTag::Unknown(key) => {
15824                            let value = map.next_value::<serde_json::Value>()?;
15825                            result._unknown_fields.insert(key, value);
15826                        }
15827                    }
15828                }
15829                std::result::Result::Ok(result)
15830            }
15831        }
15832        deserializer.deserialize_any(Visitor)
15833    }
15834}
15835
15836#[doc(hidden)]
15837impl serde::ser::Serialize for CreateVmwareEngineNetworkRequest {
15838    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15839    where
15840        S: serde::ser::Serializer,
15841    {
15842        use serde::ser::SerializeMap;
15843        #[allow(unused_imports)]
15844        use std::option::Option::Some;
15845        let mut state = serializer.serialize_map(std::option::Option::None)?;
15846        if !self.parent.is_empty() {
15847            state.serialize_entry("parent", &self.parent)?;
15848        }
15849        if !self.vmware_engine_network_id.is_empty() {
15850            state.serialize_entry("vmwareEngineNetworkId", &self.vmware_engine_network_id)?;
15851        }
15852        if self.vmware_engine_network.is_some() {
15853            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
15854        }
15855        if !self.request_id.is_empty() {
15856            state.serialize_entry("requestId", &self.request_id)?;
15857        }
15858        if !self._unknown_fields.is_empty() {
15859            for (key, value) in self._unknown_fields.iter() {
15860                state.serialize_entry(key, &value)?;
15861            }
15862        }
15863        state.end()
15864    }
15865}
15866
15867/// Request message for
15868/// [VmwareEngine.UpdateVmwareEngineNetwork][google.cloud.vmwareengine.v1.VmwareEngine.UpdateVmwareEngineNetwork]
15869///
15870/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdateVmwareEngineNetwork]: crate::client::VmwareEngine::update_vmware_engine_network
15871#[derive(Clone, Debug, Default, PartialEq)]
15872#[non_exhaustive]
15873pub struct UpdateVmwareEngineNetworkRequest {
15874    /// Required. VMware Engine network description.
15875    pub vmware_engine_network: std::option::Option<crate::model::VmwareEngineNetwork>,
15876
15877    /// Required. Field mask is used to specify the fields to be overwritten in the
15878    /// VMware Engine network resource by the update.
15879    /// The fields specified in the `update_mask` are relative to the resource, not
15880    /// the full request. A field will be overwritten if it is in the mask. If the
15881    /// user does not provide a mask then all fields will be overwritten. Only the
15882    /// following fields can be updated: `description`.
15883    pub update_mask: std::option::Option<wkt::FieldMask>,
15884
15885    /// Optional. A request ID to identify requests. Specify a unique request ID
15886    /// so that if you must retry your request, the server will know to ignore
15887    /// the request if it has already been completed. The server guarantees that a
15888    /// request doesn't result in creation of duplicate commitments for at least 60
15889    /// minutes.
15890    ///
15891    /// For example, consider a situation where you make an initial request and the
15892    /// request times out. If you make the request again with the same request
15893    /// ID, the server can check if original operation with the same request ID
15894    /// was received, and if so, will ignore the second request. This prevents
15895    /// clients from accidentally creating duplicate commitments.
15896    ///
15897    /// The request ID must be a valid UUID with the exception that zero UUID is
15898    /// not supported (00000000-0000-0000-0000-000000000000).
15899    pub request_id: std::string::String,
15900
15901    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15902}
15903
15904impl UpdateVmwareEngineNetworkRequest {
15905    pub fn new() -> Self {
15906        std::default::Default::default()
15907    }
15908
15909    /// Sets the value of [vmware_engine_network][crate::model::UpdateVmwareEngineNetworkRequest::vmware_engine_network].
15910    pub fn set_vmware_engine_network<T>(mut self, v: T) -> Self
15911    where
15912        T: std::convert::Into<crate::model::VmwareEngineNetwork>,
15913    {
15914        self.vmware_engine_network = std::option::Option::Some(v.into());
15915        self
15916    }
15917
15918    /// Sets or clears the value of [vmware_engine_network][crate::model::UpdateVmwareEngineNetworkRequest::vmware_engine_network].
15919    pub fn set_or_clear_vmware_engine_network<T>(mut self, v: std::option::Option<T>) -> Self
15920    where
15921        T: std::convert::Into<crate::model::VmwareEngineNetwork>,
15922    {
15923        self.vmware_engine_network = v.map(|x| x.into());
15924        self
15925    }
15926
15927    /// Sets the value of [update_mask][crate::model::UpdateVmwareEngineNetworkRequest::update_mask].
15928    pub fn set_update_mask<T>(mut self, v: T) -> Self
15929    where
15930        T: std::convert::Into<wkt::FieldMask>,
15931    {
15932        self.update_mask = std::option::Option::Some(v.into());
15933        self
15934    }
15935
15936    /// Sets or clears the value of [update_mask][crate::model::UpdateVmwareEngineNetworkRequest::update_mask].
15937    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
15938    where
15939        T: std::convert::Into<wkt::FieldMask>,
15940    {
15941        self.update_mask = v.map(|x| x.into());
15942        self
15943    }
15944
15945    /// Sets the value of [request_id][crate::model::UpdateVmwareEngineNetworkRequest::request_id].
15946    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15947        self.request_id = v.into();
15948        self
15949    }
15950}
15951
15952impl wkt::message::Message for UpdateVmwareEngineNetworkRequest {
15953    fn typename() -> &'static str {
15954        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdateVmwareEngineNetworkRequest"
15955    }
15956}
15957
15958#[doc(hidden)]
15959impl<'de> serde::de::Deserialize<'de> for UpdateVmwareEngineNetworkRequest {
15960    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15961    where
15962        D: serde::Deserializer<'de>,
15963    {
15964        #[allow(non_camel_case_types)]
15965        #[doc(hidden)]
15966        #[derive(PartialEq, Eq, Hash)]
15967        enum __FieldTag {
15968            __vmware_engine_network,
15969            __update_mask,
15970            __request_id,
15971            Unknown(std::string::String),
15972        }
15973        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
15974            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15975            where
15976                D: serde::Deserializer<'de>,
15977            {
15978                struct Visitor;
15979                impl<'de> serde::de::Visitor<'de> for Visitor {
15980                    type Value = __FieldTag;
15981                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15982                        formatter.write_str("a field name for UpdateVmwareEngineNetworkRequest")
15983                    }
15984                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
15985                    where
15986                        E: serde::de::Error,
15987                    {
15988                        use std::result::Result::Ok;
15989                        use std::string::ToString;
15990                        match value {
15991                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
15992                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
15993                            "updateMask" => Ok(__FieldTag::__update_mask),
15994                            "update_mask" => Ok(__FieldTag::__update_mask),
15995                            "requestId" => Ok(__FieldTag::__request_id),
15996                            "request_id" => Ok(__FieldTag::__request_id),
15997                            _ => Ok(__FieldTag::Unknown(value.to_string())),
15998                        }
15999                    }
16000                }
16001                deserializer.deserialize_identifier(Visitor)
16002            }
16003        }
16004        struct Visitor;
16005        impl<'de> serde::de::Visitor<'de> for Visitor {
16006            type Value = UpdateVmwareEngineNetworkRequest;
16007            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16008                formatter.write_str("struct UpdateVmwareEngineNetworkRequest")
16009            }
16010            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
16011            where
16012                A: serde::de::MapAccess<'de>,
16013            {
16014                #[allow(unused_imports)]
16015                use serde::de::Error;
16016                use std::option::Option::Some;
16017                let mut fields = std::collections::HashSet::new();
16018                let mut result = Self::Value::new();
16019                while let Some(tag) = map.next_key::<__FieldTag>()? {
16020                    #[allow(clippy::match_single_binding)]
16021                    match tag {
16022                        __FieldTag::__vmware_engine_network => {
16023                            if !fields.insert(__FieldTag::__vmware_engine_network) {
16024                                return std::result::Result::Err(A::Error::duplicate_field(
16025                                    "multiple values for vmware_engine_network",
16026                                ));
16027                            }
16028                            result.vmware_engine_network = map.next_value::<std::option::Option<crate::model::VmwareEngineNetwork>>()?
16029                                ;
16030                        }
16031                        __FieldTag::__update_mask => {
16032                            if !fields.insert(__FieldTag::__update_mask) {
16033                                return std::result::Result::Err(A::Error::duplicate_field(
16034                                    "multiple values for update_mask",
16035                                ));
16036                            }
16037                            result.update_mask =
16038                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
16039                        }
16040                        __FieldTag::__request_id => {
16041                            if !fields.insert(__FieldTag::__request_id) {
16042                                return std::result::Result::Err(A::Error::duplicate_field(
16043                                    "multiple values for request_id",
16044                                ));
16045                            }
16046                            result.request_id = map
16047                                .next_value::<std::option::Option<std::string::String>>()?
16048                                .unwrap_or_default();
16049                        }
16050                        __FieldTag::Unknown(key) => {
16051                            let value = map.next_value::<serde_json::Value>()?;
16052                            result._unknown_fields.insert(key, value);
16053                        }
16054                    }
16055                }
16056                std::result::Result::Ok(result)
16057            }
16058        }
16059        deserializer.deserialize_any(Visitor)
16060    }
16061}
16062
16063#[doc(hidden)]
16064impl serde::ser::Serialize for UpdateVmwareEngineNetworkRequest {
16065    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16066    where
16067        S: serde::ser::Serializer,
16068    {
16069        use serde::ser::SerializeMap;
16070        #[allow(unused_imports)]
16071        use std::option::Option::Some;
16072        let mut state = serializer.serialize_map(std::option::Option::None)?;
16073        if self.vmware_engine_network.is_some() {
16074            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
16075        }
16076        if self.update_mask.is_some() {
16077            state.serialize_entry("updateMask", &self.update_mask)?;
16078        }
16079        if !self.request_id.is_empty() {
16080            state.serialize_entry("requestId", &self.request_id)?;
16081        }
16082        if !self._unknown_fields.is_empty() {
16083            for (key, value) in self._unknown_fields.iter() {
16084                state.serialize_entry(key, &value)?;
16085            }
16086        }
16087        state.end()
16088    }
16089}
16090
16091/// Request message for
16092/// [VmwareEngine.DeleteVmwareEngineNetwork][google.cloud.vmwareengine.v1.VmwareEngine.DeleteVmwareEngineNetwork]
16093///
16094/// [google.cloud.vmwareengine.v1.VmwareEngine.DeleteVmwareEngineNetwork]: crate::client::VmwareEngine::delete_vmware_engine_network
16095#[derive(Clone, Debug, Default, PartialEq)]
16096#[non_exhaustive]
16097pub struct DeleteVmwareEngineNetworkRequest {
16098    /// Required. The resource name of the VMware Engine network to be deleted.
16099    /// Resource names are schemeless URIs that follow the conventions in
16100    /// <https://cloud.google.com/apis/design/resource_names>.
16101    /// For example:
16102    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
16103    pub name: std::string::String,
16104
16105    /// Optional. A request ID to identify requests. Specify a unique request ID
16106    /// so that if you must retry your request, the server will know to ignore
16107    /// the request if it has already been completed. The server guarantees that a
16108    /// request doesn't result in creation of duplicate commitments for at least 60
16109    /// minutes.
16110    ///
16111    /// For example, consider a situation where you make an initial request and the
16112    /// request times out. If you make the request again with the same request
16113    /// ID, the server can check if original operation with the same request ID
16114    /// was received, and if so, will ignore the second request. This prevents
16115    /// clients from accidentally creating duplicate commitments.
16116    ///
16117    /// The request ID must be a valid UUID with the exception that zero UUID is
16118    /// not supported (00000000-0000-0000-0000-000000000000).
16119    pub request_id: std::string::String,
16120
16121    /// Optional. Checksum used to ensure that the user-provided value is up to
16122    /// date before the server processes the request. The server compares provided
16123    /// checksum with the current checksum of the resource. If the user-provided
16124    /// value is out of date, this request returns an `ABORTED` error.
16125    pub etag: std::string::String,
16126
16127    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16128}
16129
16130impl DeleteVmwareEngineNetworkRequest {
16131    pub fn new() -> Self {
16132        std::default::Default::default()
16133    }
16134
16135    /// Sets the value of [name][crate::model::DeleteVmwareEngineNetworkRequest::name].
16136    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16137        self.name = v.into();
16138        self
16139    }
16140
16141    /// Sets the value of [request_id][crate::model::DeleteVmwareEngineNetworkRequest::request_id].
16142    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16143        self.request_id = v.into();
16144        self
16145    }
16146
16147    /// Sets the value of [etag][crate::model::DeleteVmwareEngineNetworkRequest::etag].
16148    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16149        self.etag = v.into();
16150        self
16151    }
16152}
16153
16154impl wkt::message::Message for DeleteVmwareEngineNetworkRequest {
16155    fn typename() -> &'static str {
16156        "type.googleapis.com/google.cloud.vmwareengine.v1.DeleteVmwareEngineNetworkRequest"
16157    }
16158}
16159
16160#[doc(hidden)]
16161impl<'de> serde::de::Deserialize<'de> for DeleteVmwareEngineNetworkRequest {
16162    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16163    where
16164        D: serde::Deserializer<'de>,
16165    {
16166        #[allow(non_camel_case_types)]
16167        #[doc(hidden)]
16168        #[derive(PartialEq, Eq, Hash)]
16169        enum __FieldTag {
16170            __name,
16171            __request_id,
16172            __etag,
16173            Unknown(std::string::String),
16174        }
16175        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
16176            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16177            where
16178                D: serde::Deserializer<'de>,
16179            {
16180                struct Visitor;
16181                impl<'de> serde::de::Visitor<'de> for Visitor {
16182                    type Value = __FieldTag;
16183                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16184                        formatter.write_str("a field name for DeleteVmwareEngineNetworkRequest")
16185                    }
16186                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16187                    where
16188                        E: serde::de::Error,
16189                    {
16190                        use std::result::Result::Ok;
16191                        use std::string::ToString;
16192                        match value {
16193                            "name" => Ok(__FieldTag::__name),
16194                            "requestId" => Ok(__FieldTag::__request_id),
16195                            "request_id" => Ok(__FieldTag::__request_id),
16196                            "etag" => Ok(__FieldTag::__etag),
16197                            _ => Ok(__FieldTag::Unknown(value.to_string())),
16198                        }
16199                    }
16200                }
16201                deserializer.deserialize_identifier(Visitor)
16202            }
16203        }
16204        struct Visitor;
16205        impl<'de> serde::de::Visitor<'de> for Visitor {
16206            type Value = DeleteVmwareEngineNetworkRequest;
16207            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16208                formatter.write_str("struct DeleteVmwareEngineNetworkRequest")
16209            }
16210            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
16211            where
16212                A: serde::de::MapAccess<'de>,
16213            {
16214                #[allow(unused_imports)]
16215                use serde::de::Error;
16216                use std::option::Option::Some;
16217                let mut fields = std::collections::HashSet::new();
16218                let mut result = Self::Value::new();
16219                while let Some(tag) = map.next_key::<__FieldTag>()? {
16220                    #[allow(clippy::match_single_binding)]
16221                    match tag {
16222                        __FieldTag::__name => {
16223                            if !fields.insert(__FieldTag::__name) {
16224                                return std::result::Result::Err(A::Error::duplicate_field(
16225                                    "multiple values for name",
16226                                ));
16227                            }
16228                            result.name = map
16229                                .next_value::<std::option::Option<std::string::String>>()?
16230                                .unwrap_or_default();
16231                        }
16232                        __FieldTag::__request_id => {
16233                            if !fields.insert(__FieldTag::__request_id) {
16234                                return std::result::Result::Err(A::Error::duplicate_field(
16235                                    "multiple values for request_id",
16236                                ));
16237                            }
16238                            result.request_id = map
16239                                .next_value::<std::option::Option<std::string::String>>()?
16240                                .unwrap_or_default();
16241                        }
16242                        __FieldTag::__etag => {
16243                            if !fields.insert(__FieldTag::__etag) {
16244                                return std::result::Result::Err(A::Error::duplicate_field(
16245                                    "multiple values for etag",
16246                                ));
16247                            }
16248                            result.etag = map
16249                                .next_value::<std::option::Option<std::string::String>>()?
16250                                .unwrap_or_default();
16251                        }
16252                        __FieldTag::Unknown(key) => {
16253                            let value = map.next_value::<serde_json::Value>()?;
16254                            result._unknown_fields.insert(key, value);
16255                        }
16256                    }
16257                }
16258                std::result::Result::Ok(result)
16259            }
16260        }
16261        deserializer.deserialize_any(Visitor)
16262    }
16263}
16264
16265#[doc(hidden)]
16266impl serde::ser::Serialize for DeleteVmwareEngineNetworkRequest {
16267    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16268    where
16269        S: serde::ser::Serializer,
16270    {
16271        use serde::ser::SerializeMap;
16272        #[allow(unused_imports)]
16273        use std::option::Option::Some;
16274        let mut state = serializer.serialize_map(std::option::Option::None)?;
16275        if !self.name.is_empty() {
16276            state.serialize_entry("name", &self.name)?;
16277        }
16278        if !self.request_id.is_empty() {
16279            state.serialize_entry("requestId", &self.request_id)?;
16280        }
16281        if !self.etag.is_empty() {
16282            state.serialize_entry("etag", &self.etag)?;
16283        }
16284        if !self._unknown_fields.is_empty() {
16285            for (key, value) in self._unknown_fields.iter() {
16286                state.serialize_entry(key, &value)?;
16287            }
16288        }
16289        state.end()
16290    }
16291}
16292
16293/// Request message for
16294/// [VmwareEngine.GetVmwareEngineNetwork][google.cloud.vmwareengine.v1.VmwareEngine.GetVmwareEngineNetwork]
16295///
16296/// [google.cloud.vmwareengine.v1.VmwareEngine.GetVmwareEngineNetwork]: crate::client::VmwareEngine::get_vmware_engine_network
16297#[derive(Clone, Debug, Default, PartialEq)]
16298#[non_exhaustive]
16299pub struct GetVmwareEngineNetworkRequest {
16300    /// Required. The resource name of the VMware Engine network to retrieve.
16301    /// Resource names are schemeless URIs that follow the conventions in
16302    /// <https://cloud.google.com/apis/design/resource_names>.
16303    /// For example:
16304    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
16305    pub name: std::string::String,
16306
16307    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16308}
16309
16310impl GetVmwareEngineNetworkRequest {
16311    pub fn new() -> Self {
16312        std::default::Default::default()
16313    }
16314
16315    /// Sets the value of [name][crate::model::GetVmwareEngineNetworkRequest::name].
16316    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16317        self.name = v.into();
16318        self
16319    }
16320}
16321
16322impl wkt::message::Message for GetVmwareEngineNetworkRequest {
16323    fn typename() -> &'static str {
16324        "type.googleapis.com/google.cloud.vmwareengine.v1.GetVmwareEngineNetworkRequest"
16325    }
16326}
16327
16328#[doc(hidden)]
16329impl<'de> serde::de::Deserialize<'de> for GetVmwareEngineNetworkRequest {
16330    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16331    where
16332        D: serde::Deserializer<'de>,
16333    {
16334        #[allow(non_camel_case_types)]
16335        #[doc(hidden)]
16336        #[derive(PartialEq, Eq, Hash)]
16337        enum __FieldTag {
16338            __name,
16339            Unknown(std::string::String),
16340        }
16341        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
16342            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16343            where
16344                D: serde::Deserializer<'de>,
16345            {
16346                struct Visitor;
16347                impl<'de> serde::de::Visitor<'de> for Visitor {
16348                    type Value = __FieldTag;
16349                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16350                        formatter.write_str("a field name for GetVmwareEngineNetworkRequest")
16351                    }
16352                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16353                    where
16354                        E: serde::de::Error,
16355                    {
16356                        use std::result::Result::Ok;
16357                        use std::string::ToString;
16358                        match value {
16359                            "name" => Ok(__FieldTag::__name),
16360                            _ => Ok(__FieldTag::Unknown(value.to_string())),
16361                        }
16362                    }
16363                }
16364                deserializer.deserialize_identifier(Visitor)
16365            }
16366        }
16367        struct Visitor;
16368        impl<'de> serde::de::Visitor<'de> for Visitor {
16369            type Value = GetVmwareEngineNetworkRequest;
16370            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16371                formatter.write_str("struct GetVmwareEngineNetworkRequest")
16372            }
16373            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
16374            where
16375                A: serde::de::MapAccess<'de>,
16376            {
16377                #[allow(unused_imports)]
16378                use serde::de::Error;
16379                use std::option::Option::Some;
16380                let mut fields = std::collections::HashSet::new();
16381                let mut result = Self::Value::new();
16382                while let Some(tag) = map.next_key::<__FieldTag>()? {
16383                    #[allow(clippy::match_single_binding)]
16384                    match tag {
16385                        __FieldTag::__name => {
16386                            if !fields.insert(__FieldTag::__name) {
16387                                return std::result::Result::Err(A::Error::duplicate_field(
16388                                    "multiple values for name",
16389                                ));
16390                            }
16391                            result.name = map
16392                                .next_value::<std::option::Option<std::string::String>>()?
16393                                .unwrap_or_default();
16394                        }
16395                        __FieldTag::Unknown(key) => {
16396                            let value = map.next_value::<serde_json::Value>()?;
16397                            result._unknown_fields.insert(key, value);
16398                        }
16399                    }
16400                }
16401                std::result::Result::Ok(result)
16402            }
16403        }
16404        deserializer.deserialize_any(Visitor)
16405    }
16406}
16407
16408#[doc(hidden)]
16409impl serde::ser::Serialize for GetVmwareEngineNetworkRequest {
16410    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16411    where
16412        S: serde::ser::Serializer,
16413    {
16414        use serde::ser::SerializeMap;
16415        #[allow(unused_imports)]
16416        use std::option::Option::Some;
16417        let mut state = serializer.serialize_map(std::option::Option::None)?;
16418        if !self.name.is_empty() {
16419            state.serialize_entry("name", &self.name)?;
16420        }
16421        if !self._unknown_fields.is_empty() {
16422            for (key, value) in self._unknown_fields.iter() {
16423                state.serialize_entry(key, &value)?;
16424            }
16425        }
16426        state.end()
16427    }
16428}
16429
16430/// Request message for
16431/// [VmwareEngine.ListVmwareEngineNetworks][google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks]
16432///
16433/// [google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks]: crate::client::VmwareEngine::list_vmware_engine_networks
16434#[derive(Clone, Debug, Default, PartialEq)]
16435#[non_exhaustive]
16436pub struct ListVmwareEngineNetworksRequest {
16437    /// Required. The resource name of the location to query for
16438    /// VMware Engine networks. Resource names are schemeless URIs that follow the
16439    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
16440    /// example: `projects/my-project/locations/global`
16441    pub parent: std::string::String,
16442
16443    /// The maximum number of results to return in one page.
16444    /// The maximum value is coerced to 1000.
16445    /// The default value of this field is 500.
16446    pub page_size: i32,
16447
16448    /// A page token, received from a previous `ListVmwareEngineNetworks` call.
16449    /// Provide this to retrieve the subsequent page.
16450    ///
16451    /// When paginating, all other parameters provided to
16452    /// `ListVmwareEngineNetworks` must match the call that provided the page
16453    /// token.
16454    pub page_token: std::string::String,
16455
16456    /// A filter expression that matches resources returned in the response.
16457    /// The expression must specify the field name, a comparison
16458    /// operator, and the value that you want to use for filtering. The value
16459    /// must be a string, a number, or a boolean. The comparison operator
16460    /// must be `=`, `!=`, `>`, or `<`.
16461    ///
16462    /// For example, if you are filtering a list of network peerings, you can
16463    /// exclude the ones named `example-network` by specifying
16464    /// `name != "example-network"`.
16465    ///
16466    /// To filter on multiple expressions, provide each separate expression within
16467    /// parentheses. For example:
16468    ///
16469    /// ```norust
16470    /// (name = "example-network")
16471    /// (createTime > "2021-04-12T08:15:10.40Z")
16472    /// ```
16473    ///
16474    /// By default, each expression is an `AND` expression. However, you
16475    /// can include `AND` and `OR` expressions explicitly.
16476    /// For example:
16477    ///
16478    /// ```norust
16479    /// (name = "example-network-1") AND
16480    /// (createTime > "2021-04-12T08:15:10.40Z") OR
16481    /// (name = "example-network-2")
16482    /// ```
16483    pub filter: std::string::String,
16484
16485    /// Sorts list results by a certain order. By default, returned results
16486    /// are ordered by `name` in ascending order.
16487    /// You can also sort results in descending order based on the `name` value
16488    /// using `orderBy="name desc"`.
16489    /// Currently, only ordering by `name` is supported.
16490    pub order_by: std::string::String,
16491
16492    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16493}
16494
16495impl ListVmwareEngineNetworksRequest {
16496    pub fn new() -> Self {
16497        std::default::Default::default()
16498    }
16499
16500    /// Sets the value of [parent][crate::model::ListVmwareEngineNetworksRequest::parent].
16501    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16502        self.parent = v.into();
16503        self
16504    }
16505
16506    /// Sets the value of [page_size][crate::model::ListVmwareEngineNetworksRequest::page_size].
16507    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
16508        self.page_size = v.into();
16509        self
16510    }
16511
16512    /// Sets the value of [page_token][crate::model::ListVmwareEngineNetworksRequest::page_token].
16513    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16514        self.page_token = v.into();
16515        self
16516    }
16517
16518    /// Sets the value of [filter][crate::model::ListVmwareEngineNetworksRequest::filter].
16519    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16520        self.filter = v.into();
16521        self
16522    }
16523
16524    /// Sets the value of [order_by][crate::model::ListVmwareEngineNetworksRequest::order_by].
16525    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16526        self.order_by = v.into();
16527        self
16528    }
16529}
16530
16531impl wkt::message::Message for ListVmwareEngineNetworksRequest {
16532    fn typename() -> &'static str {
16533        "type.googleapis.com/google.cloud.vmwareengine.v1.ListVmwareEngineNetworksRequest"
16534    }
16535}
16536
16537#[doc(hidden)]
16538impl<'de> serde::de::Deserialize<'de> for ListVmwareEngineNetworksRequest {
16539    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16540    where
16541        D: serde::Deserializer<'de>,
16542    {
16543        #[allow(non_camel_case_types)]
16544        #[doc(hidden)]
16545        #[derive(PartialEq, Eq, Hash)]
16546        enum __FieldTag {
16547            __parent,
16548            __page_size,
16549            __page_token,
16550            __filter,
16551            __order_by,
16552            Unknown(std::string::String),
16553        }
16554        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
16555            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16556            where
16557                D: serde::Deserializer<'de>,
16558            {
16559                struct Visitor;
16560                impl<'de> serde::de::Visitor<'de> for Visitor {
16561                    type Value = __FieldTag;
16562                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16563                        formatter.write_str("a field name for ListVmwareEngineNetworksRequest")
16564                    }
16565                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16566                    where
16567                        E: serde::de::Error,
16568                    {
16569                        use std::result::Result::Ok;
16570                        use std::string::ToString;
16571                        match value {
16572                            "parent" => Ok(__FieldTag::__parent),
16573                            "pageSize" => Ok(__FieldTag::__page_size),
16574                            "page_size" => Ok(__FieldTag::__page_size),
16575                            "pageToken" => Ok(__FieldTag::__page_token),
16576                            "page_token" => Ok(__FieldTag::__page_token),
16577                            "filter" => Ok(__FieldTag::__filter),
16578                            "orderBy" => Ok(__FieldTag::__order_by),
16579                            "order_by" => Ok(__FieldTag::__order_by),
16580                            _ => Ok(__FieldTag::Unknown(value.to_string())),
16581                        }
16582                    }
16583                }
16584                deserializer.deserialize_identifier(Visitor)
16585            }
16586        }
16587        struct Visitor;
16588        impl<'de> serde::de::Visitor<'de> for Visitor {
16589            type Value = ListVmwareEngineNetworksRequest;
16590            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16591                formatter.write_str("struct ListVmwareEngineNetworksRequest")
16592            }
16593            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
16594            where
16595                A: serde::de::MapAccess<'de>,
16596            {
16597                #[allow(unused_imports)]
16598                use serde::de::Error;
16599                use std::option::Option::Some;
16600                let mut fields = std::collections::HashSet::new();
16601                let mut result = Self::Value::new();
16602                while let Some(tag) = map.next_key::<__FieldTag>()? {
16603                    #[allow(clippy::match_single_binding)]
16604                    match tag {
16605                        __FieldTag::__parent => {
16606                            if !fields.insert(__FieldTag::__parent) {
16607                                return std::result::Result::Err(A::Error::duplicate_field(
16608                                    "multiple values for parent",
16609                                ));
16610                            }
16611                            result.parent = map
16612                                .next_value::<std::option::Option<std::string::String>>()?
16613                                .unwrap_or_default();
16614                        }
16615                        __FieldTag::__page_size => {
16616                            if !fields.insert(__FieldTag::__page_size) {
16617                                return std::result::Result::Err(A::Error::duplicate_field(
16618                                    "multiple values for page_size",
16619                                ));
16620                            }
16621                            struct __With(std::option::Option<i32>);
16622                            impl<'de> serde::de::Deserialize<'de> for __With {
16623                                fn deserialize<D>(
16624                                    deserializer: D,
16625                                ) -> std::result::Result<Self, D::Error>
16626                                where
16627                                    D: serde::de::Deserializer<'de>,
16628                                {
16629                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
16630                                }
16631                            }
16632                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
16633                        }
16634                        __FieldTag::__page_token => {
16635                            if !fields.insert(__FieldTag::__page_token) {
16636                                return std::result::Result::Err(A::Error::duplicate_field(
16637                                    "multiple values for page_token",
16638                                ));
16639                            }
16640                            result.page_token = map
16641                                .next_value::<std::option::Option<std::string::String>>()?
16642                                .unwrap_or_default();
16643                        }
16644                        __FieldTag::__filter => {
16645                            if !fields.insert(__FieldTag::__filter) {
16646                                return std::result::Result::Err(A::Error::duplicate_field(
16647                                    "multiple values for filter",
16648                                ));
16649                            }
16650                            result.filter = map
16651                                .next_value::<std::option::Option<std::string::String>>()?
16652                                .unwrap_or_default();
16653                        }
16654                        __FieldTag::__order_by => {
16655                            if !fields.insert(__FieldTag::__order_by) {
16656                                return std::result::Result::Err(A::Error::duplicate_field(
16657                                    "multiple values for order_by",
16658                                ));
16659                            }
16660                            result.order_by = map
16661                                .next_value::<std::option::Option<std::string::String>>()?
16662                                .unwrap_or_default();
16663                        }
16664                        __FieldTag::Unknown(key) => {
16665                            let value = map.next_value::<serde_json::Value>()?;
16666                            result._unknown_fields.insert(key, value);
16667                        }
16668                    }
16669                }
16670                std::result::Result::Ok(result)
16671            }
16672        }
16673        deserializer.deserialize_any(Visitor)
16674    }
16675}
16676
16677#[doc(hidden)]
16678impl serde::ser::Serialize for ListVmwareEngineNetworksRequest {
16679    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16680    where
16681        S: serde::ser::Serializer,
16682    {
16683        use serde::ser::SerializeMap;
16684        #[allow(unused_imports)]
16685        use std::option::Option::Some;
16686        let mut state = serializer.serialize_map(std::option::Option::None)?;
16687        if !self.parent.is_empty() {
16688            state.serialize_entry("parent", &self.parent)?;
16689        }
16690        if !wkt::internal::is_default(&self.page_size) {
16691            struct __With<'a>(&'a i32);
16692            impl<'a> serde::ser::Serialize for __With<'a> {
16693                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16694                where
16695                    S: serde::ser::Serializer,
16696                {
16697                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
16698                }
16699            }
16700            state.serialize_entry("pageSize", &__With(&self.page_size))?;
16701        }
16702        if !self.page_token.is_empty() {
16703            state.serialize_entry("pageToken", &self.page_token)?;
16704        }
16705        if !self.filter.is_empty() {
16706            state.serialize_entry("filter", &self.filter)?;
16707        }
16708        if !self.order_by.is_empty() {
16709            state.serialize_entry("orderBy", &self.order_by)?;
16710        }
16711        if !self._unknown_fields.is_empty() {
16712            for (key, value) in self._unknown_fields.iter() {
16713                state.serialize_entry(key, &value)?;
16714            }
16715        }
16716        state.end()
16717    }
16718}
16719
16720/// Response message for
16721/// [VmwareEngine.ListVmwareEngineNetworks][google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks]
16722///
16723/// [google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks]: crate::client::VmwareEngine::list_vmware_engine_networks
16724#[derive(Clone, Debug, Default, PartialEq)]
16725#[non_exhaustive]
16726pub struct ListVmwareEngineNetworksResponse {
16727    /// A list of VMware Engine networks.
16728    pub vmware_engine_networks: std::vec::Vec<crate::model::VmwareEngineNetwork>,
16729
16730    /// A token, which can be sent as `page_token` to retrieve the next page.
16731    /// If this field is omitted, there are no subsequent pages.
16732    pub next_page_token: std::string::String,
16733
16734    /// Unreachable resources.
16735    pub unreachable: std::vec::Vec<std::string::String>,
16736
16737    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16738}
16739
16740impl ListVmwareEngineNetworksResponse {
16741    pub fn new() -> Self {
16742        std::default::Default::default()
16743    }
16744
16745    /// Sets the value of [vmware_engine_networks][crate::model::ListVmwareEngineNetworksResponse::vmware_engine_networks].
16746    pub fn set_vmware_engine_networks<T, V>(mut self, v: T) -> Self
16747    where
16748        T: std::iter::IntoIterator<Item = V>,
16749        V: std::convert::Into<crate::model::VmwareEngineNetwork>,
16750    {
16751        use std::iter::Iterator;
16752        self.vmware_engine_networks = v.into_iter().map(|i| i.into()).collect();
16753        self
16754    }
16755
16756    /// Sets the value of [next_page_token][crate::model::ListVmwareEngineNetworksResponse::next_page_token].
16757    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16758        self.next_page_token = v.into();
16759        self
16760    }
16761
16762    /// Sets the value of [unreachable][crate::model::ListVmwareEngineNetworksResponse::unreachable].
16763    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
16764    where
16765        T: std::iter::IntoIterator<Item = V>,
16766        V: std::convert::Into<std::string::String>,
16767    {
16768        use std::iter::Iterator;
16769        self.unreachable = v.into_iter().map(|i| i.into()).collect();
16770        self
16771    }
16772}
16773
16774impl wkt::message::Message for ListVmwareEngineNetworksResponse {
16775    fn typename() -> &'static str {
16776        "type.googleapis.com/google.cloud.vmwareengine.v1.ListVmwareEngineNetworksResponse"
16777    }
16778}
16779
16780#[doc(hidden)]
16781impl gax::paginator::internal::PageableResponse for ListVmwareEngineNetworksResponse {
16782    type PageItem = crate::model::VmwareEngineNetwork;
16783
16784    fn items(self) -> std::vec::Vec<Self::PageItem> {
16785        self.vmware_engine_networks
16786    }
16787
16788    fn next_page_token(&self) -> std::string::String {
16789        use std::clone::Clone;
16790        self.next_page_token.clone()
16791    }
16792}
16793
16794#[doc(hidden)]
16795impl<'de> serde::de::Deserialize<'de> for ListVmwareEngineNetworksResponse {
16796    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16797    where
16798        D: serde::Deserializer<'de>,
16799    {
16800        #[allow(non_camel_case_types)]
16801        #[doc(hidden)]
16802        #[derive(PartialEq, Eq, Hash)]
16803        enum __FieldTag {
16804            __vmware_engine_networks,
16805            __next_page_token,
16806            __unreachable,
16807            Unknown(std::string::String),
16808        }
16809        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
16810            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16811            where
16812                D: serde::Deserializer<'de>,
16813            {
16814                struct Visitor;
16815                impl<'de> serde::de::Visitor<'de> for Visitor {
16816                    type Value = __FieldTag;
16817                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16818                        formatter.write_str("a field name for ListVmwareEngineNetworksResponse")
16819                    }
16820                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16821                    where
16822                        E: serde::de::Error,
16823                    {
16824                        use std::result::Result::Ok;
16825                        use std::string::ToString;
16826                        match value {
16827                            "vmwareEngineNetworks" => Ok(__FieldTag::__vmware_engine_networks),
16828                            "vmware_engine_networks" => Ok(__FieldTag::__vmware_engine_networks),
16829                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
16830                            "next_page_token" => Ok(__FieldTag::__next_page_token),
16831                            "unreachable" => Ok(__FieldTag::__unreachable),
16832                            _ => Ok(__FieldTag::Unknown(value.to_string())),
16833                        }
16834                    }
16835                }
16836                deserializer.deserialize_identifier(Visitor)
16837            }
16838        }
16839        struct Visitor;
16840        impl<'de> serde::de::Visitor<'de> for Visitor {
16841            type Value = ListVmwareEngineNetworksResponse;
16842            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
16843                formatter.write_str("struct ListVmwareEngineNetworksResponse")
16844            }
16845            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
16846            where
16847                A: serde::de::MapAccess<'de>,
16848            {
16849                #[allow(unused_imports)]
16850                use serde::de::Error;
16851                use std::option::Option::Some;
16852                let mut fields = std::collections::HashSet::new();
16853                let mut result = Self::Value::new();
16854                while let Some(tag) = map.next_key::<__FieldTag>()? {
16855                    #[allow(clippy::match_single_binding)]
16856                    match tag {
16857                        __FieldTag::__vmware_engine_networks => {
16858                            if !fields.insert(__FieldTag::__vmware_engine_networks) {
16859                                return std::result::Result::Err(A::Error::duplicate_field(
16860                                    "multiple values for vmware_engine_networks",
16861                                ));
16862                            }
16863                            result.vmware_engine_networks = map
16864                                .next_value::<std::option::Option<
16865                                    std::vec::Vec<crate::model::VmwareEngineNetwork>,
16866                                >>()?
16867                                .unwrap_or_default();
16868                        }
16869                        __FieldTag::__next_page_token => {
16870                            if !fields.insert(__FieldTag::__next_page_token) {
16871                                return std::result::Result::Err(A::Error::duplicate_field(
16872                                    "multiple values for next_page_token",
16873                                ));
16874                            }
16875                            result.next_page_token = map
16876                                .next_value::<std::option::Option<std::string::String>>()?
16877                                .unwrap_or_default();
16878                        }
16879                        __FieldTag::__unreachable => {
16880                            if !fields.insert(__FieldTag::__unreachable) {
16881                                return std::result::Result::Err(A::Error::duplicate_field(
16882                                    "multiple values for unreachable",
16883                                ));
16884                            }
16885                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
16886                        }
16887                        __FieldTag::Unknown(key) => {
16888                            let value = map.next_value::<serde_json::Value>()?;
16889                            result._unknown_fields.insert(key, value);
16890                        }
16891                    }
16892                }
16893                std::result::Result::Ok(result)
16894            }
16895        }
16896        deserializer.deserialize_any(Visitor)
16897    }
16898}
16899
16900#[doc(hidden)]
16901impl serde::ser::Serialize for ListVmwareEngineNetworksResponse {
16902    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16903    where
16904        S: serde::ser::Serializer,
16905    {
16906        use serde::ser::SerializeMap;
16907        #[allow(unused_imports)]
16908        use std::option::Option::Some;
16909        let mut state = serializer.serialize_map(std::option::Option::None)?;
16910        if !self.vmware_engine_networks.is_empty() {
16911            state.serialize_entry("vmwareEngineNetworks", &self.vmware_engine_networks)?;
16912        }
16913        if !self.next_page_token.is_empty() {
16914            state.serialize_entry("nextPageToken", &self.next_page_token)?;
16915        }
16916        if !self.unreachable.is_empty() {
16917            state.serialize_entry("unreachable", &self.unreachable)?;
16918        }
16919        if !self._unknown_fields.is_empty() {
16920            for (key, value) in self._unknown_fields.iter() {
16921                state.serialize_entry(key, &value)?;
16922            }
16923        }
16924        state.end()
16925    }
16926}
16927
16928/// Request message for
16929/// [VmwareEngine.CreatePrivateConnection][google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateConnection]
16930///
16931/// [google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateConnection]: crate::client::VmwareEngine::create_private_connection
16932#[derive(Clone, Debug, Default, PartialEq)]
16933#[non_exhaustive]
16934pub struct CreatePrivateConnectionRequest {
16935    /// Required. The resource name of the location to create the new private
16936    /// connection in. Private connection is a regional resource.
16937    /// Resource names are schemeless URIs that follow the conventions in
16938    /// <https://cloud.google.com/apis/design/resource_names>. For example:
16939    /// `projects/my-project/locations/us-central1`
16940    pub parent: std::string::String,
16941
16942    /// Required. The user-provided identifier of the new private connection.
16943    /// This identifier must be unique among private connection resources
16944    /// within the parent and becomes the final token in the name URI. The
16945    /// identifier must meet the following requirements:
16946    ///
16947    /// * Only contains 1-63 alphanumeric characters and hyphens
16948    /// * Begins with an alphabetical character
16949    /// * Ends with a non-hyphen character
16950    /// * Not formatted as a UUID
16951    /// * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034)
16952    ///   (section 3.5)
16953    pub private_connection_id: std::string::String,
16954
16955    /// Required. The initial description of the new private connection.
16956    pub private_connection: std::option::Option<crate::model::PrivateConnection>,
16957
16958    /// Optional. A request ID to identify requests. Specify a unique request ID
16959    /// so that if you must retry your request, the server will know to ignore
16960    /// the request if it has already been completed. The server guarantees that a
16961    /// request doesn't result in creation of duplicate commitments for at least 60
16962    /// minutes.
16963    ///
16964    /// For example, consider a situation where you make an initial request and the
16965    /// request times out. If you make the request again with the same request
16966    /// ID, the server can check if original operation with the same request ID
16967    /// was received, and if so, will ignore the second request. This prevents
16968    /// clients from accidentally creating duplicate commitments.
16969    ///
16970    /// The request ID must be a valid UUID with the exception that zero UUID is
16971    /// not supported (00000000-0000-0000-0000-000000000000).
16972    pub request_id: std::string::String,
16973
16974    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16975}
16976
16977impl CreatePrivateConnectionRequest {
16978    pub fn new() -> Self {
16979        std::default::Default::default()
16980    }
16981
16982    /// Sets the value of [parent][crate::model::CreatePrivateConnectionRequest::parent].
16983    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
16984        self.parent = v.into();
16985        self
16986    }
16987
16988    /// Sets the value of [private_connection_id][crate::model::CreatePrivateConnectionRequest::private_connection_id].
16989    pub fn set_private_connection_id<T: std::convert::Into<std::string::String>>(
16990        mut self,
16991        v: T,
16992    ) -> Self {
16993        self.private_connection_id = v.into();
16994        self
16995    }
16996
16997    /// Sets the value of [private_connection][crate::model::CreatePrivateConnectionRequest::private_connection].
16998    pub fn set_private_connection<T>(mut self, v: T) -> Self
16999    where
17000        T: std::convert::Into<crate::model::PrivateConnection>,
17001    {
17002        self.private_connection = std::option::Option::Some(v.into());
17003        self
17004    }
17005
17006    /// Sets or clears the value of [private_connection][crate::model::CreatePrivateConnectionRequest::private_connection].
17007    pub fn set_or_clear_private_connection<T>(mut self, v: std::option::Option<T>) -> Self
17008    where
17009        T: std::convert::Into<crate::model::PrivateConnection>,
17010    {
17011        self.private_connection = v.map(|x| x.into());
17012        self
17013    }
17014
17015    /// Sets the value of [request_id][crate::model::CreatePrivateConnectionRequest::request_id].
17016    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17017        self.request_id = v.into();
17018        self
17019    }
17020}
17021
17022impl wkt::message::Message for CreatePrivateConnectionRequest {
17023    fn typename() -> &'static str {
17024        "type.googleapis.com/google.cloud.vmwareengine.v1.CreatePrivateConnectionRequest"
17025    }
17026}
17027
17028#[doc(hidden)]
17029impl<'de> serde::de::Deserialize<'de> for CreatePrivateConnectionRequest {
17030    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17031    where
17032        D: serde::Deserializer<'de>,
17033    {
17034        #[allow(non_camel_case_types)]
17035        #[doc(hidden)]
17036        #[derive(PartialEq, Eq, Hash)]
17037        enum __FieldTag {
17038            __parent,
17039            __private_connection_id,
17040            __private_connection,
17041            __request_id,
17042            Unknown(std::string::String),
17043        }
17044        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
17045            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17046            where
17047                D: serde::Deserializer<'de>,
17048            {
17049                struct Visitor;
17050                impl<'de> serde::de::Visitor<'de> for Visitor {
17051                    type Value = __FieldTag;
17052                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17053                        formatter.write_str("a field name for CreatePrivateConnectionRequest")
17054                    }
17055                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
17056                    where
17057                        E: serde::de::Error,
17058                    {
17059                        use std::result::Result::Ok;
17060                        use std::string::ToString;
17061                        match value {
17062                            "parent" => Ok(__FieldTag::__parent),
17063                            "privateConnectionId" => Ok(__FieldTag::__private_connection_id),
17064                            "private_connection_id" => Ok(__FieldTag::__private_connection_id),
17065                            "privateConnection" => Ok(__FieldTag::__private_connection),
17066                            "private_connection" => Ok(__FieldTag::__private_connection),
17067                            "requestId" => Ok(__FieldTag::__request_id),
17068                            "request_id" => Ok(__FieldTag::__request_id),
17069                            _ => Ok(__FieldTag::Unknown(value.to_string())),
17070                        }
17071                    }
17072                }
17073                deserializer.deserialize_identifier(Visitor)
17074            }
17075        }
17076        struct Visitor;
17077        impl<'de> serde::de::Visitor<'de> for Visitor {
17078            type Value = CreatePrivateConnectionRequest;
17079            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17080                formatter.write_str("struct CreatePrivateConnectionRequest")
17081            }
17082            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
17083            where
17084                A: serde::de::MapAccess<'de>,
17085            {
17086                #[allow(unused_imports)]
17087                use serde::de::Error;
17088                use std::option::Option::Some;
17089                let mut fields = std::collections::HashSet::new();
17090                let mut result = Self::Value::new();
17091                while let Some(tag) = map.next_key::<__FieldTag>()? {
17092                    #[allow(clippy::match_single_binding)]
17093                    match tag {
17094                        __FieldTag::__parent => {
17095                            if !fields.insert(__FieldTag::__parent) {
17096                                return std::result::Result::Err(A::Error::duplicate_field(
17097                                    "multiple values for parent",
17098                                ));
17099                            }
17100                            result.parent = map
17101                                .next_value::<std::option::Option<std::string::String>>()?
17102                                .unwrap_or_default();
17103                        }
17104                        __FieldTag::__private_connection_id => {
17105                            if !fields.insert(__FieldTag::__private_connection_id) {
17106                                return std::result::Result::Err(A::Error::duplicate_field(
17107                                    "multiple values for private_connection_id",
17108                                ));
17109                            }
17110                            result.private_connection_id = map
17111                                .next_value::<std::option::Option<std::string::String>>()?
17112                                .unwrap_or_default();
17113                        }
17114                        __FieldTag::__private_connection => {
17115                            if !fields.insert(__FieldTag::__private_connection) {
17116                                return std::result::Result::Err(A::Error::duplicate_field(
17117                                    "multiple values for private_connection",
17118                                ));
17119                            }
17120                            result.private_connection = map
17121                                .next_value::<std::option::Option<crate::model::PrivateConnection>>(
17122                                )?;
17123                        }
17124                        __FieldTag::__request_id => {
17125                            if !fields.insert(__FieldTag::__request_id) {
17126                                return std::result::Result::Err(A::Error::duplicate_field(
17127                                    "multiple values for request_id",
17128                                ));
17129                            }
17130                            result.request_id = map
17131                                .next_value::<std::option::Option<std::string::String>>()?
17132                                .unwrap_or_default();
17133                        }
17134                        __FieldTag::Unknown(key) => {
17135                            let value = map.next_value::<serde_json::Value>()?;
17136                            result._unknown_fields.insert(key, value);
17137                        }
17138                    }
17139                }
17140                std::result::Result::Ok(result)
17141            }
17142        }
17143        deserializer.deserialize_any(Visitor)
17144    }
17145}
17146
17147#[doc(hidden)]
17148impl serde::ser::Serialize for CreatePrivateConnectionRequest {
17149    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17150    where
17151        S: serde::ser::Serializer,
17152    {
17153        use serde::ser::SerializeMap;
17154        #[allow(unused_imports)]
17155        use std::option::Option::Some;
17156        let mut state = serializer.serialize_map(std::option::Option::None)?;
17157        if !self.parent.is_empty() {
17158            state.serialize_entry("parent", &self.parent)?;
17159        }
17160        if !self.private_connection_id.is_empty() {
17161            state.serialize_entry("privateConnectionId", &self.private_connection_id)?;
17162        }
17163        if self.private_connection.is_some() {
17164            state.serialize_entry("privateConnection", &self.private_connection)?;
17165        }
17166        if !self.request_id.is_empty() {
17167            state.serialize_entry("requestId", &self.request_id)?;
17168        }
17169        if !self._unknown_fields.is_empty() {
17170            for (key, value) in self._unknown_fields.iter() {
17171                state.serialize_entry(key, &value)?;
17172            }
17173        }
17174        state.end()
17175    }
17176}
17177
17178/// Request message for
17179/// [VmwareEngine.GetPrivateConnection][google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateConnection]
17180///
17181/// [google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateConnection]: crate::client::VmwareEngine::get_private_connection
17182#[derive(Clone, Debug, Default, PartialEq)]
17183#[non_exhaustive]
17184pub struct GetPrivateConnectionRequest {
17185    /// Required. The resource name of the private connection to retrieve.
17186    /// Resource names are schemeless URIs that follow the conventions in
17187    /// <https://cloud.google.com/apis/design/resource_names>.
17188    /// For example:
17189    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
17190    pub name: std::string::String,
17191
17192    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
17193}
17194
17195impl GetPrivateConnectionRequest {
17196    pub fn new() -> Self {
17197        std::default::Default::default()
17198    }
17199
17200    /// Sets the value of [name][crate::model::GetPrivateConnectionRequest::name].
17201    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17202        self.name = v.into();
17203        self
17204    }
17205}
17206
17207impl wkt::message::Message for GetPrivateConnectionRequest {
17208    fn typename() -> &'static str {
17209        "type.googleapis.com/google.cloud.vmwareengine.v1.GetPrivateConnectionRequest"
17210    }
17211}
17212
17213#[doc(hidden)]
17214impl<'de> serde::de::Deserialize<'de> for GetPrivateConnectionRequest {
17215    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17216    where
17217        D: serde::Deserializer<'de>,
17218    {
17219        #[allow(non_camel_case_types)]
17220        #[doc(hidden)]
17221        #[derive(PartialEq, Eq, Hash)]
17222        enum __FieldTag {
17223            __name,
17224            Unknown(std::string::String),
17225        }
17226        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
17227            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17228            where
17229                D: serde::Deserializer<'de>,
17230            {
17231                struct Visitor;
17232                impl<'de> serde::de::Visitor<'de> for Visitor {
17233                    type Value = __FieldTag;
17234                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17235                        formatter.write_str("a field name for GetPrivateConnectionRequest")
17236                    }
17237                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
17238                    where
17239                        E: serde::de::Error,
17240                    {
17241                        use std::result::Result::Ok;
17242                        use std::string::ToString;
17243                        match value {
17244                            "name" => Ok(__FieldTag::__name),
17245                            _ => Ok(__FieldTag::Unknown(value.to_string())),
17246                        }
17247                    }
17248                }
17249                deserializer.deserialize_identifier(Visitor)
17250            }
17251        }
17252        struct Visitor;
17253        impl<'de> serde::de::Visitor<'de> for Visitor {
17254            type Value = GetPrivateConnectionRequest;
17255            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17256                formatter.write_str("struct GetPrivateConnectionRequest")
17257            }
17258            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
17259            where
17260                A: serde::de::MapAccess<'de>,
17261            {
17262                #[allow(unused_imports)]
17263                use serde::de::Error;
17264                use std::option::Option::Some;
17265                let mut fields = std::collections::HashSet::new();
17266                let mut result = Self::Value::new();
17267                while let Some(tag) = map.next_key::<__FieldTag>()? {
17268                    #[allow(clippy::match_single_binding)]
17269                    match tag {
17270                        __FieldTag::__name => {
17271                            if !fields.insert(__FieldTag::__name) {
17272                                return std::result::Result::Err(A::Error::duplicate_field(
17273                                    "multiple values for name",
17274                                ));
17275                            }
17276                            result.name = map
17277                                .next_value::<std::option::Option<std::string::String>>()?
17278                                .unwrap_or_default();
17279                        }
17280                        __FieldTag::Unknown(key) => {
17281                            let value = map.next_value::<serde_json::Value>()?;
17282                            result._unknown_fields.insert(key, value);
17283                        }
17284                    }
17285                }
17286                std::result::Result::Ok(result)
17287            }
17288        }
17289        deserializer.deserialize_any(Visitor)
17290    }
17291}
17292
17293#[doc(hidden)]
17294impl serde::ser::Serialize for GetPrivateConnectionRequest {
17295    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17296    where
17297        S: serde::ser::Serializer,
17298    {
17299        use serde::ser::SerializeMap;
17300        #[allow(unused_imports)]
17301        use std::option::Option::Some;
17302        let mut state = serializer.serialize_map(std::option::Option::None)?;
17303        if !self.name.is_empty() {
17304            state.serialize_entry("name", &self.name)?;
17305        }
17306        if !self._unknown_fields.is_empty() {
17307            for (key, value) in self._unknown_fields.iter() {
17308                state.serialize_entry(key, &value)?;
17309            }
17310        }
17311        state.end()
17312    }
17313}
17314
17315/// Request message for
17316/// [VmwareEngine.ListPrivateConnections][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections]
17317///
17318/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections]: crate::client::VmwareEngine::list_private_connections
17319#[derive(Clone, Debug, Default, PartialEq)]
17320#[non_exhaustive]
17321pub struct ListPrivateConnectionsRequest {
17322    /// Required. The resource name of the location to query for
17323    /// private connections. Resource names are schemeless URIs that follow the
17324    /// conventions in <https://cloud.google.com/apis/design/resource_names>. For
17325    /// example: `projects/my-project/locations/us-central1`
17326    pub parent: std::string::String,
17327
17328    /// The maximum number of private connections to return in one page.
17329    /// The maximum value is coerced to 1000.
17330    /// The default value of this field is 500.
17331    pub page_size: i32,
17332
17333    /// A page token, received from a previous `ListPrivateConnections` call.
17334    /// Provide this to retrieve the subsequent page.
17335    ///
17336    /// When paginating, all other parameters provided to
17337    /// `ListPrivateConnections` must match the call that provided the page
17338    /// token.
17339    pub page_token: std::string::String,
17340
17341    /// A filter expression that matches resources returned in the response.
17342    /// The expression must specify the field name, a comparison
17343    /// operator, and the value that you want to use for filtering. The value
17344    /// must be a string, a number, or a boolean. The comparison operator
17345    /// must be `=`, `!=`, `>`, or `<`.
17346    ///
17347    /// For example, if you are filtering a list of private connections, you can
17348    /// exclude the ones named `example-connection` by specifying
17349    /// `name != "example-connection"`.
17350    ///
17351    /// To filter on multiple expressions, provide each separate expression within
17352    /// parentheses. For example:
17353    ///
17354    /// ```norust
17355    /// (name = "example-connection")
17356    /// (createTime > "2022-09-22T08:15:10.40Z")
17357    /// ```
17358    ///
17359    /// By default, each expression is an `AND` expression. However, you
17360    /// can include `AND` and `OR` expressions explicitly.
17361    /// For example:
17362    ///
17363    /// ```norust
17364    /// (name = "example-connection-1") AND
17365    /// (createTime > "2021-04-12T08:15:10.40Z") OR
17366    /// (name = "example-connection-2")
17367    /// ```
17368    pub filter: std::string::String,
17369
17370    /// Sorts list results by a certain order. By default, returned results
17371    /// are ordered by `name` in ascending order.
17372    /// You can also sort results in descending order based on the `name` value
17373    /// using `orderBy="name desc"`.
17374    /// Currently, only ordering by `name` is supported.
17375    pub order_by: std::string::String,
17376
17377    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
17378}
17379
17380impl ListPrivateConnectionsRequest {
17381    pub fn new() -> Self {
17382        std::default::Default::default()
17383    }
17384
17385    /// Sets the value of [parent][crate::model::ListPrivateConnectionsRequest::parent].
17386    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17387        self.parent = v.into();
17388        self
17389    }
17390
17391    /// Sets the value of [page_size][crate::model::ListPrivateConnectionsRequest::page_size].
17392    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
17393        self.page_size = v.into();
17394        self
17395    }
17396
17397    /// Sets the value of [page_token][crate::model::ListPrivateConnectionsRequest::page_token].
17398    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17399        self.page_token = v.into();
17400        self
17401    }
17402
17403    /// Sets the value of [filter][crate::model::ListPrivateConnectionsRequest::filter].
17404    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17405        self.filter = v.into();
17406        self
17407    }
17408
17409    /// Sets the value of [order_by][crate::model::ListPrivateConnectionsRequest::order_by].
17410    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17411        self.order_by = v.into();
17412        self
17413    }
17414}
17415
17416impl wkt::message::Message for ListPrivateConnectionsRequest {
17417    fn typename() -> &'static str {
17418        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateConnectionsRequest"
17419    }
17420}
17421
17422#[doc(hidden)]
17423impl<'de> serde::de::Deserialize<'de> for ListPrivateConnectionsRequest {
17424    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17425    where
17426        D: serde::Deserializer<'de>,
17427    {
17428        #[allow(non_camel_case_types)]
17429        #[doc(hidden)]
17430        #[derive(PartialEq, Eq, Hash)]
17431        enum __FieldTag {
17432            __parent,
17433            __page_size,
17434            __page_token,
17435            __filter,
17436            __order_by,
17437            Unknown(std::string::String),
17438        }
17439        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
17440            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17441            where
17442                D: serde::Deserializer<'de>,
17443            {
17444                struct Visitor;
17445                impl<'de> serde::de::Visitor<'de> for Visitor {
17446                    type Value = __FieldTag;
17447                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17448                        formatter.write_str("a field name for ListPrivateConnectionsRequest")
17449                    }
17450                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
17451                    where
17452                        E: serde::de::Error,
17453                    {
17454                        use std::result::Result::Ok;
17455                        use std::string::ToString;
17456                        match value {
17457                            "parent" => Ok(__FieldTag::__parent),
17458                            "pageSize" => Ok(__FieldTag::__page_size),
17459                            "page_size" => Ok(__FieldTag::__page_size),
17460                            "pageToken" => Ok(__FieldTag::__page_token),
17461                            "page_token" => Ok(__FieldTag::__page_token),
17462                            "filter" => Ok(__FieldTag::__filter),
17463                            "orderBy" => Ok(__FieldTag::__order_by),
17464                            "order_by" => Ok(__FieldTag::__order_by),
17465                            _ => Ok(__FieldTag::Unknown(value.to_string())),
17466                        }
17467                    }
17468                }
17469                deserializer.deserialize_identifier(Visitor)
17470            }
17471        }
17472        struct Visitor;
17473        impl<'de> serde::de::Visitor<'de> for Visitor {
17474            type Value = ListPrivateConnectionsRequest;
17475            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17476                formatter.write_str("struct ListPrivateConnectionsRequest")
17477            }
17478            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
17479            where
17480                A: serde::de::MapAccess<'de>,
17481            {
17482                #[allow(unused_imports)]
17483                use serde::de::Error;
17484                use std::option::Option::Some;
17485                let mut fields = std::collections::HashSet::new();
17486                let mut result = Self::Value::new();
17487                while let Some(tag) = map.next_key::<__FieldTag>()? {
17488                    #[allow(clippy::match_single_binding)]
17489                    match tag {
17490                        __FieldTag::__parent => {
17491                            if !fields.insert(__FieldTag::__parent) {
17492                                return std::result::Result::Err(A::Error::duplicate_field(
17493                                    "multiple values for parent",
17494                                ));
17495                            }
17496                            result.parent = map
17497                                .next_value::<std::option::Option<std::string::String>>()?
17498                                .unwrap_or_default();
17499                        }
17500                        __FieldTag::__page_size => {
17501                            if !fields.insert(__FieldTag::__page_size) {
17502                                return std::result::Result::Err(A::Error::duplicate_field(
17503                                    "multiple values for page_size",
17504                                ));
17505                            }
17506                            struct __With(std::option::Option<i32>);
17507                            impl<'de> serde::de::Deserialize<'de> for __With {
17508                                fn deserialize<D>(
17509                                    deserializer: D,
17510                                ) -> std::result::Result<Self, D::Error>
17511                                where
17512                                    D: serde::de::Deserializer<'de>,
17513                                {
17514                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
17515                                }
17516                            }
17517                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
17518                        }
17519                        __FieldTag::__page_token => {
17520                            if !fields.insert(__FieldTag::__page_token) {
17521                                return std::result::Result::Err(A::Error::duplicate_field(
17522                                    "multiple values for page_token",
17523                                ));
17524                            }
17525                            result.page_token = map
17526                                .next_value::<std::option::Option<std::string::String>>()?
17527                                .unwrap_or_default();
17528                        }
17529                        __FieldTag::__filter => {
17530                            if !fields.insert(__FieldTag::__filter) {
17531                                return std::result::Result::Err(A::Error::duplicate_field(
17532                                    "multiple values for filter",
17533                                ));
17534                            }
17535                            result.filter = map
17536                                .next_value::<std::option::Option<std::string::String>>()?
17537                                .unwrap_or_default();
17538                        }
17539                        __FieldTag::__order_by => {
17540                            if !fields.insert(__FieldTag::__order_by) {
17541                                return std::result::Result::Err(A::Error::duplicate_field(
17542                                    "multiple values for order_by",
17543                                ));
17544                            }
17545                            result.order_by = map
17546                                .next_value::<std::option::Option<std::string::String>>()?
17547                                .unwrap_or_default();
17548                        }
17549                        __FieldTag::Unknown(key) => {
17550                            let value = map.next_value::<serde_json::Value>()?;
17551                            result._unknown_fields.insert(key, value);
17552                        }
17553                    }
17554                }
17555                std::result::Result::Ok(result)
17556            }
17557        }
17558        deserializer.deserialize_any(Visitor)
17559    }
17560}
17561
17562#[doc(hidden)]
17563impl serde::ser::Serialize for ListPrivateConnectionsRequest {
17564    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17565    where
17566        S: serde::ser::Serializer,
17567    {
17568        use serde::ser::SerializeMap;
17569        #[allow(unused_imports)]
17570        use std::option::Option::Some;
17571        let mut state = serializer.serialize_map(std::option::Option::None)?;
17572        if !self.parent.is_empty() {
17573            state.serialize_entry("parent", &self.parent)?;
17574        }
17575        if !wkt::internal::is_default(&self.page_size) {
17576            struct __With<'a>(&'a i32);
17577            impl<'a> serde::ser::Serialize for __With<'a> {
17578                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17579                where
17580                    S: serde::ser::Serializer,
17581                {
17582                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
17583                }
17584            }
17585            state.serialize_entry("pageSize", &__With(&self.page_size))?;
17586        }
17587        if !self.page_token.is_empty() {
17588            state.serialize_entry("pageToken", &self.page_token)?;
17589        }
17590        if !self.filter.is_empty() {
17591            state.serialize_entry("filter", &self.filter)?;
17592        }
17593        if !self.order_by.is_empty() {
17594            state.serialize_entry("orderBy", &self.order_by)?;
17595        }
17596        if !self._unknown_fields.is_empty() {
17597            for (key, value) in self._unknown_fields.iter() {
17598                state.serialize_entry(key, &value)?;
17599            }
17600        }
17601        state.end()
17602    }
17603}
17604
17605/// Response message for
17606/// [VmwareEngine.ListPrivateConnections][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections]
17607///
17608/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections]: crate::client::VmwareEngine::list_private_connections
17609#[derive(Clone, Debug, Default, PartialEq)]
17610#[non_exhaustive]
17611pub struct ListPrivateConnectionsResponse {
17612    /// A list of private connections.
17613    pub private_connections: std::vec::Vec<crate::model::PrivateConnection>,
17614
17615    /// A token, which can be sent as `page_token` to retrieve the next page.
17616    /// If this field is omitted, there are no subsequent pages.
17617    pub next_page_token: std::string::String,
17618
17619    /// Unreachable resources.
17620    pub unreachable: std::vec::Vec<std::string::String>,
17621
17622    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
17623}
17624
17625impl ListPrivateConnectionsResponse {
17626    pub fn new() -> Self {
17627        std::default::Default::default()
17628    }
17629
17630    /// Sets the value of [private_connections][crate::model::ListPrivateConnectionsResponse::private_connections].
17631    pub fn set_private_connections<T, V>(mut self, v: T) -> Self
17632    where
17633        T: std::iter::IntoIterator<Item = V>,
17634        V: std::convert::Into<crate::model::PrivateConnection>,
17635    {
17636        use std::iter::Iterator;
17637        self.private_connections = v.into_iter().map(|i| i.into()).collect();
17638        self
17639    }
17640
17641    /// Sets the value of [next_page_token][crate::model::ListPrivateConnectionsResponse::next_page_token].
17642    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17643        self.next_page_token = v.into();
17644        self
17645    }
17646
17647    /// Sets the value of [unreachable][crate::model::ListPrivateConnectionsResponse::unreachable].
17648    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
17649    where
17650        T: std::iter::IntoIterator<Item = V>,
17651        V: std::convert::Into<std::string::String>,
17652    {
17653        use std::iter::Iterator;
17654        self.unreachable = v.into_iter().map(|i| i.into()).collect();
17655        self
17656    }
17657}
17658
17659impl wkt::message::Message for ListPrivateConnectionsResponse {
17660    fn typename() -> &'static str {
17661        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateConnectionsResponse"
17662    }
17663}
17664
17665#[doc(hidden)]
17666impl gax::paginator::internal::PageableResponse for ListPrivateConnectionsResponse {
17667    type PageItem = crate::model::PrivateConnection;
17668
17669    fn items(self) -> std::vec::Vec<Self::PageItem> {
17670        self.private_connections
17671    }
17672
17673    fn next_page_token(&self) -> std::string::String {
17674        use std::clone::Clone;
17675        self.next_page_token.clone()
17676    }
17677}
17678
17679#[doc(hidden)]
17680impl<'de> serde::de::Deserialize<'de> for ListPrivateConnectionsResponse {
17681    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17682    where
17683        D: serde::Deserializer<'de>,
17684    {
17685        #[allow(non_camel_case_types)]
17686        #[doc(hidden)]
17687        #[derive(PartialEq, Eq, Hash)]
17688        enum __FieldTag {
17689            __private_connections,
17690            __next_page_token,
17691            __unreachable,
17692            Unknown(std::string::String),
17693        }
17694        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
17695            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17696            where
17697                D: serde::Deserializer<'de>,
17698            {
17699                struct Visitor;
17700                impl<'de> serde::de::Visitor<'de> for Visitor {
17701                    type Value = __FieldTag;
17702                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17703                        formatter.write_str("a field name for ListPrivateConnectionsResponse")
17704                    }
17705                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
17706                    where
17707                        E: serde::de::Error,
17708                    {
17709                        use std::result::Result::Ok;
17710                        use std::string::ToString;
17711                        match value {
17712                            "privateConnections" => Ok(__FieldTag::__private_connections),
17713                            "private_connections" => Ok(__FieldTag::__private_connections),
17714                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
17715                            "next_page_token" => Ok(__FieldTag::__next_page_token),
17716                            "unreachable" => Ok(__FieldTag::__unreachable),
17717                            _ => Ok(__FieldTag::Unknown(value.to_string())),
17718                        }
17719                    }
17720                }
17721                deserializer.deserialize_identifier(Visitor)
17722            }
17723        }
17724        struct Visitor;
17725        impl<'de> serde::de::Visitor<'de> for Visitor {
17726            type Value = ListPrivateConnectionsResponse;
17727            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17728                formatter.write_str("struct ListPrivateConnectionsResponse")
17729            }
17730            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
17731            where
17732                A: serde::de::MapAccess<'de>,
17733            {
17734                #[allow(unused_imports)]
17735                use serde::de::Error;
17736                use std::option::Option::Some;
17737                let mut fields = std::collections::HashSet::new();
17738                let mut result = Self::Value::new();
17739                while let Some(tag) = map.next_key::<__FieldTag>()? {
17740                    #[allow(clippy::match_single_binding)]
17741                    match tag {
17742                        __FieldTag::__private_connections => {
17743                            if !fields.insert(__FieldTag::__private_connections) {
17744                                return std::result::Result::Err(A::Error::duplicate_field(
17745                                    "multiple values for private_connections",
17746                                ));
17747                            }
17748                            result.private_connections =
17749                                map.next_value::<std::option::Option<
17750                                    std::vec::Vec<crate::model::PrivateConnection>,
17751                                >>()?
17752                                .unwrap_or_default();
17753                        }
17754                        __FieldTag::__next_page_token => {
17755                            if !fields.insert(__FieldTag::__next_page_token) {
17756                                return std::result::Result::Err(A::Error::duplicate_field(
17757                                    "multiple values for next_page_token",
17758                                ));
17759                            }
17760                            result.next_page_token = map
17761                                .next_value::<std::option::Option<std::string::String>>()?
17762                                .unwrap_or_default();
17763                        }
17764                        __FieldTag::__unreachable => {
17765                            if !fields.insert(__FieldTag::__unreachable) {
17766                                return std::result::Result::Err(A::Error::duplicate_field(
17767                                    "multiple values for unreachable",
17768                                ));
17769                            }
17770                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
17771                        }
17772                        __FieldTag::Unknown(key) => {
17773                            let value = map.next_value::<serde_json::Value>()?;
17774                            result._unknown_fields.insert(key, value);
17775                        }
17776                    }
17777                }
17778                std::result::Result::Ok(result)
17779            }
17780        }
17781        deserializer.deserialize_any(Visitor)
17782    }
17783}
17784
17785#[doc(hidden)]
17786impl serde::ser::Serialize for ListPrivateConnectionsResponse {
17787    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17788    where
17789        S: serde::ser::Serializer,
17790    {
17791        use serde::ser::SerializeMap;
17792        #[allow(unused_imports)]
17793        use std::option::Option::Some;
17794        let mut state = serializer.serialize_map(std::option::Option::None)?;
17795        if !self.private_connections.is_empty() {
17796            state.serialize_entry("privateConnections", &self.private_connections)?;
17797        }
17798        if !self.next_page_token.is_empty() {
17799            state.serialize_entry("nextPageToken", &self.next_page_token)?;
17800        }
17801        if !self.unreachable.is_empty() {
17802            state.serialize_entry("unreachable", &self.unreachable)?;
17803        }
17804        if !self._unknown_fields.is_empty() {
17805            for (key, value) in self._unknown_fields.iter() {
17806                state.serialize_entry(key, &value)?;
17807            }
17808        }
17809        state.end()
17810    }
17811}
17812
17813/// Request message for
17814/// [VmwareEngine.UpdatePrivateConnection][google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateConnection]
17815///
17816/// [google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateConnection]: crate::client::VmwareEngine::update_private_connection
17817#[derive(Clone, Debug, Default, PartialEq)]
17818#[non_exhaustive]
17819pub struct UpdatePrivateConnectionRequest {
17820    /// Required. Private connection description.
17821    pub private_connection: std::option::Option<crate::model::PrivateConnection>,
17822
17823    /// Required. Field mask is used to specify the fields to be overwritten in the
17824    /// `PrivateConnection` resource by the update.
17825    /// The fields specified in the `update_mask` are relative to the resource, not
17826    /// the full request. A field will be overwritten if it is in the mask. If the
17827    /// user does not provide a mask then all fields will be overwritten.
17828    pub update_mask: std::option::Option<wkt::FieldMask>,
17829
17830    /// Optional. A request ID to identify requests. Specify a unique request ID
17831    /// so that if you must retry your request, the server will know to ignore
17832    /// the request if it has already been completed. The server guarantees that a
17833    /// request doesn't result in creation of duplicate commitments for at least 60
17834    /// minutes.
17835    ///
17836    /// For example, consider a situation where you make an initial request and the
17837    /// request times out. If you make the request again with the same request
17838    /// ID, the server can check if original operation with the same request ID
17839    /// was received, and if so, will ignore the second request. This prevents
17840    /// clients from accidentally creating duplicate commitments.
17841    ///
17842    /// The request ID must be a valid UUID with the exception that zero UUID is
17843    /// not supported (00000000-0000-0000-0000-000000000000).
17844    pub request_id: std::string::String,
17845
17846    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
17847}
17848
17849impl UpdatePrivateConnectionRequest {
17850    pub fn new() -> Self {
17851        std::default::Default::default()
17852    }
17853
17854    /// Sets the value of [private_connection][crate::model::UpdatePrivateConnectionRequest::private_connection].
17855    pub fn set_private_connection<T>(mut self, v: T) -> Self
17856    where
17857        T: std::convert::Into<crate::model::PrivateConnection>,
17858    {
17859        self.private_connection = std::option::Option::Some(v.into());
17860        self
17861    }
17862
17863    /// Sets or clears the value of [private_connection][crate::model::UpdatePrivateConnectionRequest::private_connection].
17864    pub fn set_or_clear_private_connection<T>(mut self, v: std::option::Option<T>) -> Self
17865    where
17866        T: std::convert::Into<crate::model::PrivateConnection>,
17867    {
17868        self.private_connection = v.map(|x| x.into());
17869        self
17870    }
17871
17872    /// Sets the value of [update_mask][crate::model::UpdatePrivateConnectionRequest::update_mask].
17873    pub fn set_update_mask<T>(mut self, v: T) -> Self
17874    where
17875        T: std::convert::Into<wkt::FieldMask>,
17876    {
17877        self.update_mask = std::option::Option::Some(v.into());
17878        self
17879    }
17880
17881    /// Sets or clears the value of [update_mask][crate::model::UpdatePrivateConnectionRequest::update_mask].
17882    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
17883    where
17884        T: std::convert::Into<wkt::FieldMask>,
17885    {
17886        self.update_mask = v.map(|x| x.into());
17887        self
17888    }
17889
17890    /// Sets the value of [request_id][crate::model::UpdatePrivateConnectionRequest::request_id].
17891    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
17892        self.request_id = v.into();
17893        self
17894    }
17895}
17896
17897impl wkt::message::Message for UpdatePrivateConnectionRequest {
17898    fn typename() -> &'static str {
17899        "type.googleapis.com/google.cloud.vmwareengine.v1.UpdatePrivateConnectionRequest"
17900    }
17901}
17902
17903#[doc(hidden)]
17904impl<'de> serde::de::Deserialize<'de> for UpdatePrivateConnectionRequest {
17905    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17906    where
17907        D: serde::Deserializer<'de>,
17908    {
17909        #[allow(non_camel_case_types)]
17910        #[doc(hidden)]
17911        #[derive(PartialEq, Eq, Hash)]
17912        enum __FieldTag {
17913            __private_connection,
17914            __update_mask,
17915            __request_id,
17916            Unknown(std::string::String),
17917        }
17918        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
17919            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17920            where
17921                D: serde::Deserializer<'de>,
17922            {
17923                struct Visitor;
17924                impl<'de> serde::de::Visitor<'de> for Visitor {
17925                    type Value = __FieldTag;
17926                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17927                        formatter.write_str("a field name for UpdatePrivateConnectionRequest")
17928                    }
17929                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
17930                    where
17931                        E: serde::de::Error,
17932                    {
17933                        use std::result::Result::Ok;
17934                        use std::string::ToString;
17935                        match value {
17936                            "privateConnection" => Ok(__FieldTag::__private_connection),
17937                            "private_connection" => Ok(__FieldTag::__private_connection),
17938                            "updateMask" => Ok(__FieldTag::__update_mask),
17939                            "update_mask" => Ok(__FieldTag::__update_mask),
17940                            "requestId" => Ok(__FieldTag::__request_id),
17941                            "request_id" => Ok(__FieldTag::__request_id),
17942                            _ => Ok(__FieldTag::Unknown(value.to_string())),
17943                        }
17944                    }
17945                }
17946                deserializer.deserialize_identifier(Visitor)
17947            }
17948        }
17949        struct Visitor;
17950        impl<'de> serde::de::Visitor<'de> for Visitor {
17951            type Value = UpdatePrivateConnectionRequest;
17952            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
17953                formatter.write_str("struct UpdatePrivateConnectionRequest")
17954            }
17955            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
17956            where
17957                A: serde::de::MapAccess<'de>,
17958            {
17959                #[allow(unused_imports)]
17960                use serde::de::Error;
17961                use std::option::Option::Some;
17962                let mut fields = std::collections::HashSet::new();
17963                let mut result = Self::Value::new();
17964                while let Some(tag) = map.next_key::<__FieldTag>()? {
17965                    #[allow(clippy::match_single_binding)]
17966                    match tag {
17967                        __FieldTag::__private_connection => {
17968                            if !fields.insert(__FieldTag::__private_connection) {
17969                                return std::result::Result::Err(A::Error::duplicate_field(
17970                                    "multiple values for private_connection",
17971                                ));
17972                            }
17973                            result.private_connection = map
17974                                .next_value::<std::option::Option<crate::model::PrivateConnection>>(
17975                                )?;
17976                        }
17977                        __FieldTag::__update_mask => {
17978                            if !fields.insert(__FieldTag::__update_mask) {
17979                                return std::result::Result::Err(A::Error::duplicate_field(
17980                                    "multiple values for update_mask",
17981                                ));
17982                            }
17983                            result.update_mask =
17984                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
17985                        }
17986                        __FieldTag::__request_id => {
17987                            if !fields.insert(__FieldTag::__request_id) {
17988                                return std::result::Result::Err(A::Error::duplicate_field(
17989                                    "multiple values for request_id",
17990                                ));
17991                            }
17992                            result.request_id = map
17993                                .next_value::<std::option::Option<std::string::String>>()?
17994                                .unwrap_or_default();
17995                        }
17996                        __FieldTag::Unknown(key) => {
17997                            let value = map.next_value::<serde_json::Value>()?;
17998                            result._unknown_fields.insert(key, value);
17999                        }
18000                    }
18001                }
18002                std::result::Result::Ok(result)
18003            }
18004        }
18005        deserializer.deserialize_any(Visitor)
18006    }
18007}
18008
18009#[doc(hidden)]
18010impl serde::ser::Serialize for UpdatePrivateConnectionRequest {
18011    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18012    where
18013        S: serde::ser::Serializer,
18014    {
18015        use serde::ser::SerializeMap;
18016        #[allow(unused_imports)]
18017        use std::option::Option::Some;
18018        let mut state = serializer.serialize_map(std::option::Option::None)?;
18019        if self.private_connection.is_some() {
18020            state.serialize_entry("privateConnection", &self.private_connection)?;
18021        }
18022        if self.update_mask.is_some() {
18023            state.serialize_entry("updateMask", &self.update_mask)?;
18024        }
18025        if !self.request_id.is_empty() {
18026            state.serialize_entry("requestId", &self.request_id)?;
18027        }
18028        if !self._unknown_fields.is_empty() {
18029            for (key, value) in self._unknown_fields.iter() {
18030                state.serialize_entry(key, &value)?;
18031            }
18032        }
18033        state.end()
18034    }
18035}
18036
18037/// Request message for
18038/// [VmwareEngine.DeletePrivateConnection][google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateConnection]
18039///
18040/// [google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateConnection]: crate::client::VmwareEngine::delete_private_connection
18041#[derive(Clone, Debug, Default, PartialEq)]
18042#[non_exhaustive]
18043pub struct DeletePrivateConnectionRequest {
18044    /// Required. The resource name of the private connection to be deleted.
18045    /// Resource names are schemeless URIs that follow the conventions in
18046    /// <https://cloud.google.com/apis/design/resource_names>.
18047    /// For example:
18048    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
18049    pub name: std::string::String,
18050
18051    /// Optional. A request ID to identify requests. Specify a unique request ID
18052    /// so that if you must retry your request, the server will know to ignore
18053    /// the request if it has already been completed. The server guarantees that a
18054    /// request doesn't result in creation of duplicate commitments for at least 60
18055    /// minutes.
18056    ///
18057    /// For example, consider a situation where you make an initial request and the
18058    /// request times out. If you make the request again with the same request
18059    /// ID, the server can check if original operation with the same request ID
18060    /// was received, and if so, will ignore the second request. This prevents
18061    /// clients from accidentally creating duplicate commitments.
18062    ///
18063    /// The request ID must be a valid UUID with the exception that zero UUID is
18064    /// not supported (00000000-0000-0000-0000-000000000000).
18065    pub request_id: std::string::String,
18066
18067    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
18068}
18069
18070impl DeletePrivateConnectionRequest {
18071    pub fn new() -> Self {
18072        std::default::Default::default()
18073    }
18074
18075    /// Sets the value of [name][crate::model::DeletePrivateConnectionRequest::name].
18076    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18077        self.name = v.into();
18078        self
18079    }
18080
18081    /// Sets the value of [request_id][crate::model::DeletePrivateConnectionRequest::request_id].
18082    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18083        self.request_id = v.into();
18084        self
18085    }
18086}
18087
18088impl wkt::message::Message for DeletePrivateConnectionRequest {
18089    fn typename() -> &'static str {
18090        "type.googleapis.com/google.cloud.vmwareengine.v1.DeletePrivateConnectionRequest"
18091    }
18092}
18093
18094#[doc(hidden)]
18095impl<'de> serde::de::Deserialize<'de> for DeletePrivateConnectionRequest {
18096    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18097    where
18098        D: serde::Deserializer<'de>,
18099    {
18100        #[allow(non_camel_case_types)]
18101        #[doc(hidden)]
18102        #[derive(PartialEq, Eq, Hash)]
18103        enum __FieldTag {
18104            __name,
18105            __request_id,
18106            Unknown(std::string::String),
18107        }
18108        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
18109            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18110            where
18111                D: serde::Deserializer<'de>,
18112            {
18113                struct Visitor;
18114                impl<'de> serde::de::Visitor<'de> for Visitor {
18115                    type Value = __FieldTag;
18116                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18117                        formatter.write_str("a field name for DeletePrivateConnectionRequest")
18118                    }
18119                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18120                    where
18121                        E: serde::de::Error,
18122                    {
18123                        use std::result::Result::Ok;
18124                        use std::string::ToString;
18125                        match value {
18126                            "name" => Ok(__FieldTag::__name),
18127                            "requestId" => Ok(__FieldTag::__request_id),
18128                            "request_id" => Ok(__FieldTag::__request_id),
18129                            _ => Ok(__FieldTag::Unknown(value.to_string())),
18130                        }
18131                    }
18132                }
18133                deserializer.deserialize_identifier(Visitor)
18134            }
18135        }
18136        struct Visitor;
18137        impl<'de> serde::de::Visitor<'de> for Visitor {
18138            type Value = DeletePrivateConnectionRequest;
18139            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18140                formatter.write_str("struct DeletePrivateConnectionRequest")
18141            }
18142            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
18143            where
18144                A: serde::de::MapAccess<'de>,
18145            {
18146                #[allow(unused_imports)]
18147                use serde::de::Error;
18148                use std::option::Option::Some;
18149                let mut fields = std::collections::HashSet::new();
18150                let mut result = Self::Value::new();
18151                while let Some(tag) = map.next_key::<__FieldTag>()? {
18152                    #[allow(clippy::match_single_binding)]
18153                    match tag {
18154                        __FieldTag::__name => {
18155                            if !fields.insert(__FieldTag::__name) {
18156                                return std::result::Result::Err(A::Error::duplicate_field(
18157                                    "multiple values for name",
18158                                ));
18159                            }
18160                            result.name = map
18161                                .next_value::<std::option::Option<std::string::String>>()?
18162                                .unwrap_or_default();
18163                        }
18164                        __FieldTag::__request_id => {
18165                            if !fields.insert(__FieldTag::__request_id) {
18166                                return std::result::Result::Err(A::Error::duplicate_field(
18167                                    "multiple values for request_id",
18168                                ));
18169                            }
18170                            result.request_id = map
18171                                .next_value::<std::option::Option<std::string::String>>()?
18172                                .unwrap_or_default();
18173                        }
18174                        __FieldTag::Unknown(key) => {
18175                            let value = map.next_value::<serde_json::Value>()?;
18176                            result._unknown_fields.insert(key, value);
18177                        }
18178                    }
18179                }
18180                std::result::Result::Ok(result)
18181            }
18182        }
18183        deserializer.deserialize_any(Visitor)
18184    }
18185}
18186
18187#[doc(hidden)]
18188impl serde::ser::Serialize for DeletePrivateConnectionRequest {
18189    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18190    where
18191        S: serde::ser::Serializer,
18192    {
18193        use serde::ser::SerializeMap;
18194        #[allow(unused_imports)]
18195        use std::option::Option::Some;
18196        let mut state = serializer.serialize_map(std::option::Option::None)?;
18197        if !self.name.is_empty() {
18198            state.serialize_entry("name", &self.name)?;
18199        }
18200        if !self.request_id.is_empty() {
18201            state.serialize_entry("requestId", &self.request_id)?;
18202        }
18203        if !self._unknown_fields.is_empty() {
18204            for (key, value) in self._unknown_fields.iter() {
18205                state.serialize_entry(key, &value)?;
18206            }
18207        }
18208        state.end()
18209    }
18210}
18211
18212/// Request message for
18213/// [VmwareEngine.ListPrivateConnectionPeeringRoutes][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes]
18214///
18215/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes]: crate::client::VmwareEngine::list_private_connection_peering_routes
18216#[derive(Clone, Debug, Default, PartialEq)]
18217#[non_exhaustive]
18218pub struct ListPrivateConnectionPeeringRoutesRequest {
18219    /// Required. The resource name of the private connection to retrieve peering
18220    /// routes from. Resource names are schemeless URIs that follow the conventions
18221    /// in <https://cloud.google.com/apis/design/resource_names>. For example:
18222    /// `projects/my-project/locations/us-west1/privateConnections/my-connection`
18223    pub parent: std::string::String,
18224
18225    /// The maximum number of peering routes to return in one page.
18226    /// The service may return fewer than this value.
18227    /// The maximum value is coerced to 1000.
18228    /// The default value of this field is 500.
18229    pub page_size: i32,
18230
18231    /// A page token, received from a previous `ListPrivateConnectionPeeringRoutes`
18232    /// call. Provide this to retrieve the subsequent page. When paginating, all
18233    /// other parameters provided to `ListPrivateConnectionPeeringRoutes` must
18234    /// match the call that provided the page token.
18235    pub page_token: std::string::String,
18236
18237    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
18238}
18239
18240impl ListPrivateConnectionPeeringRoutesRequest {
18241    pub fn new() -> Self {
18242        std::default::Default::default()
18243    }
18244
18245    /// Sets the value of [parent][crate::model::ListPrivateConnectionPeeringRoutesRequest::parent].
18246    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18247        self.parent = v.into();
18248        self
18249    }
18250
18251    /// Sets the value of [page_size][crate::model::ListPrivateConnectionPeeringRoutesRequest::page_size].
18252    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
18253        self.page_size = v.into();
18254        self
18255    }
18256
18257    /// Sets the value of [page_token][crate::model::ListPrivateConnectionPeeringRoutesRequest::page_token].
18258    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18259        self.page_token = v.into();
18260        self
18261    }
18262}
18263
18264impl wkt::message::Message for ListPrivateConnectionPeeringRoutesRequest {
18265    fn typename() -> &'static str {
18266        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateConnectionPeeringRoutesRequest"
18267    }
18268}
18269
18270#[doc(hidden)]
18271impl<'de> serde::de::Deserialize<'de> for ListPrivateConnectionPeeringRoutesRequest {
18272    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18273    where
18274        D: serde::Deserializer<'de>,
18275    {
18276        #[allow(non_camel_case_types)]
18277        #[doc(hidden)]
18278        #[derive(PartialEq, Eq, Hash)]
18279        enum __FieldTag {
18280            __parent,
18281            __page_size,
18282            __page_token,
18283            Unknown(std::string::String),
18284        }
18285        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
18286            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18287            where
18288                D: serde::Deserializer<'de>,
18289            {
18290                struct Visitor;
18291                impl<'de> serde::de::Visitor<'de> for Visitor {
18292                    type Value = __FieldTag;
18293                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18294                        formatter
18295                            .write_str("a field name for ListPrivateConnectionPeeringRoutesRequest")
18296                    }
18297                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18298                    where
18299                        E: serde::de::Error,
18300                    {
18301                        use std::result::Result::Ok;
18302                        use std::string::ToString;
18303                        match value {
18304                            "parent" => Ok(__FieldTag::__parent),
18305                            "pageSize" => Ok(__FieldTag::__page_size),
18306                            "page_size" => Ok(__FieldTag::__page_size),
18307                            "pageToken" => Ok(__FieldTag::__page_token),
18308                            "page_token" => Ok(__FieldTag::__page_token),
18309                            _ => Ok(__FieldTag::Unknown(value.to_string())),
18310                        }
18311                    }
18312                }
18313                deserializer.deserialize_identifier(Visitor)
18314            }
18315        }
18316        struct Visitor;
18317        impl<'de> serde::de::Visitor<'de> for Visitor {
18318            type Value = ListPrivateConnectionPeeringRoutesRequest;
18319            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18320                formatter.write_str("struct ListPrivateConnectionPeeringRoutesRequest")
18321            }
18322            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
18323            where
18324                A: serde::de::MapAccess<'de>,
18325            {
18326                #[allow(unused_imports)]
18327                use serde::de::Error;
18328                use std::option::Option::Some;
18329                let mut fields = std::collections::HashSet::new();
18330                let mut result = Self::Value::new();
18331                while let Some(tag) = map.next_key::<__FieldTag>()? {
18332                    #[allow(clippy::match_single_binding)]
18333                    match tag {
18334                        __FieldTag::__parent => {
18335                            if !fields.insert(__FieldTag::__parent) {
18336                                return std::result::Result::Err(A::Error::duplicate_field(
18337                                    "multiple values for parent",
18338                                ));
18339                            }
18340                            result.parent = map
18341                                .next_value::<std::option::Option<std::string::String>>()?
18342                                .unwrap_or_default();
18343                        }
18344                        __FieldTag::__page_size => {
18345                            if !fields.insert(__FieldTag::__page_size) {
18346                                return std::result::Result::Err(A::Error::duplicate_field(
18347                                    "multiple values for page_size",
18348                                ));
18349                            }
18350                            struct __With(std::option::Option<i32>);
18351                            impl<'de> serde::de::Deserialize<'de> for __With {
18352                                fn deserialize<D>(
18353                                    deserializer: D,
18354                                ) -> std::result::Result<Self, D::Error>
18355                                where
18356                                    D: serde::de::Deserializer<'de>,
18357                                {
18358                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
18359                                }
18360                            }
18361                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
18362                        }
18363                        __FieldTag::__page_token => {
18364                            if !fields.insert(__FieldTag::__page_token) {
18365                                return std::result::Result::Err(A::Error::duplicate_field(
18366                                    "multiple values for page_token",
18367                                ));
18368                            }
18369                            result.page_token = map
18370                                .next_value::<std::option::Option<std::string::String>>()?
18371                                .unwrap_or_default();
18372                        }
18373                        __FieldTag::Unknown(key) => {
18374                            let value = map.next_value::<serde_json::Value>()?;
18375                            result._unknown_fields.insert(key, value);
18376                        }
18377                    }
18378                }
18379                std::result::Result::Ok(result)
18380            }
18381        }
18382        deserializer.deserialize_any(Visitor)
18383    }
18384}
18385
18386#[doc(hidden)]
18387impl serde::ser::Serialize for ListPrivateConnectionPeeringRoutesRequest {
18388    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18389    where
18390        S: serde::ser::Serializer,
18391    {
18392        use serde::ser::SerializeMap;
18393        #[allow(unused_imports)]
18394        use std::option::Option::Some;
18395        let mut state = serializer.serialize_map(std::option::Option::None)?;
18396        if !self.parent.is_empty() {
18397            state.serialize_entry("parent", &self.parent)?;
18398        }
18399        if !wkt::internal::is_default(&self.page_size) {
18400            struct __With<'a>(&'a i32);
18401            impl<'a> serde::ser::Serialize for __With<'a> {
18402                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18403                where
18404                    S: serde::ser::Serializer,
18405                {
18406                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
18407                }
18408            }
18409            state.serialize_entry("pageSize", &__With(&self.page_size))?;
18410        }
18411        if !self.page_token.is_empty() {
18412            state.serialize_entry("pageToken", &self.page_token)?;
18413        }
18414        if !self._unknown_fields.is_empty() {
18415            for (key, value) in self._unknown_fields.iter() {
18416                state.serialize_entry(key, &value)?;
18417            }
18418        }
18419        state.end()
18420    }
18421}
18422
18423/// Response message for
18424/// [VmwareEngine.ListPrivateConnectionPeeringRoutes][google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes]
18425///
18426/// [google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes]: crate::client::VmwareEngine::list_private_connection_peering_routes
18427#[derive(Clone, Debug, Default, PartialEq)]
18428#[non_exhaustive]
18429pub struct ListPrivateConnectionPeeringRoutesResponse {
18430    /// A list of peering routes.
18431    pub peering_routes: std::vec::Vec<crate::model::PeeringRoute>,
18432
18433    /// A token, which can be sent as `page_token` to retrieve the next page.
18434    /// If this field is omitted, there are no subsequent pages.
18435    pub next_page_token: std::string::String,
18436
18437    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
18438}
18439
18440impl ListPrivateConnectionPeeringRoutesResponse {
18441    pub fn new() -> Self {
18442        std::default::Default::default()
18443    }
18444
18445    /// Sets the value of [peering_routes][crate::model::ListPrivateConnectionPeeringRoutesResponse::peering_routes].
18446    pub fn set_peering_routes<T, V>(mut self, v: T) -> Self
18447    where
18448        T: std::iter::IntoIterator<Item = V>,
18449        V: std::convert::Into<crate::model::PeeringRoute>,
18450    {
18451        use std::iter::Iterator;
18452        self.peering_routes = v.into_iter().map(|i| i.into()).collect();
18453        self
18454    }
18455
18456    /// Sets the value of [next_page_token][crate::model::ListPrivateConnectionPeeringRoutesResponse::next_page_token].
18457    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18458        self.next_page_token = v.into();
18459        self
18460    }
18461}
18462
18463impl wkt::message::Message for ListPrivateConnectionPeeringRoutesResponse {
18464    fn typename() -> &'static str {
18465        "type.googleapis.com/google.cloud.vmwareengine.v1.ListPrivateConnectionPeeringRoutesResponse"
18466    }
18467}
18468
18469#[doc(hidden)]
18470impl gax::paginator::internal::PageableResponse for ListPrivateConnectionPeeringRoutesResponse {
18471    type PageItem = crate::model::PeeringRoute;
18472
18473    fn items(self) -> std::vec::Vec<Self::PageItem> {
18474        self.peering_routes
18475    }
18476
18477    fn next_page_token(&self) -> std::string::String {
18478        use std::clone::Clone;
18479        self.next_page_token.clone()
18480    }
18481}
18482
18483#[doc(hidden)]
18484impl<'de> serde::de::Deserialize<'de> for ListPrivateConnectionPeeringRoutesResponse {
18485    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18486    where
18487        D: serde::Deserializer<'de>,
18488    {
18489        #[allow(non_camel_case_types)]
18490        #[doc(hidden)]
18491        #[derive(PartialEq, Eq, Hash)]
18492        enum __FieldTag {
18493            __peering_routes,
18494            __next_page_token,
18495            Unknown(std::string::String),
18496        }
18497        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
18498            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18499            where
18500                D: serde::Deserializer<'de>,
18501            {
18502                struct Visitor;
18503                impl<'de> serde::de::Visitor<'de> for Visitor {
18504                    type Value = __FieldTag;
18505                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18506                        formatter.write_str(
18507                            "a field name for ListPrivateConnectionPeeringRoutesResponse",
18508                        )
18509                    }
18510                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18511                    where
18512                        E: serde::de::Error,
18513                    {
18514                        use std::result::Result::Ok;
18515                        use std::string::ToString;
18516                        match value {
18517                            "peeringRoutes" => Ok(__FieldTag::__peering_routes),
18518                            "peering_routes" => Ok(__FieldTag::__peering_routes),
18519                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
18520                            "next_page_token" => Ok(__FieldTag::__next_page_token),
18521                            _ => Ok(__FieldTag::Unknown(value.to_string())),
18522                        }
18523                    }
18524                }
18525                deserializer.deserialize_identifier(Visitor)
18526            }
18527        }
18528        struct Visitor;
18529        impl<'de> serde::de::Visitor<'de> for Visitor {
18530            type Value = ListPrivateConnectionPeeringRoutesResponse;
18531            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18532                formatter.write_str("struct ListPrivateConnectionPeeringRoutesResponse")
18533            }
18534            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
18535            where
18536                A: serde::de::MapAccess<'de>,
18537            {
18538                #[allow(unused_imports)]
18539                use serde::de::Error;
18540                use std::option::Option::Some;
18541                let mut fields = std::collections::HashSet::new();
18542                let mut result = Self::Value::new();
18543                while let Some(tag) = map.next_key::<__FieldTag>()? {
18544                    #[allow(clippy::match_single_binding)]
18545                    match tag {
18546                        __FieldTag::__peering_routes => {
18547                            if !fields.insert(__FieldTag::__peering_routes) {
18548                                return std::result::Result::Err(A::Error::duplicate_field(
18549                                    "multiple values for peering_routes",
18550                                ));
18551                            }
18552                            result.peering_routes = map.next_value::<std::option::Option<std::vec::Vec<crate::model::PeeringRoute>>>()?.unwrap_or_default();
18553                        }
18554                        __FieldTag::__next_page_token => {
18555                            if !fields.insert(__FieldTag::__next_page_token) {
18556                                return std::result::Result::Err(A::Error::duplicate_field(
18557                                    "multiple values for next_page_token",
18558                                ));
18559                            }
18560                            result.next_page_token = map
18561                                .next_value::<std::option::Option<std::string::String>>()?
18562                                .unwrap_or_default();
18563                        }
18564                        __FieldTag::Unknown(key) => {
18565                            let value = map.next_value::<serde_json::Value>()?;
18566                            result._unknown_fields.insert(key, value);
18567                        }
18568                    }
18569                }
18570                std::result::Result::Ok(result)
18571            }
18572        }
18573        deserializer.deserialize_any(Visitor)
18574    }
18575}
18576
18577#[doc(hidden)]
18578impl serde::ser::Serialize for ListPrivateConnectionPeeringRoutesResponse {
18579    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18580    where
18581        S: serde::ser::Serializer,
18582    {
18583        use serde::ser::SerializeMap;
18584        #[allow(unused_imports)]
18585        use std::option::Option::Some;
18586        let mut state = serializer.serialize_map(std::option::Option::None)?;
18587        if !self.peering_routes.is_empty() {
18588            state.serialize_entry("peeringRoutes", &self.peering_routes)?;
18589        }
18590        if !self.next_page_token.is_empty() {
18591            state.serialize_entry("nextPageToken", &self.next_page_token)?;
18592        }
18593        if !self._unknown_fields.is_empty() {
18594            for (key, value) in self._unknown_fields.iter() {
18595                state.serialize_entry(key, &value)?;
18596            }
18597        }
18598        state.end()
18599    }
18600}
18601
18602/// Request message for
18603/// [VmwareEngine.GrantDnsBindPermission][google.cloud.vmwareengine.v1.VmwareEngine.GrantDnsBindPermission]
18604///
18605/// [google.cloud.vmwareengine.v1.VmwareEngine.GrantDnsBindPermission]: crate::client::VmwareEngine::grant_dns_bind_permission
18606#[derive(Clone, Debug, Default, PartialEq)]
18607#[non_exhaustive]
18608pub struct GrantDnsBindPermissionRequest {
18609    /// Required. The name of the resource which stores the users/service accounts
18610    /// having the permission to bind to the corresponding intranet VPC of the
18611    /// consumer project. DnsBindPermission is a global resource. Resource names
18612    /// are schemeless URIs that follow the conventions in
18613    /// <https://cloud.google.com/apis/design/resource_names>. For example:
18614    /// `projects/my-project/locations/global/dnsBindPermission`
18615    pub name: std::string::String,
18616
18617    /// Required. The consumer provided user/service account which needs to be
18618    /// granted permission to bind with the intranet VPC corresponding to the
18619    /// consumer project.
18620    pub principal: std::option::Option<crate::model::Principal>,
18621
18622    /// Optional. A request ID to identify requests. Specify a unique request ID
18623    /// so that if you must retry your request, the server will know to ignore
18624    /// the request if it has already been completed. The server guarantees that a
18625    /// request doesn't result in creation of duplicate commitments for at least 60
18626    /// minutes.
18627    ///
18628    /// For example, consider a situation where you make an initial request and the
18629    /// request times out. If you make the request again with the same request
18630    /// ID, the server can check if original operation with the same request ID
18631    /// was received, and if so, will ignore the second request. This prevents
18632    /// clients from accidentally creating duplicate commitments.
18633    ///
18634    /// The request ID must be a valid UUID with the exception that zero UUID is
18635    /// not supported (00000000-0000-0000-0000-000000000000).
18636    pub request_id: std::string::String,
18637
18638    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
18639}
18640
18641impl GrantDnsBindPermissionRequest {
18642    pub fn new() -> Self {
18643        std::default::Default::default()
18644    }
18645
18646    /// Sets the value of [name][crate::model::GrantDnsBindPermissionRequest::name].
18647    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18648        self.name = v.into();
18649        self
18650    }
18651
18652    /// Sets the value of [principal][crate::model::GrantDnsBindPermissionRequest::principal].
18653    pub fn set_principal<T>(mut self, v: T) -> Self
18654    where
18655        T: std::convert::Into<crate::model::Principal>,
18656    {
18657        self.principal = std::option::Option::Some(v.into());
18658        self
18659    }
18660
18661    /// Sets or clears the value of [principal][crate::model::GrantDnsBindPermissionRequest::principal].
18662    pub fn set_or_clear_principal<T>(mut self, v: std::option::Option<T>) -> Self
18663    where
18664        T: std::convert::Into<crate::model::Principal>,
18665    {
18666        self.principal = v.map(|x| x.into());
18667        self
18668    }
18669
18670    /// Sets the value of [request_id][crate::model::GrantDnsBindPermissionRequest::request_id].
18671    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18672        self.request_id = v.into();
18673        self
18674    }
18675}
18676
18677impl wkt::message::Message for GrantDnsBindPermissionRequest {
18678    fn typename() -> &'static str {
18679        "type.googleapis.com/google.cloud.vmwareengine.v1.GrantDnsBindPermissionRequest"
18680    }
18681}
18682
18683#[doc(hidden)]
18684impl<'de> serde::de::Deserialize<'de> for GrantDnsBindPermissionRequest {
18685    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18686    where
18687        D: serde::Deserializer<'de>,
18688    {
18689        #[allow(non_camel_case_types)]
18690        #[doc(hidden)]
18691        #[derive(PartialEq, Eq, Hash)]
18692        enum __FieldTag {
18693            __name,
18694            __principal,
18695            __request_id,
18696            Unknown(std::string::String),
18697        }
18698        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
18699            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18700            where
18701                D: serde::Deserializer<'de>,
18702            {
18703                struct Visitor;
18704                impl<'de> serde::de::Visitor<'de> for Visitor {
18705                    type Value = __FieldTag;
18706                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18707                        formatter.write_str("a field name for GrantDnsBindPermissionRequest")
18708                    }
18709                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18710                    where
18711                        E: serde::de::Error,
18712                    {
18713                        use std::result::Result::Ok;
18714                        use std::string::ToString;
18715                        match value {
18716                            "name" => Ok(__FieldTag::__name),
18717                            "principal" => Ok(__FieldTag::__principal),
18718                            "requestId" => Ok(__FieldTag::__request_id),
18719                            "request_id" => Ok(__FieldTag::__request_id),
18720                            _ => Ok(__FieldTag::Unknown(value.to_string())),
18721                        }
18722                    }
18723                }
18724                deserializer.deserialize_identifier(Visitor)
18725            }
18726        }
18727        struct Visitor;
18728        impl<'de> serde::de::Visitor<'de> for Visitor {
18729            type Value = GrantDnsBindPermissionRequest;
18730            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18731                formatter.write_str("struct GrantDnsBindPermissionRequest")
18732            }
18733            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
18734            where
18735                A: serde::de::MapAccess<'de>,
18736            {
18737                #[allow(unused_imports)]
18738                use serde::de::Error;
18739                use std::option::Option::Some;
18740                let mut fields = std::collections::HashSet::new();
18741                let mut result = Self::Value::new();
18742                while let Some(tag) = map.next_key::<__FieldTag>()? {
18743                    #[allow(clippy::match_single_binding)]
18744                    match tag {
18745                        __FieldTag::__name => {
18746                            if !fields.insert(__FieldTag::__name) {
18747                                return std::result::Result::Err(A::Error::duplicate_field(
18748                                    "multiple values for name",
18749                                ));
18750                            }
18751                            result.name = map
18752                                .next_value::<std::option::Option<std::string::String>>()?
18753                                .unwrap_or_default();
18754                        }
18755                        __FieldTag::__principal => {
18756                            if !fields.insert(__FieldTag::__principal) {
18757                                return std::result::Result::Err(A::Error::duplicate_field(
18758                                    "multiple values for principal",
18759                                ));
18760                            }
18761                            result.principal =
18762                                map.next_value::<std::option::Option<crate::model::Principal>>()?;
18763                        }
18764                        __FieldTag::__request_id => {
18765                            if !fields.insert(__FieldTag::__request_id) {
18766                                return std::result::Result::Err(A::Error::duplicate_field(
18767                                    "multiple values for request_id",
18768                                ));
18769                            }
18770                            result.request_id = map
18771                                .next_value::<std::option::Option<std::string::String>>()?
18772                                .unwrap_or_default();
18773                        }
18774                        __FieldTag::Unknown(key) => {
18775                            let value = map.next_value::<serde_json::Value>()?;
18776                            result._unknown_fields.insert(key, value);
18777                        }
18778                    }
18779                }
18780                std::result::Result::Ok(result)
18781            }
18782        }
18783        deserializer.deserialize_any(Visitor)
18784    }
18785}
18786
18787#[doc(hidden)]
18788impl serde::ser::Serialize for GrantDnsBindPermissionRequest {
18789    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18790    where
18791        S: serde::ser::Serializer,
18792    {
18793        use serde::ser::SerializeMap;
18794        #[allow(unused_imports)]
18795        use std::option::Option::Some;
18796        let mut state = serializer.serialize_map(std::option::Option::None)?;
18797        if !self.name.is_empty() {
18798            state.serialize_entry("name", &self.name)?;
18799        }
18800        if self.principal.is_some() {
18801            state.serialize_entry("principal", &self.principal)?;
18802        }
18803        if !self.request_id.is_empty() {
18804            state.serialize_entry("requestId", &self.request_id)?;
18805        }
18806        if !self._unknown_fields.is_empty() {
18807            for (key, value) in self._unknown_fields.iter() {
18808                state.serialize_entry(key, &value)?;
18809            }
18810        }
18811        state.end()
18812    }
18813}
18814
18815/// Request message for
18816/// [VmwareEngine.RevokeDnsBindPermission][google.cloud.vmwareengine.v1.VmwareEngine.RevokeDnsBindPermission]
18817///
18818/// [google.cloud.vmwareengine.v1.VmwareEngine.RevokeDnsBindPermission]: crate::client::VmwareEngine::revoke_dns_bind_permission
18819#[derive(Clone, Debug, Default, PartialEq)]
18820#[non_exhaustive]
18821pub struct RevokeDnsBindPermissionRequest {
18822    /// Required. The name of the resource which stores the users/service accounts
18823    /// having the permission to bind to the corresponding intranet VPC of the
18824    /// consumer project. DnsBindPermission is a global resource. Resource names
18825    /// are schemeless URIs that follow the conventions in
18826    /// <https://cloud.google.com/apis/design/resource_names>. For example:
18827    /// `projects/my-project/locations/global/dnsBindPermission`
18828    pub name: std::string::String,
18829
18830    /// Required. The consumer provided user/service account which needs to be
18831    /// granted permission to bind with the intranet VPC corresponding to the
18832    /// consumer project.
18833    pub principal: std::option::Option<crate::model::Principal>,
18834
18835    /// Optional. A request ID to identify requests. Specify a unique request ID
18836    /// so that if you must retry your request, the server will know to ignore
18837    /// the request if it has already been completed. The server guarantees that a
18838    /// request doesn't result in creation of duplicate commitments for at least 60
18839    /// minutes.
18840    ///
18841    /// For example, consider a situation where you make an initial request and the
18842    /// request times out. If you make the request again with the same request
18843    /// ID, the server can check if original operation with the same request ID
18844    /// was received, and if so, will ignore the second request. This prevents
18845    /// clients from accidentally creating duplicate commitments.
18846    ///
18847    /// The request ID must be a valid UUID with the exception that zero UUID is
18848    /// not supported (00000000-0000-0000-0000-000000000000).
18849    pub request_id: std::string::String,
18850
18851    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
18852}
18853
18854impl RevokeDnsBindPermissionRequest {
18855    pub fn new() -> Self {
18856        std::default::Default::default()
18857    }
18858
18859    /// Sets the value of [name][crate::model::RevokeDnsBindPermissionRequest::name].
18860    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18861        self.name = v.into();
18862        self
18863    }
18864
18865    /// Sets the value of [principal][crate::model::RevokeDnsBindPermissionRequest::principal].
18866    pub fn set_principal<T>(mut self, v: T) -> Self
18867    where
18868        T: std::convert::Into<crate::model::Principal>,
18869    {
18870        self.principal = std::option::Option::Some(v.into());
18871        self
18872    }
18873
18874    /// Sets or clears the value of [principal][crate::model::RevokeDnsBindPermissionRequest::principal].
18875    pub fn set_or_clear_principal<T>(mut self, v: std::option::Option<T>) -> Self
18876    where
18877        T: std::convert::Into<crate::model::Principal>,
18878    {
18879        self.principal = v.map(|x| x.into());
18880        self
18881    }
18882
18883    /// Sets the value of [request_id][crate::model::RevokeDnsBindPermissionRequest::request_id].
18884    pub fn set_request_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
18885        self.request_id = v.into();
18886        self
18887    }
18888}
18889
18890impl wkt::message::Message for RevokeDnsBindPermissionRequest {
18891    fn typename() -> &'static str {
18892        "type.googleapis.com/google.cloud.vmwareengine.v1.RevokeDnsBindPermissionRequest"
18893    }
18894}
18895
18896#[doc(hidden)]
18897impl<'de> serde::de::Deserialize<'de> for RevokeDnsBindPermissionRequest {
18898    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18899    where
18900        D: serde::Deserializer<'de>,
18901    {
18902        #[allow(non_camel_case_types)]
18903        #[doc(hidden)]
18904        #[derive(PartialEq, Eq, Hash)]
18905        enum __FieldTag {
18906            __name,
18907            __principal,
18908            __request_id,
18909            Unknown(std::string::String),
18910        }
18911        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
18912            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18913            where
18914                D: serde::Deserializer<'de>,
18915            {
18916                struct Visitor;
18917                impl<'de> serde::de::Visitor<'de> for Visitor {
18918                    type Value = __FieldTag;
18919                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18920                        formatter.write_str("a field name for RevokeDnsBindPermissionRequest")
18921                    }
18922                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18923                    where
18924                        E: serde::de::Error,
18925                    {
18926                        use std::result::Result::Ok;
18927                        use std::string::ToString;
18928                        match value {
18929                            "name" => Ok(__FieldTag::__name),
18930                            "principal" => Ok(__FieldTag::__principal),
18931                            "requestId" => Ok(__FieldTag::__request_id),
18932                            "request_id" => Ok(__FieldTag::__request_id),
18933                            _ => Ok(__FieldTag::Unknown(value.to_string())),
18934                        }
18935                    }
18936                }
18937                deserializer.deserialize_identifier(Visitor)
18938            }
18939        }
18940        struct Visitor;
18941        impl<'de> serde::de::Visitor<'de> for Visitor {
18942            type Value = RevokeDnsBindPermissionRequest;
18943            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
18944                formatter.write_str("struct RevokeDnsBindPermissionRequest")
18945            }
18946            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
18947            where
18948                A: serde::de::MapAccess<'de>,
18949            {
18950                #[allow(unused_imports)]
18951                use serde::de::Error;
18952                use std::option::Option::Some;
18953                let mut fields = std::collections::HashSet::new();
18954                let mut result = Self::Value::new();
18955                while let Some(tag) = map.next_key::<__FieldTag>()? {
18956                    #[allow(clippy::match_single_binding)]
18957                    match tag {
18958                        __FieldTag::__name => {
18959                            if !fields.insert(__FieldTag::__name) {
18960                                return std::result::Result::Err(A::Error::duplicate_field(
18961                                    "multiple values for name",
18962                                ));
18963                            }
18964                            result.name = map
18965                                .next_value::<std::option::Option<std::string::String>>()?
18966                                .unwrap_or_default();
18967                        }
18968                        __FieldTag::__principal => {
18969                            if !fields.insert(__FieldTag::__principal) {
18970                                return std::result::Result::Err(A::Error::duplicate_field(
18971                                    "multiple values for principal",
18972                                ));
18973                            }
18974                            result.principal =
18975                                map.next_value::<std::option::Option<crate::model::Principal>>()?;
18976                        }
18977                        __FieldTag::__request_id => {
18978                            if !fields.insert(__FieldTag::__request_id) {
18979                                return std::result::Result::Err(A::Error::duplicate_field(
18980                                    "multiple values for request_id",
18981                                ));
18982                            }
18983                            result.request_id = map
18984                                .next_value::<std::option::Option<std::string::String>>()?
18985                                .unwrap_or_default();
18986                        }
18987                        __FieldTag::Unknown(key) => {
18988                            let value = map.next_value::<serde_json::Value>()?;
18989                            result._unknown_fields.insert(key, value);
18990                        }
18991                    }
18992                }
18993                std::result::Result::Ok(result)
18994            }
18995        }
18996        deserializer.deserialize_any(Visitor)
18997    }
18998}
18999
19000#[doc(hidden)]
19001impl serde::ser::Serialize for RevokeDnsBindPermissionRequest {
19002    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19003    where
19004        S: serde::ser::Serializer,
19005    {
19006        use serde::ser::SerializeMap;
19007        #[allow(unused_imports)]
19008        use std::option::Option::Some;
19009        let mut state = serializer.serialize_map(std::option::Option::None)?;
19010        if !self.name.is_empty() {
19011            state.serialize_entry("name", &self.name)?;
19012        }
19013        if self.principal.is_some() {
19014            state.serialize_entry("principal", &self.principal)?;
19015        }
19016        if !self.request_id.is_empty() {
19017            state.serialize_entry("requestId", &self.request_id)?;
19018        }
19019        if !self._unknown_fields.is_empty() {
19020            for (key, value) in self._unknown_fields.iter() {
19021                state.serialize_entry(key, &value)?;
19022            }
19023        }
19024        state.end()
19025    }
19026}
19027
19028/// Request message for
19029/// [VmwareEngine.GetDnsBindPermission][google.cloud.vmwareengine.v1.VmwareEngine.GetDnsBindPermission]
19030///
19031/// [google.cloud.vmwareengine.v1.VmwareEngine.GetDnsBindPermission]: crate::client::VmwareEngine::get_dns_bind_permission
19032#[derive(Clone, Debug, Default, PartialEq)]
19033#[non_exhaustive]
19034pub struct GetDnsBindPermissionRequest {
19035    /// Required. The name of the resource which stores the users/service accounts
19036    /// having the permission to bind to the corresponding intranet VPC of the
19037    /// consumer project. DnsBindPermission is a global resource. Resource names
19038    /// are schemeless URIs that follow the conventions in
19039    /// <https://cloud.google.com/apis/design/resource_names>. For example:
19040    /// `projects/my-project/locations/global/dnsBindPermission`
19041    pub name: std::string::String,
19042
19043    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
19044}
19045
19046impl GetDnsBindPermissionRequest {
19047    pub fn new() -> Self {
19048        std::default::Default::default()
19049    }
19050
19051    /// Sets the value of [name][crate::model::GetDnsBindPermissionRequest::name].
19052    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
19053        self.name = v.into();
19054        self
19055    }
19056}
19057
19058impl wkt::message::Message for GetDnsBindPermissionRequest {
19059    fn typename() -> &'static str {
19060        "type.googleapis.com/google.cloud.vmwareengine.v1.GetDnsBindPermissionRequest"
19061    }
19062}
19063
19064#[doc(hidden)]
19065impl<'de> serde::de::Deserialize<'de> for GetDnsBindPermissionRequest {
19066    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19067    where
19068        D: serde::Deserializer<'de>,
19069    {
19070        #[allow(non_camel_case_types)]
19071        #[doc(hidden)]
19072        #[derive(PartialEq, Eq, Hash)]
19073        enum __FieldTag {
19074            __name,
19075            Unknown(std::string::String),
19076        }
19077        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
19078            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19079            where
19080                D: serde::Deserializer<'de>,
19081            {
19082                struct Visitor;
19083                impl<'de> serde::de::Visitor<'de> for Visitor {
19084                    type Value = __FieldTag;
19085                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19086                        formatter.write_str("a field name for GetDnsBindPermissionRequest")
19087                    }
19088                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
19089                    where
19090                        E: serde::de::Error,
19091                    {
19092                        use std::result::Result::Ok;
19093                        use std::string::ToString;
19094                        match value {
19095                            "name" => Ok(__FieldTag::__name),
19096                            _ => Ok(__FieldTag::Unknown(value.to_string())),
19097                        }
19098                    }
19099                }
19100                deserializer.deserialize_identifier(Visitor)
19101            }
19102        }
19103        struct Visitor;
19104        impl<'de> serde::de::Visitor<'de> for Visitor {
19105            type Value = GetDnsBindPermissionRequest;
19106            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19107                formatter.write_str("struct GetDnsBindPermissionRequest")
19108            }
19109            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
19110            where
19111                A: serde::de::MapAccess<'de>,
19112            {
19113                #[allow(unused_imports)]
19114                use serde::de::Error;
19115                use std::option::Option::Some;
19116                let mut fields = std::collections::HashSet::new();
19117                let mut result = Self::Value::new();
19118                while let Some(tag) = map.next_key::<__FieldTag>()? {
19119                    #[allow(clippy::match_single_binding)]
19120                    match tag {
19121                        __FieldTag::__name => {
19122                            if !fields.insert(__FieldTag::__name) {
19123                                return std::result::Result::Err(A::Error::duplicate_field(
19124                                    "multiple values for name",
19125                                ));
19126                            }
19127                            result.name = map
19128                                .next_value::<std::option::Option<std::string::String>>()?
19129                                .unwrap_or_default();
19130                        }
19131                        __FieldTag::Unknown(key) => {
19132                            let value = map.next_value::<serde_json::Value>()?;
19133                            result._unknown_fields.insert(key, value);
19134                        }
19135                    }
19136                }
19137                std::result::Result::Ok(result)
19138            }
19139        }
19140        deserializer.deserialize_any(Visitor)
19141    }
19142}
19143
19144#[doc(hidden)]
19145impl serde::ser::Serialize for GetDnsBindPermissionRequest {
19146    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19147    where
19148        S: serde::ser::Serializer,
19149    {
19150        use serde::ser::SerializeMap;
19151        #[allow(unused_imports)]
19152        use std::option::Option::Some;
19153        let mut state = serializer.serialize_map(std::option::Option::None)?;
19154        if !self.name.is_empty() {
19155            state.serialize_entry("name", &self.name)?;
19156        }
19157        if !self._unknown_fields.is_empty() {
19158            for (key, value) in self._unknown_fields.iter() {
19159                state.serialize_entry(key, &value)?;
19160            }
19161        }
19162        state.end()
19163    }
19164}
19165
19166/// Network configuration in the consumer project
19167/// with which the peering has to be done.
19168#[derive(Clone, Debug, Default, PartialEq)]
19169#[non_exhaustive]
19170pub struct NetworkConfig {
19171    /// Required. Management CIDR used by VMware management appliances.
19172    pub management_cidr: std::string::String,
19173
19174    /// Optional. The relative resource name of the VMware Engine network attached
19175    /// to the private cloud. Specify the name in the following form:
19176    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
19177    /// where `{project}` can either be a project number or a project ID.
19178    pub vmware_engine_network: std::string::String,
19179
19180    /// Output only. The canonical name of the VMware Engine network in the form:
19181    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
19182    pub vmware_engine_network_canonical: std::string::String,
19183
19184    /// Output only. The IP address layout version of the management IP address
19185    /// range. Possible versions include:
19186    ///
19187    /// * `managementIpAddressLayoutVersion=1`: Indicates the legacy IP address
19188    ///   layout used by some existing private clouds. This is no longer supported
19189    ///   for new private clouds as it does not support all features.
19190    /// * `managementIpAddressLayoutVersion=2`: Indicates the latest IP address
19191    ///   layout used by all newly created private clouds. This version supports all
19192    ///   current features.
19193    pub management_ip_address_layout_version: i32,
19194
19195    /// Output only. DNS Server IP of the Private Cloud.
19196    /// All DNS queries can be forwarded to this address for name resolution of
19197    /// Private Cloud's management entities like vCenter, NSX-T Manager and
19198    /// ESXi hosts.
19199    pub dns_server_ip: std::string::String,
19200
19201    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
19202}
19203
19204impl NetworkConfig {
19205    pub fn new() -> Self {
19206        std::default::Default::default()
19207    }
19208
19209    /// Sets the value of [management_cidr][crate::model::NetworkConfig::management_cidr].
19210    pub fn set_management_cidr<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
19211        self.management_cidr = v.into();
19212        self
19213    }
19214
19215    /// Sets the value of [vmware_engine_network][crate::model::NetworkConfig::vmware_engine_network].
19216    pub fn set_vmware_engine_network<T: std::convert::Into<std::string::String>>(
19217        mut self,
19218        v: T,
19219    ) -> Self {
19220        self.vmware_engine_network = v.into();
19221        self
19222    }
19223
19224    /// Sets the value of [vmware_engine_network_canonical][crate::model::NetworkConfig::vmware_engine_network_canonical].
19225    pub fn set_vmware_engine_network_canonical<T: std::convert::Into<std::string::String>>(
19226        mut self,
19227        v: T,
19228    ) -> Self {
19229        self.vmware_engine_network_canonical = v.into();
19230        self
19231    }
19232
19233    /// Sets the value of [management_ip_address_layout_version][crate::model::NetworkConfig::management_ip_address_layout_version].
19234    pub fn set_management_ip_address_layout_version<T: std::convert::Into<i32>>(
19235        mut self,
19236        v: T,
19237    ) -> Self {
19238        self.management_ip_address_layout_version = v.into();
19239        self
19240    }
19241
19242    /// Sets the value of [dns_server_ip][crate::model::NetworkConfig::dns_server_ip].
19243    pub fn set_dns_server_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
19244        self.dns_server_ip = v.into();
19245        self
19246    }
19247}
19248
19249impl wkt::message::Message for NetworkConfig {
19250    fn typename() -> &'static str {
19251        "type.googleapis.com/google.cloud.vmwareengine.v1.NetworkConfig"
19252    }
19253}
19254
19255#[doc(hidden)]
19256impl<'de> serde::de::Deserialize<'de> for NetworkConfig {
19257    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19258    where
19259        D: serde::Deserializer<'de>,
19260    {
19261        #[allow(non_camel_case_types)]
19262        #[doc(hidden)]
19263        #[derive(PartialEq, Eq, Hash)]
19264        enum __FieldTag {
19265            __management_cidr,
19266            __vmware_engine_network,
19267            __vmware_engine_network_canonical,
19268            __management_ip_address_layout_version,
19269            __dns_server_ip,
19270            Unknown(std::string::String),
19271        }
19272        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
19273            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19274            where
19275                D: serde::Deserializer<'de>,
19276            {
19277                struct Visitor;
19278                impl<'de> serde::de::Visitor<'de> for Visitor {
19279                    type Value = __FieldTag;
19280                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19281                        formatter.write_str("a field name for NetworkConfig")
19282                    }
19283                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
19284                    where
19285                        E: serde::de::Error,
19286                    {
19287                        use std::result::Result::Ok;
19288                        use std::string::ToString;
19289                        match value {
19290                            "managementCidr" => Ok(__FieldTag::__management_cidr),
19291                            "management_cidr" => Ok(__FieldTag::__management_cidr),
19292                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
19293                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
19294                            "vmwareEngineNetworkCanonical" => {
19295                                Ok(__FieldTag::__vmware_engine_network_canonical)
19296                            }
19297                            "vmware_engine_network_canonical" => {
19298                                Ok(__FieldTag::__vmware_engine_network_canonical)
19299                            }
19300                            "managementIpAddressLayoutVersion" => {
19301                                Ok(__FieldTag::__management_ip_address_layout_version)
19302                            }
19303                            "management_ip_address_layout_version" => {
19304                                Ok(__FieldTag::__management_ip_address_layout_version)
19305                            }
19306                            "dnsServerIp" => Ok(__FieldTag::__dns_server_ip),
19307                            "dns_server_ip" => Ok(__FieldTag::__dns_server_ip),
19308                            _ => Ok(__FieldTag::Unknown(value.to_string())),
19309                        }
19310                    }
19311                }
19312                deserializer.deserialize_identifier(Visitor)
19313            }
19314        }
19315        struct Visitor;
19316        impl<'de> serde::de::Visitor<'de> for Visitor {
19317            type Value = NetworkConfig;
19318            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19319                formatter.write_str("struct NetworkConfig")
19320            }
19321            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
19322            where
19323                A: serde::de::MapAccess<'de>,
19324            {
19325                #[allow(unused_imports)]
19326                use serde::de::Error;
19327                use std::option::Option::Some;
19328                let mut fields = std::collections::HashSet::new();
19329                let mut result = Self::Value::new();
19330                while let Some(tag) = map.next_key::<__FieldTag>()? {
19331                    #[allow(clippy::match_single_binding)]
19332                    match tag {
19333                        __FieldTag::__management_cidr => {
19334                            if !fields.insert(__FieldTag::__management_cidr) {
19335                                return std::result::Result::Err(A::Error::duplicate_field(
19336                                    "multiple values for management_cidr",
19337                                ));
19338                            }
19339                            result.management_cidr = map
19340                                .next_value::<std::option::Option<std::string::String>>()?
19341                                .unwrap_or_default();
19342                        }
19343                        __FieldTag::__vmware_engine_network => {
19344                            if !fields.insert(__FieldTag::__vmware_engine_network) {
19345                                return std::result::Result::Err(A::Error::duplicate_field(
19346                                    "multiple values for vmware_engine_network",
19347                                ));
19348                            }
19349                            result.vmware_engine_network = map
19350                                .next_value::<std::option::Option<std::string::String>>()?
19351                                .unwrap_or_default();
19352                        }
19353                        __FieldTag::__vmware_engine_network_canonical => {
19354                            if !fields.insert(__FieldTag::__vmware_engine_network_canonical) {
19355                                return std::result::Result::Err(A::Error::duplicate_field(
19356                                    "multiple values for vmware_engine_network_canonical",
19357                                ));
19358                            }
19359                            result.vmware_engine_network_canonical = map
19360                                .next_value::<std::option::Option<std::string::String>>()?
19361                                .unwrap_or_default();
19362                        }
19363                        __FieldTag::__management_ip_address_layout_version => {
19364                            if !fields.insert(__FieldTag::__management_ip_address_layout_version) {
19365                                return std::result::Result::Err(A::Error::duplicate_field(
19366                                    "multiple values for management_ip_address_layout_version",
19367                                ));
19368                            }
19369                            struct __With(std::option::Option<i32>);
19370                            impl<'de> serde::de::Deserialize<'de> for __With {
19371                                fn deserialize<D>(
19372                                    deserializer: D,
19373                                ) -> std::result::Result<Self, D::Error>
19374                                where
19375                                    D: serde::de::Deserializer<'de>,
19376                                {
19377                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
19378                                }
19379                            }
19380                            result.management_ip_address_layout_version =
19381                                map.next_value::<__With>()?.0.unwrap_or_default();
19382                        }
19383                        __FieldTag::__dns_server_ip => {
19384                            if !fields.insert(__FieldTag::__dns_server_ip) {
19385                                return std::result::Result::Err(A::Error::duplicate_field(
19386                                    "multiple values for dns_server_ip",
19387                                ));
19388                            }
19389                            result.dns_server_ip = map
19390                                .next_value::<std::option::Option<std::string::String>>()?
19391                                .unwrap_or_default();
19392                        }
19393                        __FieldTag::Unknown(key) => {
19394                            let value = map.next_value::<serde_json::Value>()?;
19395                            result._unknown_fields.insert(key, value);
19396                        }
19397                    }
19398                }
19399                std::result::Result::Ok(result)
19400            }
19401        }
19402        deserializer.deserialize_any(Visitor)
19403    }
19404}
19405
19406#[doc(hidden)]
19407impl serde::ser::Serialize for NetworkConfig {
19408    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19409    where
19410        S: serde::ser::Serializer,
19411    {
19412        use serde::ser::SerializeMap;
19413        #[allow(unused_imports)]
19414        use std::option::Option::Some;
19415        let mut state = serializer.serialize_map(std::option::Option::None)?;
19416        if !self.management_cidr.is_empty() {
19417            state.serialize_entry("managementCidr", &self.management_cidr)?;
19418        }
19419        if !self.vmware_engine_network.is_empty() {
19420            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
19421        }
19422        if !self.vmware_engine_network_canonical.is_empty() {
19423            state.serialize_entry(
19424                "vmwareEngineNetworkCanonical",
19425                &self.vmware_engine_network_canonical,
19426            )?;
19427        }
19428        if !wkt::internal::is_default(&self.management_ip_address_layout_version) {
19429            struct __With<'a>(&'a i32);
19430            impl<'a> serde::ser::Serialize for __With<'a> {
19431                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19432                where
19433                    S: serde::ser::Serializer,
19434                {
19435                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
19436                }
19437            }
19438            state.serialize_entry(
19439                "managementIpAddressLayoutVersion",
19440                &__With(&self.management_ip_address_layout_version),
19441            )?;
19442        }
19443        if !self.dns_server_ip.is_empty() {
19444            state.serialize_entry("dnsServerIp", &self.dns_server_ip)?;
19445        }
19446        if !self._unknown_fields.is_empty() {
19447            for (key, value) in self._unknown_fields.iter() {
19448                state.serialize_entry(key, &value)?;
19449            }
19450        }
19451        state.end()
19452    }
19453}
19454
19455/// Information about the type and number of nodes associated with the cluster.
19456#[derive(Clone, Debug, Default, PartialEq)]
19457#[non_exhaustive]
19458pub struct NodeTypeConfig {
19459    /// Required. The number of nodes of this type in the cluster
19460    pub node_count: i32,
19461
19462    /// Optional. Customized number of cores available to each node of the type.
19463    /// This number must always be one of `nodeType.availableCustomCoreCounts`.
19464    /// If zero is provided max value from `nodeType.availableCustomCoreCounts`
19465    /// will be used.
19466    pub custom_core_count: i32,
19467
19468    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
19469}
19470
19471impl NodeTypeConfig {
19472    pub fn new() -> Self {
19473        std::default::Default::default()
19474    }
19475
19476    /// Sets the value of [node_count][crate::model::NodeTypeConfig::node_count].
19477    pub fn set_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
19478        self.node_count = v.into();
19479        self
19480    }
19481
19482    /// Sets the value of [custom_core_count][crate::model::NodeTypeConfig::custom_core_count].
19483    pub fn set_custom_core_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
19484        self.custom_core_count = v.into();
19485        self
19486    }
19487}
19488
19489impl wkt::message::Message for NodeTypeConfig {
19490    fn typename() -> &'static str {
19491        "type.googleapis.com/google.cloud.vmwareengine.v1.NodeTypeConfig"
19492    }
19493}
19494
19495#[doc(hidden)]
19496impl<'de> serde::de::Deserialize<'de> for NodeTypeConfig {
19497    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19498    where
19499        D: serde::Deserializer<'de>,
19500    {
19501        #[allow(non_camel_case_types)]
19502        #[doc(hidden)]
19503        #[derive(PartialEq, Eq, Hash)]
19504        enum __FieldTag {
19505            __node_count,
19506            __custom_core_count,
19507            Unknown(std::string::String),
19508        }
19509        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
19510            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19511            where
19512                D: serde::Deserializer<'de>,
19513            {
19514                struct Visitor;
19515                impl<'de> serde::de::Visitor<'de> for Visitor {
19516                    type Value = __FieldTag;
19517                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19518                        formatter.write_str("a field name for NodeTypeConfig")
19519                    }
19520                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
19521                    where
19522                        E: serde::de::Error,
19523                    {
19524                        use std::result::Result::Ok;
19525                        use std::string::ToString;
19526                        match value {
19527                            "nodeCount" => Ok(__FieldTag::__node_count),
19528                            "node_count" => Ok(__FieldTag::__node_count),
19529                            "customCoreCount" => Ok(__FieldTag::__custom_core_count),
19530                            "custom_core_count" => Ok(__FieldTag::__custom_core_count),
19531                            _ => Ok(__FieldTag::Unknown(value.to_string())),
19532                        }
19533                    }
19534                }
19535                deserializer.deserialize_identifier(Visitor)
19536            }
19537        }
19538        struct Visitor;
19539        impl<'de> serde::de::Visitor<'de> for Visitor {
19540            type Value = NodeTypeConfig;
19541            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19542                formatter.write_str("struct NodeTypeConfig")
19543            }
19544            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
19545            where
19546                A: serde::de::MapAccess<'de>,
19547            {
19548                #[allow(unused_imports)]
19549                use serde::de::Error;
19550                use std::option::Option::Some;
19551                let mut fields = std::collections::HashSet::new();
19552                let mut result = Self::Value::new();
19553                while let Some(tag) = map.next_key::<__FieldTag>()? {
19554                    #[allow(clippy::match_single_binding)]
19555                    match tag {
19556                        __FieldTag::__node_count => {
19557                            if !fields.insert(__FieldTag::__node_count) {
19558                                return std::result::Result::Err(A::Error::duplicate_field(
19559                                    "multiple values for node_count",
19560                                ));
19561                            }
19562                            struct __With(std::option::Option<i32>);
19563                            impl<'de> serde::de::Deserialize<'de> for __With {
19564                                fn deserialize<D>(
19565                                    deserializer: D,
19566                                ) -> std::result::Result<Self, D::Error>
19567                                where
19568                                    D: serde::de::Deserializer<'de>,
19569                                {
19570                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
19571                                }
19572                            }
19573                            result.node_count = map.next_value::<__With>()?.0.unwrap_or_default();
19574                        }
19575                        __FieldTag::__custom_core_count => {
19576                            if !fields.insert(__FieldTag::__custom_core_count) {
19577                                return std::result::Result::Err(A::Error::duplicate_field(
19578                                    "multiple values for custom_core_count",
19579                                ));
19580                            }
19581                            struct __With(std::option::Option<i32>);
19582                            impl<'de> serde::de::Deserialize<'de> for __With {
19583                                fn deserialize<D>(
19584                                    deserializer: D,
19585                                ) -> std::result::Result<Self, D::Error>
19586                                where
19587                                    D: serde::de::Deserializer<'de>,
19588                                {
19589                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
19590                                }
19591                            }
19592                            result.custom_core_count =
19593                                map.next_value::<__With>()?.0.unwrap_or_default();
19594                        }
19595                        __FieldTag::Unknown(key) => {
19596                            let value = map.next_value::<serde_json::Value>()?;
19597                            result._unknown_fields.insert(key, value);
19598                        }
19599                    }
19600                }
19601                std::result::Result::Ok(result)
19602            }
19603        }
19604        deserializer.deserialize_any(Visitor)
19605    }
19606}
19607
19608#[doc(hidden)]
19609impl serde::ser::Serialize for NodeTypeConfig {
19610    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19611    where
19612        S: serde::ser::Serializer,
19613    {
19614        use serde::ser::SerializeMap;
19615        #[allow(unused_imports)]
19616        use std::option::Option::Some;
19617        let mut state = serializer.serialize_map(std::option::Option::None)?;
19618        if !wkt::internal::is_default(&self.node_count) {
19619            struct __With<'a>(&'a i32);
19620            impl<'a> serde::ser::Serialize for __With<'a> {
19621                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19622                where
19623                    S: serde::ser::Serializer,
19624                {
19625                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
19626                }
19627            }
19628            state.serialize_entry("nodeCount", &__With(&self.node_count))?;
19629        }
19630        if !wkt::internal::is_default(&self.custom_core_count) {
19631            struct __With<'a>(&'a i32);
19632            impl<'a> serde::ser::Serialize for __With<'a> {
19633                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19634                where
19635                    S: serde::ser::Serializer,
19636                {
19637                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
19638                }
19639            }
19640            state.serialize_entry("customCoreCount", &__With(&self.custom_core_count))?;
19641        }
19642        if !self._unknown_fields.is_empty() {
19643            for (key, value) in self._unknown_fields.iter() {
19644                state.serialize_entry(key, &value)?;
19645            }
19646        }
19647        state.end()
19648    }
19649}
19650
19651/// Configuration of a stretched cluster.
19652#[derive(Clone, Debug, Default, PartialEq)]
19653#[non_exhaustive]
19654pub struct StretchedClusterConfig {
19655    /// Required. Zone that will remain operational when connection between the two
19656    /// zones is lost. Specify the resource name of a zone that belongs to the
19657    /// region of the private cloud. For example:
19658    /// `projects/{project}/locations/europe-west3-a` where `{project}` can either
19659    /// be a project number or a project ID.
19660    pub preferred_location: std::string::String,
19661
19662    /// Required. Additional zone for a higher level of availability and load
19663    /// balancing. Specify the resource name of a zone that belongs to the region
19664    /// of the private cloud. For example:
19665    /// `projects/{project}/locations/europe-west3-b` where `{project}` can either
19666    /// be a project number or a project ID.
19667    pub secondary_location: std::string::String,
19668
19669    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
19670}
19671
19672impl StretchedClusterConfig {
19673    pub fn new() -> Self {
19674        std::default::Default::default()
19675    }
19676
19677    /// Sets the value of [preferred_location][crate::model::StretchedClusterConfig::preferred_location].
19678    pub fn set_preferred_location<T: std::convert::Into<std::string::String>>(
19679        mut self,
19680        v: T,
19681    ) -> Self {
19682        self.preferred_location = v.into();
19683        self
19684    }
19685
19686    /// Sets the value of [secondary_location][crate::model::StretchedClusterConfig::secondary_location].
19687    pub fn set_secondary_location<T: std::convert::Into<std::string::String>>(
19688        mut self,
19689        v: T,
19690    ) -> Self {
19691        self.secondary_location = v.into();
19692        self
19693    }
19694}
19695
19696impl wkt::message::Message for StretchedClusterConfig {
19697    fn typename() -> &'static str {
19698        "type.googleapis.com/google.cloud.vmwareengine.v1.StretchedClusterConfig"
19699    }
19700}
19701
19702#[doc(hidden)]
19703impl<'de> serde::de::Deserialize<'de> for StretchedClusterConfig {
19704    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19705    where
19706        D: serde::Deserializer<'de>,
19707    {
19708        #[allow(non_camel_case_types)]
19709        #[doc(hidden)]
19710        #[derive(PartialEq, Eq, Hash)]
19711        enum __FieldTag {
19712            __preferred_location,
19713            __secondary_location,
19714            Unknown(std::string::String),
19715        }
19716        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
19717            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19718            where
19719                D: serde::Deserializer<'de>,
19720            {
19721                struct Visitor;
19722                impl<'de> serde::de::Visitor<'de> for Visitor {
19723                    type Value = __FieldTag;
19724                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19725                        formatter.write_str("a field name for StretchedClusterConfig")
19726                    }
19727                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
19728                    where
19729                        E: serde::de::Error,
19730                    {
19731                        use std::result::Result::Ok;
19732                        use std::string::ToString;
19733                        match value {
19734                            "preferredLocation" => Ok(__FieldTag::__preferred_location),
19735                            "preferred_location" => Ok(__FieldTag::__preferred_location),
19736                            "secondaryLocation" => Ok(__FieldTag::__secondary_location),
19737                            "secondary_location" => Ok(__FieldTag::__secondary_location),
19738                            _ => Ok(__FieldTag::Unknown(value.to_string())),
19739                        }
19740                    }
19741                }
19742                deserializer.deserialize_identifier(Visitor)
19743            }
19744        }
19745        struct Visitor;
19746        impl<'de> serde::de::Visitor<'de> for Visitor {
19747            type Value = StretchedClusterConfig;
19748            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
19749                formatter.write_str("struct StretchedClusterConfig")
19750            }
19751            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
19752            where
19753                A: serde::de::MapAccess<'de>,
19754            {
19755                #[allow(unused_imports)]
19756                use serde::de::Error;
19757                use std::option::Option::Some;
19758                let mut fields = std::collections::HashSet::new();
19759                let mut result = Self::Value::new();
19760                while let Some(tag) = map.next_key::<__FieldTag>()? {
19761                    #[allow(clippy::match_single_binding)]
19762                    match tag {
19763                        __FieldTag::__preferred_location => {
19764                            if !fields.insert(__FieldTag::__preferred_location) {
19765                                return std::result::Result::Err(A::Error::duplicate_field(
19766                                    "multiple values for preferred_location",
19767                                ));
19768                            }
19769                            result.preferred_location = map
19770                                .next_value::<std::option::Option<std::string::String>>()?
19771                                .unwrap_or_default();
19772                        }
19773                        __FieldTag::__secondary_location => {
19774                            if !fields.insert(__FieldTag::__secondary_location) {
19775                                return std::result::Result::Err(A::Error::duplicate_field(
19776                                    "multiple values for secondary_location",
19777                                ));
19778                            }
19779                            result.secondary_location = map
19780                                .next_value::<std::option::Option<std::string::String>>()?
19781                                .unwrap_or_default();
19782                        }
19783                        __FieldTag::Unknown(key) => {
19784                            let value = map.next_value::<serde_json::Value>()?;
19785                            result._unknown_fields.insert(key, value);
19786                        }
19787                    }
19788                }
19789                std::result::Result::Ok(result)
19790            }
19791        }
19792        deserializer.deserialize_any(Visitor)
19793    }
19794}
19795
19796#[doc(hidden)]
19797impl serde::ser::Serialize for StretchedClusterConfig {
19798    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19799    where
19800        S: serde::ser::Serializer,
19801    {
19802        use serde::ser::SerializeMap;
19803        #[allow(unused_imports)]
19804        use std::option::Option::Some;
19805        let mut state = serializer.serialize_map(std::option::Option::None)?;
19806        if !self.preferred_location.is_empty() {
19807            state.serialize_entry("preferredLocation", &self.preferred_location)?;
19808        }
19809        if !self.secondary_location.is_empty() {
19810            state.serialize_entry("secondaryLocation", &self.secondary_location)?;
19811        }
19812        if !self._unknown_fields.is_empty() {
19813            for (key, value) in self._unknown_fields.iter() {
19814                state.serialize_entry(key, &value)?;
19815            }
19816        }
19817        state.end()
19818    }
19819}
19820
19821/// Represents a private cloud resource. Private clouds of type `STANDARD` and
19822/// `TIME_LIMITED` are zonal resources, `STRETCHED` private clouds are
19823/// regional.
19824#[derive(Clone, Debug, Default, PartialEq)]
19825#[non_exhaustive]
19826pub struct PrivateCloud {
19827    /// Output only. The resource name of this private cloud.
19828    /// Resource names are schemeless URIs that follow the conventions in
19829    /// <https://cloud.google.com/apis/design/resource_names>.
19830    /// For example:
19831    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
19832    pub name: std::string::String,
19833
19834    /// Output only. Creation time of this resource.
19835    pub create_time: std::option::Option<wkt::Timestamp>,
19836
19837    /// Output only. Last update time of this resource.
19838    pub update_time: std::option::Option<wkt::Timestamp>,
19839
19840    /// Output only. Time when the resource was scheduled for deletion.
19841    pub delete_time: std::option::Option<wkt::Timestamp>,
19842
19843    /// Output only. Time when the resource will be irreversibly deleted.
19844    pub expire_time: std::option::Option<wkt::Timestamp>,
19845
19846    /// Output only. State of the resource. New values may be added to this enum
19847    /// when appropriate.
19848    pub state: crate::model::private_cloud::State,
19849
19850    /// Required. Network configuration of the private cloud.
19851    pub network_config: std::option::Option<crate::model::NetworkConfig>,
19852
19853    /// Required. Input only. The management cluster for this private cloud.
19854    /// This field is required during creation of the private cloud to provide
19855    /// details for the default cluster.
19856    ///
19857    /// The following fields can't be changed after private cloud creation:
19858    /// `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`.
19859    pub management_cluster: std::option::Option<crate::model::private_cloud::ManagementCluster>,
19860
19861    /// User-provided description for this private cloud.
19862    pub description: std::string::String,
19863
19864    /// Output only. HCX appliance.
19865    pub hcx: std::option::Option<crate::model::Hcx>,
19866
19867    /// Output only. NSX appliance.
19868    pub nsx: std::option::Option<crate::model::Nsx>,
19869
19870    /// Output only. Vcenter appliance.
19871    pub vcenter: std::option::Option<crate::model::Vcenter>,
19872
19873    /// Output only. System-generated unique identifier for the resource.
19874    pub uid: std::string::String,
19875
19876    /// Optional. Type of the private cloud. Defaults to STANDARD.
19877    pub r#type: crate::model::private_cloud::Type,
19878
19879    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
19880}
19881
19882impl PrivateCloud {
19883    pub fn new() -> Self {
19884        std::default::Default::default()
19885    }
19886
19887    /// Sets the value of [name][crate::model::PrivateCloud::name].
19888    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
19889        self.name = v.into();
19890        self
19891    }
19892
19893    /// Sets the value of [create_time][crate::model::PrivateCloud::create_time].
19894    pub fn set_create_time<T>(mut self, v: T) -> Self
19895    where
19896        T: std::convert::Into<wkt::Timestamp>,
19897    {
19898        self.create_time = std::option::Option::Some(v.into());
19899        self
19900    }
19901
19902    /// Sets or clears the value of [create_time][crate::model::PrivateCloud::create_time].
19903    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
19904    where
19905        T: std::convert::Into<wkt::Timestamp>,
19906    {
19907        self.create_time = v.map(|x| x.into());
19908        self
19909    }
19910
19911    /// Sets the value of [update_time][crate::model::PrivateCloud::update_time].
19912    pub fn set_update_time<T>(mut self, v: T) -> Self
19913    where
19914        T: std::convert::Into<wkt::Timestamp>,
19915    {
19916        self.update_time = std::option::Option::Some(v.into());
19917        self
19918    }
19919
19920    /// Sets or clears the value of [update_time][crate::model::PrivateCloud::update_time].
19921    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
19922    where
19923        T: std::convert::Into<wkt::Timestamp>,
19924    {
19925        self.update_time = v.map(|x| x.into());
19926        self
19927    }
19928
19929    /// Sets the value of [delete_time][crate::model::PrivateCloud::delete_time].
19930    pub fn set_delete_time<T>(mut self, v: T) -> Self
19931    where
19932        T: std::convert::Into<wkt::Timestamp>,
19933    {
19934        self.delete_time = std::option::Option::Some(v.into());
19935        self
19936    }
19937
19938    /// Sets or clears the value of [delete_time][crate::model::PrivateCloud::delete_time].
19939    pub fn set_or_clear_delete_time<T>(mut self, v: std::option::Option<T>) -> Self
19940    where
19941        T: std::convert::Into<wkt::Timestamp>,
19942    {
19943        self.delete_time = v.map(|x| x.into());
19944        self
19945    }
19946
19947    /// Sets the value of [expire_time][crate::model::PrivateCloud::expire_time].
19948    pub fn set_expire_time<T>(mut self, v: T) -> Self
19949    where
19950        T: std::convert::Into<wkt::Timestamp>,
19951    {
19952        self.expire_time = std::option::Option::Some(v.into());
19953        self
19954    }
19955
19956    /// Sets or clears the value of [expire_time][crate::model::PrivateCloud::expire_time].
19957    pub fn set_or_clear_expire_time<T>(mut self, v: std::option::Option<T>) -> Self
19958    where
19959        T: std::convert::Into<wkt::Timestamp>,
19960    {
19961        self.expire_time = v.map(|x| x.into());
19962        self
19963    }
19964
19965    /// Sets the value of [state][crate::model::PrivateCloud::state].
19966    pub fn set_state<T: std::convert::Into<crate::model::private_cloud::State>>(
19967        mut self,
19968        v: T,
19969    ) -> Self {
19970        self.state = v.into();
19971        self
19972    }
19973
19974    /// Sets the value of [network_config][crate::model::PrivateCloud::network_config].
19975    pub fn set_network_config<T>(mut self, v: T) -> Self
19976    where
19977        T: std::convert::Into<crate::model::NetworkConfig>,
19978    {
19979        self.network_config = std::option::Option::Some(v.into());
19980        self
19981    }
19982
19983    /// Sets or clears the value of [network_config][crate::model::PrivateCloud::network_config].
19984    pub fn set_or_clear_network_config<T>(mut self, v: std::option::Option<T>) -> Self
19985    where
19986        T: std::convert::Into<crate::model::NetworkConfig>,
19987    {
19988        self.network_config = v.map(|x| x.into());
19989        self
19990    }
19991
19992    /// Sets the value of [management_cluster][crate::model::PrivateCloud::management_cluster].
19993    pub fn set_management_cluster<T>(mut self, v: T) -> Self
19994    where
19995        T: std::convert::Into<crate::model::private_cloud::ManagementCluster>,
19996    {
19997        self.management_cluster = std::option::Option::Some(v.into());
19998        self
19999    }
20000
20001    /// Sets or clears the value of [management_cluster][crate::model::PrivateCloud::management_cluster].
20002    pub fn set_or_clear_management_cluster<T>(mut self, v: std::option::Option<T>) -> Self
20003    where
20004        T: std::convert::Into<crate::model::private_cloud::ManagementCluster>,
20005    {
20006        self.management_cluster = v.map(|x| x.into());
20007        self
20008    }
20009
20010    /// Sets the value of [description][crate::model::PrivateCloud::description].
20011    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
20012        self.description = v.into();
20013        self
20014    }
20015
20016    /// Sets the value of [hcx][crate::model::PrivateCloud::hcx].
20017    pub fn set_hcx<T>(mut self, v: T) -> Self
20018    where
20019        T: std::convert::Into<crate::model::Hcx>,
20020    {
20021        self.hcx = std::option::Option::Some(v.into());
20022        self
20023    }
20024
20025    /// Sets or clears the value of [hcx][crate::model::PrivateCloud::hcx].
20026    pub fn set_or_clear_hcx<T>(mut self, v: std::option::Option<T>) -> Self
20027    where
20028        T: std::convert::Into<crate::model::Hcx>,
20029    {
20030        self.hcx = v.map(|x| x.into());
20031        self
20032    }
20033
20034    /// Sets the value of [nsx][crate::model::PrivateCloud::nsx].
20035    pub fn set_nsx<T>(mut self, v: T) -> Self
20036    where
20037        T: std::convert::Into<crate::model::Nsx>,
20038    {
20039        self.nsx = std::option::Option::Some(v.into());
20040        self
20041    }
20042
20043    /// Sets or clears the value of [nsx][crate::model::PrivateCloud::nsx].
20044    pub fn set_or_clear_nsx<T>(mut self, v: std::option::Option<T>) -> Self
20045    where
20046        T: std::convert::Into<crate::model::Nsx>,
20047    {
20048        self.nsx = v.map(|x| x.into());
20049        self
20050    }
20051
20052    /// Sets the value of [vcenter][crate::model::PrivateCloud::vcenter].
20053    pub fn set_vcenter<T>(mut self, v: T) -> Self
20054    where
20055        T: std::convert::Into<crate::model::Vcenter>,
20056    {
20057        self.vcenter = std::option::Option::Some(v.into());
20058        self
20059    }
20060
20061    /// Sets or clears the value of [vcenter][crate::model::PrivateCloud::vcenter].
20062    pub fn set_or_clear_vcenter<T>(mut self, v: std::option::Option<T>) -> Self
20063    where
20064        T: std::convert::Into<crate::model::Vcenter>,
20065    {
20066        self.vcenter = v.map(|x| x.into());
20067        self
20068    }
20069
20070    /// Sets the value of [uid][crate::model::PrivateCloud::uid].
20071    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
20072        self.uid = v.into();
20073        self
20074    }
20075
20076    /// Sets the value of [r#type][crate::model::PrivateCloud::type].
20077    pub fn set_type<T: std::convert::Into<crate::model::private_cloud::Type>>(
20078        mut self,
20079        v: T,
20080    ) -> Self {
20081        self.r#type = v.into();
20082        self
20083    }
20084}
20085
20086impl wkt::message::Message for PrivateCloud {
20087    fn typename() -> &'static str {
20088        "type.googleapis.com/google.cloud.vmwareengine.v1.PrivateCloud"
20089    }
20090}
20091
20092#[doc(hidden)]
20093impl<'de> serde::de::Deserialize<'de> for PrivateCloud {
20094    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20095    where
20096        D: serde::Deserializer<'de>,
20097    {
20098        #[allow(non_camel_case_types)]
20099        #[doc(hidden)]
20100        #[derive(PartialEq, Eq, Hash)]
20101        enum __FieldTag {
20102            __name,
20103            __create_time,
20104            __update_time,
20105            __delete_time,
20106            __expire_time,
20107            __state,
20108            __network_config,
20109            __management_cluster,
20110            __description,
20111            __hcx,
20112            __nsx,
20113            __vcenter,
20114            __uid,
20115            __type,
20116            Unknown(std::string::String),
20117        }
20118        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
20119            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20120            where
20121                D: serde::Deserializer<'de>,
20122            {
20123                struct Visitor;
20124                impl<'de> serde::de::Visitor<'de> for Visitor {
20125                    type Value = __FieldTag;
20126                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
20127                        formatter.write_str("a field name for PrivateCloud")
20128                    }
20129                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
20130                    where
20131                        E: serde::de::Error,
20132                    {
20133                        use std::result::Result::Ok;
20134                        use std::string::ToString;
20135                        match value {
20136                            "name" => Ok(__FieldTag::__name),
20137                            "createTime" => Ok(__FieldTag::__create_time),
20138                            "create_time" => Ok(__FieldTag::__create_time),
20139                            "updateTime" => Ok(__FieldTag::__update_time),
20140                            "update_time" => Ok(__FieldTag::__update_time),
20141                            "deleteTime" => Ok(__FieldTag::__delete_time),
20142                            "delete_time" => Ok(__FieldTag::__delete_time),
20143                            "expireTime" => Ok(__FieldTag::__expire_time),
20144                            "expire_time" => Ok(__FieldTag::__expire_time),
20145                            "state" => Ok(__FieldTag::__state),
20146                            "networkConfig" => Ok(__FieldTag::__network_config),
20147                            "network_config" => Ok(__FieldTag::__network_config),
20148                            "managementCluster" => Ok(__FieldTag::__management_cluster),
20149                            "management_cluster" => Ok(__FieldTag::__management_cluster),
20150                            "description" => Ok(__FieldTag::__description),
20151                            "hcx" => Ok(__FieldTag::__hcx),
20152                            "nsx" => Ok(__FieldTag::__nsx),
20153                            "vcenter" => Ok(__FieldTag::__vcenter),
20154                            "uid" => Ok(__FieldTag::__uid),
20155                            "type" => Ok(__FieldTag::__type),
20156                            _ => Ok(__FieldTag::Unknown(value.to_string())),
20157                        }
20158                    }
20159                }
20160                deserializer.deserialize_identifier(Visitor)
20161            }
20162        }
20163        struct Visitor;
20164        impl<'de> serde::de::Visitor<'de> for Visitor {
20165            type Value = PrivateCloud;
20166            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
20167                formatter.write_str("struct PrivateCloud")
20168            }
20169            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
20170            where
20171                A: serde::de::MapAccess<'de>,
20172            {
20173                #[allow(unused_imports)]
20174                use serde::de::Error;
20175                use std::option::Option::Some;
20176                let mut fields = std::collections::HashSet::new();
20177                let mut result = Self::Value::new();
20178                while let Some(tag) = map.next_key::<__FieldTag>()? {
20179                    #[allow(clippy::match_single_binding)]
20180                    match tag {
20181                        __FieldTag::__name => {
20182                            if !fields.insert(__FieldTag::__name) {
20183                                return std::result::Result::Err(A::Error::duplicate_field(
20184                                    "multiple values for name",
20185                                ));
20186                            }
20187                            result.name = map
20188                                .next_value::<std::option::Option<std::string::String>>()?
20189                                .unwrap_or_default();
20190                        }
20191                        __FieldTag::__create_time => {
20192                            if !fields.insert(__FieldTag::__create_time) {
20193                                return std::result::Result::Err(A::Error::duplicate_field(
20194                                    "multiple values for create_time",
20195                                ));
20196                            }
20197                            result.create_time =
20198                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
20199                        }
20200                        __FieldTag::__update_time => {
20201                            if !fields.insert(__FieldTag::__update_time) {
20202                                return std::result::Result::Err(A::Error::duplicate_field(
20203                                    "multiple values for update_time",
20204                                ));
20205                            }
20206                            result.update_time =
20207                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
20208                        }
20209                        __FieldTag::__delete_time => {
20210                            if !fields.insert(__FieldTag::__delete_time) {
20211                                return std::result::Result::Err(A::Error::duplicate_field(
20212                                    "multiple values for delete_time",
20213                                ));
20214                            }
20215                            result.delete_time =
20216                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
20217                        }
20218                        __FieldTag::__expire_time => {
20219                            if !fields.insert(__FieldTag::__expire_time) {
20220                                return std::result::Result::Err(A::Error::duplicate_field(
20221                                    "multiple values for expire_time",
20222                                ));
20223                            }
20224                            result.expire_time =
20225                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
20226                        }
20227                        __FieldTag::__state => {
20228                            if !fields.insert(__FieldTag::__state) {
20229                                return std::result::Result::Err(A::Error::duplicate_field(
20230                                    "multiple values for state",
20231                                ));
20232                            }
20233                            result.state = map.next_value::<std::option::Option<crate::model::private_cloud::State>>()?.unwrap_or_default();
20234                        }
20235                        __FieldTag::__network_config => {
20236                            if !fields.insert(__FieldTag::__network_config) {
20237                                return std::result::Result::Err(A::Error::duplicate_field(
20238                                    "multiple values for network_config",
20239                                ));
20240                            }
20241                            result.network_config = map
20242                                .next_value::<std::option::Option<crate::model::NetworkConfig>>()?;
20243                        }
20244                        __FieldTag::__management_cluster => {
20245                            if !fields.insert(__FieldTag::__management_cluster) {
20246                                return std::result::Result::Err(A::Error::duplicate_field(
20247                                    "multiple values for management_cluster",
20248                                ));
20249                            }
20250                            result.management_cluster = map.next_value::<std::option::Option<
20251                                crate::model::private_cloud::ManagementCluster,
20252                            >>()?;
20253                        }
20254                        __FieldTag::__description => {
20255                            if !fields.insert(__FieldTag::__description) {
20256                                return std::result::Result::Err(A::Error::duplicate_field(
20257                                    "multiple values for description",
20258                                ));
20259                            }
20260                            result.description = map
20261                                .next_value::<std::option::Option<std::string::String>>()?
20262                                .unwrap_or_default();
20263                        }
20264                        __FieldTag::__hcx => {
20265                            if !fields.insert(__FieldTag::__hcx) {
20266                                return std::result::Result::Err(A::Error::duplicate_field(
20267                                    "multiple values for hcx",
20268                                ));
20269                            }
20270                            result.hcx =
20271                                map.next_value::<std::option::Option<crate::model::Hcx>>()?;
20272                        }
20273                        __FieldTag::__nsx => {
20274                            if !fields.insert(__FieldTag::__nsx) {
20275                                return std::result::Result::Err(A::Error::duplicate_field(
20276                                    "multiple values for nsx",
20277                                ));
20278                            }
20279                            result.nsx =
20280                                map.next_value::<std::option::Option<crate::model::Nsx>>()?;
20281                        }
20282                        __FieldTag::__vcenter => {
20283                            if !fields.insert(__FieldTag::__vcenter) {
20284                                return std::result::Result::Err(A::Error::duplicate_field(
20285                                    "multiple values for vcenter",
20286                                ));
20287                            }
20288                            result.vcenter =
20289                                map.next_value::<std::option::Option<crate::model::Vcenter>>()?;
20290                        }
20291                        __FieldTag::__uid => {
20292                            if !fields.insert(__FieldTag::__uid) {
20293                                return std::result::Result::Err(A::Error::duplicate_field(
20294                                    "multiple values for uid",
20295                                ));
20296                            }
20297                            result.uid = map
20298                                .next_value::<std::option::Option<std::string::String>>()?
20299                                .unwrap_or_default();
20300                        }
20301                        __FieldTag::__type => {
20302                            if !fields.insert(__FieldTag::__type) {
20303                                return std::result::Result::Err(A::Error::duplicate_field(
20304                                    "multiple values for type",
20305                                ));
20306                            }
20307                            result.r#type = map.next_value::<std::option::Option<crate::model::private_cloud::Type>>()?.unwrap_or_default();
20308                        }
20309                        __FieldTag::Unknown(key) => {
20310                            let value = map.next_value::<serde_json::Value>()?;
20311                            result._unknown_fields.insert(key, value);
20312                        }
20313                    }
20314                }
20315                std::result::Result::Ok(result)
20316            }
20317        }
20318        deserializer.deserialize_any(Visitor)
20319    }
20320}
20321
20322#[doc(hidden)]
20323impl serde::ser::Serialize for PrivateCloud {
20324    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20325    where
20326        S: serde::ser::Serializer,
20327    {
20328        use serde::ser::SerializeMap;
20329        #[allow(unused_imports)]
20330        use std::option::Option::Some;
20331        let mut state = serializer.serialize_map(std::option::Option::None)?;
20332        if !self.name.is_empty() {
20333            state.serialize_entry("name", &self.name)?;
20334        }
20335        if self.create_time.is_some() {
20336            state.serialize_entry("createTime", &self.create_time)?;
20337        }
20338        if self.update_time.is_some() {
20339            state.serialize_entry("updateTime", &self.update_time)?;
20340        }
20341        if self.delete_time.is_some() {
20342            state.serialize_entry("deleteTime", &self.delete_time)?;
20343        }
20344        if self.expire_time.is_some() {
20345            state.serialize_entry("expireTime", &self.expire_time)?;
20346        }
20347        if !wkt::internal::is_default(&self.state) {
20348            state.serialize_entry("state", &self.state)?;
20349        }
20350        if self.network_config.is_some() {
20351            state.serialize_entry("networkConfig", &self.network_config)?;
20352        }
20353        if self.management_cluster.is_some() {
20354            state.serialize_entry("managementCluster", &self.management_cluster)?;
20355        }
20356        if !self.description.is_empty() {
20357            state.serialize_entry("description", &self.description)?;
20358        }
20359        if self.hcx.is_some() {
20360            state.serialize_entry("hcx", &self.hcx)?;
20361        }
20362        if self.nsx.is_some() {
20363            state.serialize_entry("nsx", &self.nsx)?;
20364        }
20365        if self.vcenter.is_some() {
20366            state.serialize_entry("vcenter", &self.vcenter)?;
20367        }
20368        if !self.uid.is_empty() {
20369            state.serialize_entry("uid", &self.uid)?;
20370        }
20371        if !wkt::internal::is_default(&self.r#type) {
20372            state.serialize_entry("type", &self.r#type)?;
20373        }
20374        if !self._unknown_fields.is_empty() {
20375            for (key, value) in self._unknown_fields.iter() {
20376                state.serialize_entry(key, &value)?;
20377            }
20378        }
20379        state.end()
20380    }
20381}
20382
20383/// Defines additional types related to [PrivateCloud].
20384pub mod private_cloud {
20385    #[allow(unused_imports)]
20386    use super::*;
20387
20388    /// Management cluster configuration.
20389    #[derive(Clone, Debug, Default, PartialEq)]
20390    #[non_exhaustive]
20391    pub struct ManagementCluster {
20392        /// Required. The user-provided identifier of the new `Cluster`.
20393        /// The identifier must meet the following requirements:
20394        ///
20395        /// * Only contains 1-63 alphanumeric characters and hyphens
20396        /// * Begins with an alphabetical character
20397        /// * Ends with a non-hyphen character
20398        /// * Not formatted as a UUID
20399        /// * Complies with [RFC
20400        ///   1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)
20401        pub cluster_id: std::string::String,
20402
20403        /// Required. The map of cluster node types in this cluster, where the key is
20404        /// canonical identifier of the node type (corresponds to the `NodeType`).
20405        pub node_type_configs:
20406            std::collections::HashMap<std::string::String, crate::model::NodeTypeConfig>,
20407
20408        /// Optional. Configuration of a stretched cluster. Required for STRETCHED
20409        /// private clouds.
20410        pub stretched_cluster_config: std::option::Option<crate::model::StretchedClusterConfig>,
20411
20412        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
20413    }
20414
20415    impl ManagementCluster {
20416        pub fn new() -> Self {
20417            std::default::Default::default()
20418        }
20419
20420        /// Sets the value of [cluster_id][crate::model::private_cloud::ManagementCluster::cluster_id].
20421        pub fn set_cluster_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
20422            self.cluster_id = v.into();
20423            self
20424        }
20425
20426        /// Sets the value of [node_type_configs][crate::model::private_cloud::ManagementCluster::node_type_configs].
20427        pub fn set_node_type_configs<T, K, V>(mut self, v: T) -> Self
20428        where
20429            T: std::iter::IntoIterator<Item = (K, V)>,
20430            K: std::convert::Into<std::string::String>,
20431            V: std::convert::Into<crate::model::NodeTypeConfig>,
20432        {
20433            use std::iter::Iterator;
20434            self.node_type_configs = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
20435            self
20436        }
20437
20438        /// Sets the value of [stretched_cluster_config][crate::model::private_cloud::ManagementCluster::stretched_cluster_config].
20439        pub fn set_stretched_cluster_config<T>(mut self, v: T) -> Self
20440        where
20441            T: std::convert::Into<crate::model::StretchedClusterConfig>,
20442        {
20443            self.stretched_cluster_config = std::option::Option::Some(v.into());
20444            self
20445        }
20446
20447        /// Sets or clears the value of [stretched_cluster_config][crate::model::private_cloud::ManagementCluster::stretched_cluster_config].
20448        pub fn set_or_clear_stretched_cluster_config<T>(mut self, v: std::option::Option<T>) -> Self
20449        where
20450            T: std::convert::Into<crate::model::StretchedClusterConfig>,
20451        {
20452            self.stretched_cluster_config = v.map(|x| x.into());
20453            self
20454        }
20455    }
20456
20457    impl wkt::message::Message for ManagementCluster {
20458        fn typename() -> &'static str {
20459            "type.googleapis.com/google.cloud.vmwareengine.v1.PrivateCloud.ManagementCluster"
20460        }
20461    }
20462
20463    #[doc(hidden)]
20464    impl<'de> serde::de::Deserialize<'de> for ManagementCluster {
20465        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20466        where
20467            D: serde::Deserializer<'de>,
20468        {
20469            #[allow(non_camel_case_types)]
20470            #[doc(hidden)]
20471            #[derive(PartialEq, Eq, Hash)]
20472            enum __FieldTag {
20473                __cluster_id,
20474                __node_type_configs,
20475                __stretched_cluster_config,
20476                Unknown(std::string::String),
20477            }
20478            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
20479                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20480                where
20481                    D: serde::Deserializer<'de>,
20482                {
20483                    struct Visitor;
20484                    impl<'de> serde::de::Visitor<'de> for Visitor {
20485                        type Value = __FieldTag;
20486                        fn expecting(
20487                            &self,
20488                            formatter: &mut std::fmt::Formatter,
20489                        ) -> std::fmt::Result {
20490                            formatter.write_str("a field name for ManagementCluster")
20491                        }
20492                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
20493                        where
20494                            E: serde::de::Error,
20495                        {
20496                            use std::result::Result::Ok;
20497                            use std::string::ToString;
20498                            match value {
20499                                "clusterId" => Ok(__FieldTag::__cluster_id),
20500                                "cluster_id" => Ok(__FieldTag::__cluster_id),
20501                                "nodeTypeConfigs" => Ok(__FieldTag::__node_type_configs),
20502                                "node_type_configs" => Ok(__FieldTag::__node_type_configs),
20503                                "stretchedClusterConfig" => {
20504                                    Ok(__FieldTag::__stretched_cluster_config)
20505                                }
20506                                "stretched_cluster_config" => {
20507                                    Ok(__FieldTag::__stretched_cluster_config)
20508                                }
20509                                _ => Ok(__FieldTag::Unknown(value.to_string())),
20510                            }
20511                        }
20512                    }
20513                    deserializer.deserialize_identifier(Visitor)
20514                }
20515            }
20516            struct Visitor;
20517            impl<'de> serde::de::Visitor<'de> for Visitor {
20518                type Value = ManagementCluster;
20519                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
20520                    formatter.write_str("struct ManagementCluster")
20521                }
20522                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
20523                where
20524                    A: serde::de::MapAccess<'de>,
20525                {
20526                    #[allow(unused_imports)]
20527                    use serde::de::Error;
20528                    use std::option::Option::Some;
20529                    let mut fields = std::collections::HashSet::new();
20530                    let mut result = Self::Value::new();
20531                    while let Some(tag) = map.next_key::<__FieldTag>()? {
20532                        #[allow(clippy::match_single_binding)]
20533                        match tag {
20534                            __FieldTag::__cluster_id => {
20535                                if !fields.insert(__FieldTag::__cluster_id) {
20536                                    return std::result::Result::Err(A::Error::duplicate_field(
20537                                        "multiple values for cluster_id",
20538                                    ));
20539                                }
20540                                result.cluster_id = map
20541                                    .next_value::<std::option::Option<std::string::String>>()?
20542                                    .unwrap_or_default();
20543                            }
20544                            __FieldTag::__node_type_configs => {
20545                                if !fields.insert(__FieldTag::__node_type_configs) {
20546                                    return std::result::Result::Err(A::Error::duplicate_field(
20547                                        "multiple values for node_type_configs",
20548                                    ));
20549                                }
20550                                result.node_type_configs = map
20551                                    .next_value::<std::option::Option<
20552                                        std::collections::HashMap<
20553                                            std::string::String,
20554                                            crate::model::NodeTypeConfig,
20555                                        >,
20556                                    >>()?
20557                                    .unwrap_or_default();
20558                            }
20559                            __FieldTag::__stretched_cluster_config => {
20560                                if !fields.insert(__FieldTag::__stretched_cluster_config) {
20561                                    return std::result::Result::Err(A::Error::duplicate_field(
20562                                        "multiple values for stretched_cluster_config",
20563                                    ));
20564                                }
20565                                result.stretched_cluster_config = map.next_value::<std::option::Option<crate::model::StretchedClusterConfig>>()?
20566                                    ;
20567                            }
20568                            __FieldTag::Unknown(key) => {
20569                                let value = map.next_value::<serde_json::Value>()?;
20570                                result._unknown_fields.insert(key, value);
20571                            }
20572                        }
20573                    }
20574                    std::result::Result::Ok(result)
20575                }
20576            }
20577            deserializer.deserialize_any(Visitor)
20578        }
20579    }
20580
20581    #[doc(hidden)]
20582    impl serde::ser::Serialize for ManagementCluster {
20583        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20584        where
20585            S: serde::ser::Serializer,
20586        {
20587            use serde::ser::SerializeMap;
20588            #[allow(unused_imports)]
20589            use std::option::Option::Some;
20590            let mut state = serializer.serialize_map(std::option::Option::None)?;
20591            if !self.cluster_id.is_empty() {
20592                state.serialize_entry("clusterId", &self.cluster_id)?;
20593            }
20594            if !self.node_type_configs.is_empty() {
20595                state.serialize_entry("nodeTypeConfigs", &self.node_type_configs)?;
20596            }
20597            if self.stretched_cluster_config.is_some() {
20598                state.serialize_entry("stretchedClusterConfig", &self.stretched_cluster_config)?;
20599            }
20600            if !self._unknown_fields.is_empty() {
20601                for (key, value) in self._unknown_fields.iter() {
20602                    state.serialize_entry(key, &value)?;
20603                }
20604            }
20605            state.end()
20606        }
20607    }
20608
20609    /// Enum State defines possible states of private clouds.
20610    ///
20611    /// # Working with unknown values
20612    ///
20613    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
20614    /// additional enum variants at any time. Adding new variants is not considered
20615    /// a breaking change. Applications should write their code in anticipation of:
20616    ///
20617    /// - New values appearing in future releases of the client library, **and**
20618    /// - New values received dynamically, without application changes.
20619    ///
20620    /// Please consult the [Working with enums] section in the user guide for some
20621    /// guidelines.
20622    ///
20623    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
20624    #[derive(Clone, Debug, PartialEq)]
20625    #[non_exhaustive]
20626    pub enum State {
20627        /// The default value. This value should never be used.
20628        Unspecified,
20629        /// The private cloud is ready.
20630        Active,
20631        /// The private cloud is being created.
20632        Creating,
20633        /// The private cloud is being updated.
20634        Updating,
20635        /// The private cloud is in failed state.
20636        Failed,
20637        /// The private cloud is scheduled for deletion. The deletion process can be
20638        /// cancelled by using the corresponding undelete method.
20639        Deleted,
20640        /// The private cloud is irreversibly deleted and is being removed from the
20641        /// system.
20642        Purging,
20643        /// If set, the enum was initialized with an unknown value.
20644        ///
20645        /// Applications can examine the value using [State::value] or
20646        /// [State::name].
20647        UnknownValue(state::UnknownValue),
20648    }
20649
20650    #[doc(hidden)]
20651    pub mod state {
20652        #[allow(unused_imports)]
20653        use super::*;
20654        #[derive(Clone, Debug, PartialEq)]
20655        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
20656    }
20657
20658    impl State {
20659        /// Gets the enum value.
20660        ///
20661        /// Returns `None` if the enum contains an unknown value deserialized from
20662        /// the string representation of enums.
20663        pub fn value(&self) -> std::option::Option<i32> {
20664            match self {
20665                Self::Unspecified => std::option::Option::Some(0),
20666                Self::Active => std::option::Option::Some(1),
20667                Self::Creating => std::option::Option::Some(2),
20668                Self::Updating => std::option::Option::Some(3),
20669                Self::Failed => std::option::Option::Some(5),
20670                Self::Deleted => std::option::Option::Some(6),
20671                Self::Purging => std::option::Option::Some(7),
20672                Self::UnknownValue(u) => u.0.value(),
20673            }
20674        }
20675
20676        /// Gets the enum value as a string.
20677        ///
20678        /// Returns `None` if the enum contains an unknown value deserialized from
20679        /// the integer representation of enums.
20680        pub fn name(&self) -> std::option::Option<&str> {
20681            match self {
20682                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
20683                Self::Active => std::option::Option::Some("ACTIVE"),
20684                Self::Creating => std::option::Option::Some("CREATING"),
20685                Self::Updating => std::option::Option::Some("UPDATING"),
20686                Self::Failed => std::option::Option::Some("FAILED"),
20687                Self::Deleted => std::option::Option::Some("DELETED"),
20688                Self::Purging => std::option::Option::Some("PURGING"),
20689                Self::UnknownValue(u) => u.0.name(),
20690            }
20691        }
20692    }
20693
20694    impl std::default::Default for State {
20695        fn default() -> Self {
20696            use std::convert::From;
20697            Self::from(0)
20698        }
20699    }
20700
20701    impl std::fmt::Display for State {
20702        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
20703            wkt::internal::display_enum(f, self.name(), self.value())
20704        }
20705    }
20706
20707    impl std::convert::From<i32> for State {
20708        fn from(value: i32) -> Self {
20709            match value {
20710                0 => Self::Unspecified,
20711                1 => Self::Active,
20712                2 => Self::Creating,
20713                3 => Self::Updating,
20714                5 => Self::Failed,
20715                6 => Self::Deleted,
20716                7 => Self::Purging,
20717                _ => Self::UnknownValue(state::UnknownValue(
20718                    wkt::internal::UnknownEnumValue::Integer(value),
20719                )),
20720            }
20721        }
20722    }
20723
20724    impl std::convert::From<&str> for State {
20725        fn from(value: &str) -> Self {
20726            use std::string::ToString;
20727            match value {
20728                "STATE_UNSPECIFIED" => Self::Unspecified,
20729                "ACTIVE" => Self::Active,
20730                "CREATING" => Self::Creating,
20731                "UPDATING" => Self::Updating,
20732                "FAILED" => Self::Failed,
20733                "DELETED" => Self::Deleted,
20734                "PURGING" => Self::Purging,
20735                _ => Self::UnknownValue(state::UnknownValue(
20736                    wkt::internal::UnknownEnumValue::String(value.to_string()),
20737                )),
20738            }
20739        }
20740    }
20741
20742    impl serde::ser::Serialize for State {
20743        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20744        where
20745            S: serde::Serializer,
20746        {
20747            match self {
20748                Self::Unspecified => serializer.serialize_i32(0),
20749                Self::Active => serializer.serialize_i32(1),
20750                Self::Creating => serializer.serialize_i32(2),
20751                Self::Updating => serializer.serialize_i32(3),
20752                Self::Failed => serializer.serialize_i32(5),
20753                Self::Deleted => serializer.serialize_i32(6),
20754                Self::Purging => serializer.serialize_i32(7),
20755                Self::UnknownValue(u) => u.0.serialize(serializer),
20756            }
20757        }
20758    }
20759
20760    impl<'de> serde::de::Deserialize<'de> for State {
20761        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20762        where
20763            D: serde::Deserializer<'de>,
20764        {
20765            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
20766                ".google.cloud.vmwareengine.v1.PrivateCloud.State",
20767            ))
20768        }
20769    }
20770
20771    /// Enum Type defines private cloud type.
20772    ///
20773    /// # Working with unknown values
20774    ///
20775    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
20776    /// additional enum variants at any time. Adding new variants is not considered
20777    /// a breaking change. Applications should write their code in anticipation of:
20778    ///
20779    /// - New values appearing in future releases of the client library, **and**
20780    /// - New values received dynamically, without application changes.
20781    ///
20782    /// Please consult the [Working with enums] section in the user guide for some
20783    /// guidelines.
20784    ///
20785    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
20786    #[derive(Clone, Debug, PartialEq)]
20787    #[non_exhaustive]
20788    pub enum Type {
20789        /// Standard private is a zonal resource, with 3+ nodes. Default type.
20790        Standard,
20791        /// Time limited private cloud is a zonal resource, can have only 1 node and
20792        /// has limited life span. Will be deleted after defined period of time,
20793        /// can be converted into standard private cloud by expanding it up to 3
20794        /// or more nodes.
20795        TimeLimited,
20796        /// Stretched private cloud is a regional resource with redundancy,
20797        /// with a minimum of 6 nodes, nodes count has to be even.
20798        Stretched,
20799        /// If set, the enum was initialized with an unknown value.
20800        ///
20801        /// Applications can examine the value using [Type::value] or
20802        /// [Type::name].
20803        UnknownValue(r#type::UnknownValue),
20804    }
20805
20806    #[doc(hidden)]
20807    pub mod r#type {
20808        #[allow(unused_imports)]
20809        use super::*;
20810        #[derive(Clone, Debug, PartialEq)]
20811        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
20812    }
20813
20814    impl Type {
20815        /// Gets the enum value.
20816        ///
20817        /// Returns `None` if the enum contains an unknown value deserialized from
20818        /// the string representation of enums.
20819        pub fn value(&self) -> std::option::Option<i32> {
20820            match self {
20821                Self::Standard => std::option::Option::Some(0),
20822                Self::TimeLimited => std::option::Option::Some(1),
20823                Self::Stretched => std::option::Option::Some(2),
20824                Self::UnknownValue(u) => u.0.value(),
20825            }
20826        }
20827
20828        /// Gets the enum value as a string.
20829        ///
20830        /// Returns `None` if the enum contains an unknown value deserialized from
20831        /// the integer representation of enums.
20832        pub fn name(&self) -> std::option::Option<&str> {
20833            match self {
20834                Self::Standard => std::option::Option::Some("STANDARD"),
20835                Self::TimeLimited => std::option::Option::Some("TIME_LIMITED"),
20836                Self::Stretched => std::option::Option::Some("STRETCHED"),
20837                Self::UnknownValue(u) => u.0.name(),
20838            }
20839        }
20840    }
20841
20842    impl std::default::Default for Type {
20843        fn default() -> Self {
20844            use std::convert::From;
20845            Self::from(0)
20846        }
20847    }
20848
20849    impl std::fmt::Display for Type {
20850        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
20851            wkt::internal::display_enum(f, self.name(), self.value())
20852        }
20853    }
20854
20855    impl std::convert::From<i32> for Type {
20856        fn from(value: i32) -> Self {
20857            match value {
20858                0 => Self::Standard,
20859                1 => Self::TimeLimited,
20860                2 => Self::Stretched,
20861                _ => Self::UnknownValue(r#type::UnknownValue(
20862                    wkt::internal::UnknownEnumValue::Integer(value),
20863                )),
20864            }
20865        }
20866    }
20867
20868    impl std::convert::From<&str> for Type {
20869        fn from(value: &str) -> Self {
20870            use std::string::ToString;
20871            match value {
20872                "STANDARD" => Self::Standard,
20873                "TIME_LIMITED" => Self::TimeLimited,
20874                "STRETCHED" => Self::Stretched,
20875                _ => Self::UnknownValue(r#type::UnknownValue(
20876                    wkt::internal::UnknownEnumValue::String(value.to_string()),
20877                )),
20878            }
20879        }
20880    }
20881
20882    impl serde::ser::Serialize for Type {
20883        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20884        where
20885            S: serde::Serializer,
20886        {
20887            match self {
20888                Self::Standard => serializer.serialize_i32(0),
20889                Self::TimeLimited => serializer.serialize_i32(1),
20890                Self::Stretched => serializer.serialize_i32(2),
20891                Self::UnknownValue(u) => u.0.serialize(serializer),
20892            }
20893        }
20894    }
20895
20896    impl<'de> serde::de::Deserialize<'de> for Type {
20897        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20898        where
20899            D: serde::Deserializer<'de>,
20900        {
20901            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
20902                ".google.cloud.vmwareengine.v1.PrivateCloud.Type",
20903            ))
20904        }
20905    }
20906}
20907
20908/// A cluster in a private cloud.
20909#[derive(Clone, Debug, Default, PartialEq)]
20910#[non_exhaustive]
20911pub struct Cluster {
20912    /// Output only. The resource name of this cluster.
20913    /// Resource names are schemeless URIs that follow the conventions in
20914    /// <https://cloud.google.com/apis/design/resource_names>.
20915    /// For example:
20916    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
20917    pub name: std::string::String,
20918
20919    /// Output only. Creation time of this resource.
20920    pub create_time: std::option::Option<wkt::Timestamp>,
20921
20922    /// Output only. Last update time of this resource.
20923    pub update_time: std::option::Option<wkt::Timestamp>,
20924
20925    /// Output only. State of the resource.
20926    pub state: crate::model::cluster::State,
20927
20928    /// Output only. True if the cluster is a management cluster; false otherwise.
20929    /// There can only be one management cluster in a private cloud
20930    /// and it has to be the first one.
20931    pub management: bool,
20932
20933    /// Optional. Configuration of the autoscaling applied to this cluster.
20934    pub autoscaling_settings: std::option::Option<crate::model::AutoscalingSettings>,
20935
20936    /// Output only. System-generated unique identifier for the resource.
20937    pub uid: std::string::String,
20938
20939    /// Required. The map of cluster node types in this cluster, where the key is
20940    /// canonical identifier of the node type (corresponds to the `NodeType`).
20941    pub node_type_configs:
20942        std::collections::HashMap<std::string::String, crate::model::NodeTypeConfig>,
20943
20944    /// Optional. Configuration of a stretched cluster. Required for clusters that
20945    /// belong to a STRETCHED private cloud.
20946    pub stretched_cluster_config: std::option::Option<crate::model::StretchedClusterConfig>,
20947
20948    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
20949}
20950
20951impl Cluster {
20952    pub fn new() -> Self {
20953        std::default::Default::default()
20954    }
20955
20956    /// Sets the value of [name][crate::model::Cluster::name].
20957    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
20958        self.name = v.into();
20959        self
20960    }
20961
20962    /// Sets the value of [create_time][crate::model::Cluster::create_time].
20963    pub fn set_create_time<T>(mut self, v: T) -> Self
20964    where
20965        T: std::convert::Into<wkt::Timestamp>,
20966    {
20967        self.create_time = std::option::Option::Some(v.into());
20968        self
20969    }
20970
20971    /// Sets or clears the value of [create_time][crate::model::Cluster::create_time].
20972    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
20973    where
20974        T: std::convert::Into<wkt::Timestamp>,
20975    {
20976        self.create_time = v.map(|x| x.into());
20977        self
20978    }
20979
20980    /// Sets the value of [update_time][crate::model::Cluster::update_time].
20981    pub fn set_update_time<T>(mut self, v: T) -> Self
20982    where
20983        T: std::convert::Into<wkt::Timestamp>,
20984    {
20985        self.update_time = std::option::Option::Some(v.into());
20986        self
20987    }
20988
20989    /// Sets or clears the value of [update_time][crate::model::Cluster::update_time].
20990    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
20991    where
20992        T: std::convert::Into<wkt::Timestamp>,
20993    {
20994        self.update_time = v.map(|x| x.into());
20995        self
20996    }
20997
20998    /// Sets the value of [state][crate::model::Cluster::state].
20999    pub fn set_state<T: std::convert::Into<crate::model::cluster::State>>(mut self, v: T) -> Self {
21000        self.state = v.into();
21001        self
21002    }
21003
21004    /// Sets the value of [management][crate::model::Cluster::management].
21005    pub fn set_management<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
21006        self.management = v.into();
21007        self
21008    }
21009
21010    /// Sets the value of [autoscaling_settings][crate::model::Cluster::autoscaling_settings].
21011    pub fn set_autoscaling_settings<T>(mut self, v: T) -> Self
21012    where
21013        T: std::convert::Into<crate::model::AutoscalingSettings>,
21014    {
21015        self.autoscaling_settings = std::option::Option::Some(v.into());
21016        self
21017    }
21018
21019    /// Sets or clears the value of [autoscaling_settings][crate::model::Cluster::autoscaling_settings].
21020    pub fn set_or_clear_autoscaling_settings<T>(mut self, v: std::option::Option<T>) -> Self
21021    where
21022        T: std::convert::Into<crate::model::AutoscalingSettings>,
21023    {
21024        self.autoscaling_settings = v.map(|x| x.into());
21025        self
21026    }
21027
21028    /// Sets the value of [uid][crate::model::Cluster::uid].
21029    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21030        self.uid = v.into();
21031        self
21032    }
21033
21034    /// Sets the value of [node_type_configs][crate::model::Cluster::node_type_configs].
21035    pub fn set_node_type_configs<T, K, V>(mut self, v: T) -> Self
21036    where
21037        T: std::iter::IntoIterator<Item = (K, V)>,
21038        K: std::convert::Into<std::string::String>,
21039        V: std::convert::Into<crate::model::NodeTypeConfig>,
21040    {
21041        use std::iter::Iterator;
21042        self.node_type_configs = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
21043        self
21044    }
21045
21046    /// Sets the value of [stretched_cluster_config][crate::model::Cluster::stretched_cluster_config].
21047    pub fn set_stretched_cluster_config<T>(mut self, v: T) -> Self
21048    where
21049        T: std::convert::Into<crate::model::StretchedClusterConfig>,
21050    {
21051        self.stretched_cluster_config = std::option::Option::Some(v.into());
21052        self
21053    }
21054
21055    /// Sets or clears the value of [stretched_cluster_config][crate::model::Cluster::stretched_cluster_config].
21056    pub fn set_or_clear_stretched_cluster_config<T>(mut self, v: std::option::Option<T>) -> Self
21057    where
21058        T: std::convert::Into<crate::model::StretchedClusterConfig>,
21059    {
21060        self.stretched_cluster_config = v.map(|x| x.into());
21061        self
21062    }
21063}
21064
21065impl wkt::message::Message for Cluster {
21066    fn typename() -> &'static str {
21067        "type.googleapis.com/google.cloud.vmwareengine.v1.Cluster"
21068    }
21069}
21070
21071#[doc(hidden)]
21072impl<'de> serde::de::Deserialize<'de> for Cluster {
21073    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21074    where
21075        D: serde::Deserializer<'de>,
21076    {
21077        #[allow(non_camel_case_types)]
21078        #[doc(hidden)]
21079        #[derive(PartialEq, Eq, Hash)]
21080        enum __FieldTag {
21081            __name,
21082            __create_time,
21083            __update_time,
21084            __state,
21085            __management,
21086            __autoscaling_settings,
21087            __uid,
21088            __node_type_configs,
21089            __stretched_cluster_config,
21090            Unknown(std::string::String),
21091        }
21092        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
21093            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21094            where
21095                D: serde::Deserializer<'de>,
21096            {
21097                struct Visitor;
21098                impl<'de> serde::de::Visitor<'de> for Visitor {
21099                    type Value = __FieldTag;
21100                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
21101                        formatter.write_str("a field name for Cluster")
21102                    }
21103                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
21104                    where
21105                        E: serde::de::Error,
21106                    {
21107                        use std::result::Result::Ok;
21108                        use std::string::ToString;
21109                        match value {
21110                            "name" => Ok(__FieldTag::__name),
21111                            "createTime" => Ok(__FieldTag::__create_time),
21112                            "create_time" => Ok(__FieldTag::__create_time),
21113                            "updateTime" => Ok(__FieldTag::__update_time),
21114                            "update_time" => Ok(__FieldTag::__update_time),
21115                            "state" => Ok(__FieldTag::__state),
21116                            "management" => Ok(__FieldTag::__management),
21117                            "autoscalingSettings" => Ok(__FieldTag::__autoscaling_settings),
21118                            "autoscaling_settings" => Ok(__FieldTag::__autoscaling_settings),
21119                            "uid" => Ok(__FieldTag::__uid),
21120                            "nodeTypeConfigs" => Ok(__FieldTag::__node_type_configs),
21121                            "node_type_configs" => Ok(__FieldTag::__node_type_configs),
21122                            "stretchedClusterConfig" => Ok(__FieldTag::__stretched_cluster_config),
21123                            "stretched_cluster_config" => {
21124                                Ok(__FieldTag::__stretched_cluster_config)
21125                            }
21126                            _ => Ok(__FieldTag::Unknown(value.to_string())),
21127                        }
21128                    }
21129                }
21130                deserializer.deserialize_identifier(Visitor)
21131            }
21132        }
21133        struct Visitor;
21134        impl<'de> serde::de::Visitor<'de> for Visitor {
21135            type Value = Cluster;
21136            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
21137                formatter.write_str("struct Cluster")
21138            }
21139            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
21140            where
21141                A: serde::de::MapAccess<'de>,
21142            {
21143                #[allow(unused_imports)]
21144                use serde::de::Error;
21145                use std::option::Option::Some;
21146                let mut fields = std::collections::HashSet::new();
21147                let mut result = Self::Value::new();
21148                while let Some(tag) = map.next_key::<__FieldTag>()? {
21149                    #[allow(clippy::match_single_binding)]
21150                    match tag {
21151                        __FieldTag::__name => {
21152                            if !fields.insert(__FieldTag::__name) {
21153                                return std::result::Result::Err(A::Error::duplicate_field(
21154                                    "multiple values for name",
21155                                ));
21156                            }
21157                            result.name = map
21158                                .next_value::<std::option::Option<std::string::String>>()?
21159                                .unwrap_or_default();
21160                        }
21161                        __FieldTag::__create_time => {
21162                            if !fields.insert(__FieldTag::__create_time) {
21163                                return std::result::Result::Err(A::Error::duplicate_field(
21164                                    "multiple values for create_time",
21165                                ));
21166                            }
21167                            result.create_time =
21168                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
21169                        }
21170                        __FieldTag::__update_time => {
21171                            if !fields.insert(__FieldTag::__update_time) {
21172                                return std::result::Result::Err(A::Error::duplicate_field(
21173                                    "multiple values for update_time",
21174                                ));
21175                            }
21176                            result.update_time =
21177                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
21178                        }
21179                        __FieldTag::__state => {
21180                            if !fields.insert(__FieldTag::__state) {
21181                                return std::result::Result::Err(A::Error::duplicate_field(
21182                                    "multiple values for state",
21183                                ));
21184                            }
21185                            result.state = map
21186                                .next_value::<std::option::Option<crate::model::cluster::State>>()?
21187                                .unwrap_or_default();
21188                        }
21189                        __FieldTag::__management => {
21190                            if !fields.insert(__FieldTag::__management) {
21191                                return std::result::Result::Err(A::Error::duplicate_field(
21192                                    "multiple values for management",
21193                                ));
21194                            }
21195                            result.management = map
21196                                .next_value::<std::option::Option<bool>>()?
21197                                .unwrap_or_default();
21198                        }
21199                        __FieldTag::__autoscaling_settings => {
21200                            if !fields.insert(__FieldTag::__autoscaling_settings) {
21201                                return std::result::Result::Err(A::Error::duplicate_field(
21202                                    "multiple values for autoscaling_settings",
21203                                ));
21204                            }
21205                            result.autoscaling_settings = map.next_value::<std::option::Option<crate::model::AutoscalingSettings>>()?
21206                                ;
21207                        }
21208                        __FieldTag::__uid => {
21209                            if !fields.insert(__FieldTag::__uid) {
21210                                return std::result::Result::Err(A::Error::duplicate_field(
21211                                    "multiple values for uid",
21212                                ));
21213                            }
21214                            result.uid = map
21215                                .next_value::<std::option::Option<std::string::String>>()?
21216                                .unwrap_or_default();
21217                        }
21218                        __FieldTag::__node_type_configs => {
21219                            if !fields.insert(__FieldTag::__node_type_configs) {
21220                                return std::result::Result::Err(A::Error::duplicate_field(
21221                                    "multiple values for node_type_configs",
21222                                ));
21223                            }
21224                            result.node_type_configs = map
21225                                .next_value::<std::option::Option<
21226                                    std::collections::HashMap<
21227                                        std::string::String,
21228                                        crate::model::NodeTypeConfig,
21229                                    >,
21230                                >>()?
21231                                .unwrap_or_default();
21232                        }
21233                        __FieldTag::__stretched_cluster_config => {
21234                            if !fields.insert(__FieldTag::__stretched_cluster_config) {
21235                                return std::result::Result::Err(A::Error::duplicate_field(
21236                                    "multiple values for stretched_cluster_config",
21237                                ));
21238                            }
21239                            result.stretched_cluster_config = map.next_value::<std::option::Option<crate::model::StretchedClusterConfig>>()?
21240                                ;
21241                        }
21242                        __FieldTag::Unknown(key) => {
21243                            let value = map.next_value::<serde_json::Value>()?;
21244                            result._unknown_fields.insert(key, value);
21245                        }
21246                    }
21247                }
21248                std::result::Result::Ok(result)
21249            }
21250        }
21251        deserializer.deserialize_any(Visitor)
21252    }
21253}
21254
21255#[doc(hidden)]
21256impl serde::ser::Serialize for Cluster {
21257    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
21258    where
21259        S: serde::ser::Serializer,
21260    {
21261        use serde::ser::SerializeMap;
21262        #[allow(unused_imports)]
21263        use std::option::Option::Some;
21264        let mut state = serializer.serialize_map(std::option::Option::None)?;
21265        if !self.name.is_empty() {
21266            state.serialize_entry("name", &self.name)?;
21267        }
21268        if self.create_time.is_some() {
21269            state.serialize_entry("createTime", &self.create_time)?;
21270        }
21271        if self.update_time.is_some() {
21272            state.serialize_entry("updateTime", &self.update_time)?;
21273        }
21274        if !wkt::internal::is_default(&self.state) {
21275            state.serialize_entry("state", &self.state)?;
21276        }
21277        if !wkt::internal::is_default(&self.management) {
21278            state.serialize_entry("management", &self.management)?;
21279        }
21280        if self.autoscaling_settings.is_some() {
21281            state.serialize_entry("autoscalingSettings", &self.autoscaling_settings)?;
21282        }
21283        if !self.uid.is_empty() {
21284            state.serialize_entry("uid", &self.uid)?;
21285        }
21286        if !self.node_type_configs.is_empty() {
21287            state.serialize_entry("nodeTypeConfigs", &self.node_type_configs)?;
21288        }
21289        if self.stretched_cluster_config.is_some() {
21290            state.serialize_entry("stretchedClusterConfig", &self.stretched_cluster_config)?;
21291        }
21292        if !self._unknown_fields.is_empty() {
21293            for (key, value) in self._unknown_fields.iter() {
21294                state.serialize_entry(key, &value)?;
21295            }
21296        }
21297        state.end()
21298    }
21299}
21300
21301/// Defines additional types related to [Cluster].
21302pub mod cluster {
21303    #[allow(unused_imports)]
21304    use super::*;
21305
21306    /// Enum State defines possible states of private cloud clusters.
21307    ///
21308    /// # Working with unknown values
21309    ///
21310    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
21311    /// additional enum variants at any time. Adding new variants is not considered
21312    /// a breaking change. Applications should write their code in anticipation of:
21313    ///
21314    /// - New values appearing in future releases of the client library, **and**
21315    /// - New values received dynamically, without application changes.
21316    ///
21317    /// Please consult the [Working with enums] section in the user guide for some
21318    /// guidelines.
21319    ///
21320    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
21321    #[derive(Clone, Debug, PartialEq)]
21322    #[non_exhaustive]
21323    pub enum State {
21324        /// The default value. This value should never be used.
21325        Unspecified,
21326        /// The Cluster is operational and can be used by the user.
21327        Active,
21328        /// The Cluster is being deployed.
21329        Creating,
21330        /// Adding or removing of a node to the cluster, any other cluster specific
21331        /// updates.
21332        Updating,
21333        /// The Cluster is being deleted.
21334        Deleting,
21335        /// The Cluster is undergoing maintenance, for example: a failed node is
21336        /// getting replaced.
21337        Repairing,
21338        /// If set, the enum was initialized with an unknown value.
21339        ///
21340        /// Applications can examine the value using [State::value] or
21341        /// [State::name].
21342        UnknownValue(state::UnknownValue),
21343    }
21344
21345    #[doc(hidden)]
21346    pub mod state {
21347        #[allow(unused_imports)]
21348        use super::*;
21349        #[derive(Clone, Debug, PartialEq)]
21350        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
21351    }
21352
21353    impl State {
21354        /// Gets the enum value.
21355        ///
21356        /// Returns `None` if the enum contains an unknown value deserialized from
21357        /// the string representation of enums.
21358        pub fn value(&self) -> std::option::Option<i32> {
21359            match self {
21360                Self::Unspecified => std::option::Option::Some(0),
21361                Self::Active => std::option::Option::Some(1),
21362                Self::Creating => std::option::Option::Some(2),
21363                Self::Updating => std::option::Option::Some(3),
21364                Self::Deleting => std::option::Option::Some(4),
21365                Self::Repairing => std::option::Option::Some(5),
21366                Self::UnknownValue(u) => u.0.value(),
21367            }
21368        }
21369
21370        /// Gets the enum value as a string.
21371        ///
21372        /// Returns `None` if the enum contains an unknown value deserialized from
21373        /// the integer representation of enums.
21374        pub fn name(&self) -> std::option::Option<&str> {
21375            match self {
21376                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
21377                Self::Active => std::option::Option::Some("ACTIVE"),
21378                Self::Creating => std::option::Option::Some("CREATING"),
21379                Self::Updating => std::option::Option::Some("UPDATING"),
21380                Self::Deleting => std::option::Option::Some("DELETING"),
21381                Self::Repairing => std::option::Option::Some("REPAIRING"),
21382                Self::UnknownValue(u) => u.0.name(),
21383            }
21384        }
21385    }
21386
21387    impl std::default::Default for State {
21388        fn default() -> Self {
21389            use std::convert::From;
21390            Self::from(0)
21391        }
21392    }
21393
21394    impl std::fmt::Display for State {
21395        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
21396            wkt::internal::display_enum(f, self.name(), self.value())
21397        }
21398    }
21399
21400    impl std::convert::From<i32> for State {
21401        fn from(value: i32) -> Self {
21402            match value {
21403                0 => Self::Unspecified,
21404                1 => Self::Active,
21405                2 => Self::Creating,
21406                3 => Self::Updating,
21407                4 => Self::Deleting,
21408                5 => Self::Repairing,
21409                _ => Self::UnknownValue(state::UnknownValue(
21410                    wkt::internal::UnknownEnumValue::Integer(value),
21411                )),
21412            }
21413        }
21414    }
21415
21416    impl std::convert::From<&str> for State {
21417        fn from(value: &str) -> Self {
21418            use std::string::ToString;
21419            match value {
21420                "STATE_UNSPECIFIED" => Self::Unspecified,
21421                "ACTIVE" => Self::Active,
21422                "CREATING" => Self::Creating,
21423                "UPDATING" => Self::Updating,
21424                "DELETING" => Self::Deleting,
21425                "REPAIRING" => Self::Repairing,
21426                _ => Self::UnknownValue(state::UnknownValue(
21427                    wkt::internal::UnknownEnumValue::String(value.to_string()),
21428                )),
21429            }
21430        }
21431    }
21432
21433    impl serde::ser::Serialize for State {
21434        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
21435        where
21436            S: serde::Serializer,
21437        {
21438            match self {
21439                Self::Unspecified => serializer.serialize_i32(0),
21440                Self::Active => serializer.serialize_i32(1),
21441                Self::Creating => serializer.serialize_i32(2),
21442                Self::Updating => serializer.serialize_i32(3),
21443                Self::Deleting => serializer.serialize_i32(4),
21444                Self::Repairing => serializer.serialize_i32(5),
21445                Self::UnknownValue(u) => u.0.serialize(serializer),
21446            }
21447        }
21448    }
21449
21450    impl<'de> serde::de::Deserialize<'de> for State {
21451        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21452        where
21453            D: serde::Deserializer<'de>,
21454        {
21455            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
21456                ".google.cloud.vmwareengine.v1.Cluster.State",
21457            ))
21458        }
21459    }
21460}
21461
21462/// Node in a cluster.
21463#[derive(Clone, Debug, Default, PartialEq)]
21464#[non_exhaustive]
21465pub struct Node {
21466    /// Output only. The resource name of this node.
21467    /// Resource names are schemeless URIs that follow the conventions in
21468    /// <https://cloud.google.com/apis/design/resource_names>.
21469    /// For example:
21470    /// projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster/nodes/my-node
21471    pub name: std::string::String,
21472
21473    /// Output only. Fully qualified domain name of the node.
21474    pub fqdn: std::string::String,
21475
21476    /// Output only. Internal IP address of the node.
21477    pub internal_ip: std::string::String,
21478
21479    /// Output only. The canonical identifier of the node type (corresponds to the
21480    /// `NodeType`).
21481    /// For example: standard-72.
21482    pub node_type_id: std::string::String,
21483
21484    /// Output only. The version number of the VMware ESXi
21485    /// management component in this cluster.
21486    pub version: std::string::String,
21487
21488    /// Output only. Customized number of cores
21489    pub custom_core_count: i64,
21490
21491    /// Output only. The state of the appliance.
21492    pub state: crate::model::node::State,
21493
21494    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
21495}
21496
21497impl Node {
21498    pub fn new() -> Self {
21499        std::default::Default::default()
21500    }
21501
21502    /// Sets the value of [name][crate::model::Node::name].
21503    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21504        self.name = v.into();
21505        self
21506    }
21507
21508    /// Sets the value of [fqdn][crate::model::Node::fqdn].
21509    pub fn set_fqdn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21510        self.fqdn = v.into();
21511        self
21512    }
21513
21514    /// Sets the value of [internal_ip][crate::model::Node::internal_ip].
21515    pub fn set_internal_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21516        self.internal_ip = v.into();
21517        self
21518    }
21519
21520    /// Sets the value of [node_type_id][crate::model::Node::node_type_id].
21521    pub fn set_node_type_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21522        self.node_type_id = v.into();
21523        self
21524    }
21525
21526    /// Sets the value of [version][crate::model::Node::version].
21527    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21528        self.version = v.into();
21529        self
21530    }
21531
21532    /// Sets the value of [custom_core_count][crate::model::Node::custom_core_count].
21533    pub fn set_custom_core_count<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
21534        self.custom_core_count = v.into();
21535        self
21536    }
21537
21538    /// Sets the value of [state][crate::model::Node::state].
21539    pub fn set_state<T: std::convert::Into<crate::model::node::State>>(mut self, v: T) -> Self {
21540        self.state = v.into();
21541        self
21542    }
21543}
21544
21545impl wkt::message::Message for Node {
21546    fn typename() -> &'static str {
21547        "type.googleapis.com/google.cloud.vmwareengine.v1.Node"
21548    }
21549}
21550
21551#[doc(hidden)]
21552impl<'de> serde::de::Deserialize<'de> for Node {
21553    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21554    where
21555        D: serde::Deserializer<'de>,
21556    {
21557        #[allow(non_camel_case_types)]
21558        #[doc(hidden)]
21559        #[derive(PartialEq, Eq, Hash)]
21560        enum __FieldTag {
21561            __name,
21562            __fqdn,
21563            __internal_ip,
21564            __node_type_id,
21565            __version,
21566            __custom_core_count,
21567            __state,
21568            Unknown(std::string::String),
21569        }
21570        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
21571            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21572            where
21573                D: serde::Deserializer<'de>,
21574            {
21575                struct Visitor;
21576                impl<'de> serde::de::Visitor<'de> for Visitor {
21577                    type Value = __FieldTag;
21578                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
21579                        formatter.write_str("a field name for Node")
21580                    }
21581                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
21582                    where
21583                        E: serde::de::Error,
21584                    {
21585                        use std::result::Result::Ok;
21586                        use std::string::ToString;
21587                        match value {
21588                            "name" => Ok(__FieldTag::__name),
21589                            "fqdn" => Ok(__FieldTag::__fqdn),
21590                            "internalIp" => Ok(__FieldTag::__internal_ip),
21591                            "internal_ip" => Ok(__FieldTag::__internal_ip),
21592                            "nodeTypeId" => Ok(__FieldTag::__node_type_id),
21593                            "node_type_id" => Ok(__FieldTag::__node_type_id),
21594                            "version" => Ok(__FieldTag::__version),
21595                            "customCoreCount" => Ok(__FieldTag::__custom_core_count),
21596                            "custom_core_count" => Ok(__FieldTag::__custom_core_count),
21597                            "state" => Ok(__FieldTag::__state),
21598                            _ => Ok(__FieldTag::Unknown(value.to_string())),
21599                        }
21600                    }
21601                }
21602                deserializer.deserialize_identifier(Visitor)
21603            }
21604        }
21605        struct Visitor;
21606        impl<'de> serde::de::Visitor<'de> for Visitor {
21607            type Value = Node;
21608            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
21609                formatter.write_str("struct Node")
21610            }
21611            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
21612            where
21613                A: serde::de::MapAccess<'de>,
21614            {
21615                #[allow(unused_imports)]
21616                use serde::de::Error;
21617                use std::option::Option::Some;
21618                let mut fields = std::collections::HashSet::new();
21619                let mut result = Self::Value::new();
21620                while let Some(tag) = map.next_key::<__FieldTag>()? {
21621                    #[allow(clippy::match_single_binding)]
21622                    match tag {
21623                        __FieldTag::__name => {
21624                            if !fields.insert(__FieldTag::__name) {
21625                                return std::result::Result::Err(A::Error::duplicate_field(
21626                                    "multiple values for name",
21627                                ));
21628                            }
21629                            result.name = map
21630                                .next_value::<std::option::Option<std::string::String>>()?
21631                                .unwrap_or_default();
21632                        }
21633                        __FieldTag::__fqdn => {
21634                            if !fields.insert(__FieldTag::__fqdn) {
21635                                return std::result::Result::Err(A::Error::duplicate_field(
21636                                    "multiple values for fqdn",
21637                                ));
21638                            }
21639                            result.fqdn = map
21640                                .next_value::<std::option::Option<std::string::String>>()?
21641                                .unwrap_or_default();
21642                        }
21643                        __FieldTag::__internal_ip => {
21644                            if !fields.insert(__FieldTag::__internal_ip) {
21645                                return std::result::Result::Err(A::Error::duplicate_field(
21646                                    "multiple values for internal_ip",
21647                                ));
21648                            }
21649                            result.internal_ip = map
21650                                .next_value::<std::option::Option<std::string::String>>()?
21651                                .unwrap_or_default();
21652                        }
21653                        __FieldTag::__node_type_id => {
21654                            if !fields.insert(__FieldTag::__node_type_id) {
21655                                return std::result::Result::Err(A::Error::duplicate_field(
21656                                    "multiple values for node_type_id",
21657                                ));
21658                            }
21659                            result.node_type_id = map
21660                                .next_value::<std::option::Option<std::string::String>>()?
21661                                .unwrap_or_default();
21662                        }
21663                        __FieldTag::__version => {
21664                            if !fields.insert(__FieldTag::__version) {
21665                                return std::result::Result::Err(A::Error::duplicate_field(
21666                                    "multiple values for version",
21667                                ));
21668                            }
21669                            result.version = map
21670                                .next_value::<std::option::Option<std::string::String>>()?
21671                                .unwrap_or_default();
21672                        }
21673                        __FieldTag::__custom_core_count => {
21674                            if !fields.insert(__FieldTag::__custom_core_count) {
21675                                return std::result::Result::Err(A::Error::duplicate_field(
21676                                    "multiple values for custom_core_count",
21677                                ));
21678                            }
21679                            struct __With(std::option::Option<i64>);
21680                            impl<'de> serde::de::Deserialize<'de> for __With {
21681                                fn deserialize<D>(
21682                                    deserializer: D,
21683                                ) -> std::result::Result<Self, D::Error>
21684                                where
21685                                    D: serde::de::Deserializer<'de>,
21686                                {
21687                                    serde_with::As::< std::option::Option<wkt::internal::I64> >::deserialize(deserializer).map(__With)
21688                                }
21689                            }
21690                            result.custom_core_count =
21691                                map.next_value::<__With>()?.0.unwrap_or_default();
21692                        }
21693                        __FieldTag::__state => {
21694                            if !fields.insert(__FieldTag::__state) {
21695                                return std::result::Result::Err(A::Error::duplicate_field(
21696                                    "multiple values for state",
21697                                ));
21698                            }
21699                            result.state = map
21700                                .next_value::<std::option::Option<crate::model::node::State>>()?
21701                                .unwrap_or_default();
21702                        }
21703                        __FieldTag::Unknown(key) => {
21704                            let value = map.next_value::<serde_json::Value>()?;
21705                            result._unknown_fields.insert(key, value);
21706                        }
21707                    }
21708                }
21709                std::result::Result::Ok(result)
21710            }
21711        }
21712        deserializer.deserialize_any(Visitor)
21713    }
21714}
21715
21716#[doc(hidden)]
21717impl serde::ser::Serialize for Node {
21718    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
21719    where
21720        S: serde::ser::Serializer,
21721    {
21722        use serde::ser::SerializeMap;
21723        #[allow(unused_imports)]
21724        use std::option::Option::Some;
21725        let mut state = serializer.serialize_map(std::option::Option::None)?;
21726        if !self.name.is_empty() {
21727            state.serialize_entry("name", &self.name)?;
21728        }
21729        if !self.fqdn.is_empty() {
21730            state.serialize_entry("fqdn", &self.fqdn)?;
21731        }
21732        if !self.internal_ip.is_empty() {
21733            state.serialize_entry("internalIp", &self.internal_ip)?;
21734        }
21735        if !self.node_type_id.is_empty() {
21736            state.serialize_entry("nodeTypeId", &self.node_type_id)?;
21737        }
21738        if !self.version.is_empty() {
21739            state.serialize_entry("version", &self.version)?;
21740        }
21741        if !wkt::internal::is_default(&self.custom_core_count) {
21742            struct __With<'a>(&'a i64);
21743            impl<'a> serde::ser::Serialize for __With<'a> {
21744                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
21745                where
21746                    S: serde::ser::Serializer,
21747                {
21748                    serde_with::As::<wkt::internal::I64>::serialize(self.0, serializer)
21749                }
21750            }
21751            state.serialize_entry("customCoreCount", &__With(&self.custom_core_count))?;
21752        }
21753        if !wkt::internal::is_default(&self.state) {
21754            state.serialize_entry("state", &self.state)?;
21755        }
21756        if !self._unknown_fields.is_empty() {
21757            for (key, value) in self._unknown_fields.iter() {
21758                state.serialize_entry(key, &value)?;
21759            }
21760        }
21761        state.end()
21762    }
21763}
21764
21765/// Defines additional types related to [Node].
21766pub mod node {
21767    #[allow(unused_imports)]
21768    use super::*;
21769
21770    /// Enum State defines possible states of a node in a cluster.
21771    ///
21772    /// # Working with unknown values
21773    ///
21774    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
21775    /// additional enum variants at any time. Adding new variants is not considered
21776    /// a breaking change. Applications should write their code in anticipation of:
21777    ///
21778    /// - New values appearing in future releases of the client library, **and**
21779    /// - New values received dynamically, without application changes.
21780    ///
21781    /// Please consult the [Working with enums] section in the user guide for some
21782    /// guidelines.
21783    ///
21784    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
21785    #[derive(Clone, Debug, PartialEq)]
21786    #[non_exhaustive]
21787    pub enum State {
21788        /// The default value. This value should never be used.
21789        Unspecified,
21790        /// Node is operational and can be used by the user.
21791        Active,
21792        /// Node is being provisioned.
21793        Creating,
21794        /// Node is in a failed state.
21795        Failed,
21796        /// Node is undergoing maintenance, e.g.: during private cloud upgrade.
21797        Upgrading,
21798        /// If set, the enum was initialized with an unknown value.
21799        ///
21800        /// Applications can examine the value using [State::value] or
21801        /// [State::name].
21802        UnknownValue(state::UnknownValue),
21803    }
21804
21805    #[doc(hidden)]
21806    pub mod state {
21807        #[allow(unused_imports)]
21808        use super::*;
21809        #[derive(Clone, Debug, PartialEq)]
21810        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
21811    }
21812
21813    impl State {
21814        /// Gets the enum value.
21815        ///
21816        /// Returns `None` if the enum contains an unknown value deserialized from
21817        /// the string representation of enums.
21818        pub fn value(&self) -> std::option::Option<i32> {
21819            match self {
21820                Self::Unspecified => std::option::Option::Some(0),
21821                Self::Active => std::option::Option::Some(1),
21822                Self::Creating => std::option::Option::Some(2),
21823                Self::Failed => std::option::Option::Some(3),
21824                Self::Upgrading => std::option::Option::Some(4),
21825                Self::UnknownValue(u) => u.0.value(),
21826            }
21827        }
21828
21829        /// Gets the enum value as a string.
21830        ///
21831        /// Returns `None` if the enum contains an unknown value deserialized from
21832        /// the integer representation of enums.
21833        pub fn name(&self) -> std::option::Option<&str> {
21834            match self {
21835                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
21836                Self::Active => std::option::Option::Some("ACTIVE"),
21837                Self::Creating => std::option::Option::Some("CREATING"),
21838                Self::Failed => std::option::Option::Some("FAILED"),
21839                Self::Upgrading => std::option::Option::Some("UPGRADING"),
21840                Self::UnknownValue(u) => u.0.name(),
21841            }
21842        }
21843    }
21844
21845    impl std::default::Default for State {
21846        fn default() -> Self {
21847            use std::convert::From;
21848            Self::from(0)
21849        }
21850    }
21851
21852    impl std::fmt::Display for State {
21853        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
21854            wkt::internal::display_enum(f, self.name(), self.value())
21855        }
21856    }
21857
21858    impl std::convert::From<i32> for State {
21859        fn from(value: i32) -> Self {
21860            match value {
21861                0 => Self::Unspecified,
21862                1 => Self::Active,
21863                2 => Self::Creating,
21864                3 => Self::Failed,
21865                4 => Self::Upgrading,
21866                _ => Self::UnknownValue(state::UnknownValue(
21867                    wkt::internal::UnknownEnumValue::Integer(value),
21868                )),
21869            }
21870        }
21871    }
21872
21873    impl std::convert::From<&str> for State {
21874        fn from(value: &str) -> Self {
21875            use std::string::ToString;
21876            match value {
21877                "STATE_UNSPECIFIED" => Self::Unspecified,
21878                "ACTIVE" => Self::Active,
21879                "CREATING" => Self::Creating,
21880                "FAILED" => Self::Failed,
21881                "UPGRADING" => Self::Upgrading,
21882                _ => Self::UnknownValue(state::UnknownValue(
21883                    wkt::internal::UnknownEnumValue::String(value.to_string()),
21884                )),
21885            }
21886        }
21887    }
21888
21889    impl serde::ser::Serialize for State {
21890        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
21891        where
21892            S: serde::Serializer,
21893        {
21894            match self {
21895                Self::Unspecified => serializer.serialize_i32(0),
21896                Self::Active => serializer.serialize_i32(1),
21897                Self::Creating => serializer.serialize_i32(2),
21898                Self::Failed => serializer.serialize_i32(3),
21899                Self::Upgrading => serializer.serialize_i32(4),
21900                Self::UnknownValue(u) => u.0.serialize(serializer),
21901            }
21902        }
21903    }
21904
21905    impl<'de> serde::de::Deserialize<'de> for State {
21906        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
21907        where
21908            D: serde::Deserializer<'de>,
21909        {
21910            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
21911                ".google.cloud.vmwareengine.v1.Node.State",
21912            ))
21913        }
21914    }
21915}
21916
21917/// Represents an allocated external IP address and its corresponding internal IP
21918/// address in a private cloud.
21919#[derive(Clone, Debug, Default, PartialEq)]
21920#[non_exhaustive]
21921pub struct ExternalAddress {
21922    /// Output only. The resource name of this external IP address.
21923    /// Resource names are schemeless URIs that follow the conventions in
21924    /// <https://cloud.google.com/apis/design/resource_names>.
21925    /// For example:
21926    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`
21927    pub name: std::string::String,
21928
21929    /// Output only. Creation time of this resource.
21930    pub create_time: std::option::Option<wkt::Timestamp>,
21931
21932    /// Output only. Last update time of this resource.
21933    pub update_time: std::option::Option<wkt::Timestamp>,
21934
21935    /// The internal IP address of a workload VM.
21936    pub internal_ip: std::string::String,
21937
21938    /// Output only. The external IP address of a workload VM.
21939    pub external_ip: std::string::String,
21940
21941    /// Output only. The state of the resource.
21942    pub state: crate::model::external_address::State,
21943
21944    /// Output only. System-generated unique identifier for the resource.
21945    pub uid: std::string::String,
21946
21947    /// User-provided description for this resource.
21948    pub description: std::string::String,
21949
21950    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
21951}
21952
21953impl ExternalAddress {
21954    pub fn new() -> Self {
21955        std::default::Default::default()
21956    }
21957
21958    /// Sets the value of [name][crate::model::ExternalAddress::name].
21959    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
21960        self.name = v.into();
21961        self
21962    }
21963
21964    /// Sets the value of [create_time][crate::model::ExternalAddress::create_time].
21965    pub fn set_create_time<T>(mut self, v: T) -> Self
21966    where
21967        T: std::convert::Into<wkt::Timestamp>,
21968    {
21969        self.create_time = std::option::Option::Some(v.into());
21970        self
21971    }
21972
21973    /// Sets or clears the value of [create_time][crate::model::ExternalAddress::create_time].
21974    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
21975    where
21976        T: std::convert::Into<wkt::Timestamp>,
21977    {
21978        self.create_time = v.map(|x| x.into());
21979        self
21980    }
21981
21982    /// Sets the value of [update_time][crate::model::ExternalAddress::update_time].
21983    pub fn set_update_time<T>(mut self, v: T) -> Self
21984    where
21985        T: std::convert::Into<wkt::Timestamp>,
21986    {
21987        self.update_time = std::option::Option::Some(v.into());
21988        self
21989    }
21990
21991    /// Sets or clears the value of [update_time][crate::model::ExternalAddress::update_time].
21992    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
21993    where
21994        T: std::convert::Into<wkt::Timestamp>,
21995    {
21996        self.update_time = v.map(|x| x.into());
21997        self
21998    }
21999
22000    /// Sets the value of [internal_ip][crate::model::ExternalAddress::internal_ip].
22001    pub fn set_internal_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22002        self.internal_ip = v.into();
22003        self
22004    }
22005
22006    /// Sets the value of [external_ip][crate::model::ExternalAddress::external_ip].
22007    pub fn set_external_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22008        self.external_ip = v.into();
22009        self
22010    }
22011
22012    /// Sets the value of [state][crate::model::ExternalAddress::state].
22013    pub fn set_state<T: std::convert::Into<crate::model::external_address::State>>(
22014        mut self,
22015        v: T,
22016    ) -> Self {
22017        self.state = v.into();
22018        self
22019    }
22020
22021    /// Sets the value of [uid][crate::model::ExternalAddress::uid].
22022    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22023        self.uid = v.into();
22024        self
22025    }
22026
22027    /// Sets the value of [description][crate::model::ExternalAddress::description].
22028    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22029        self.description = v.into();
22030        self
22031    }
22032}
22033
22034impl wkt::message::Message for ExternalAddress {
22035    fn typename() -> &'static str {
22036        "type.googleapis.com/google.cloud.vmwareengine.v1.ExternalAddress"
22037    }
22038}
22039
22040#[doc(hidden)]
22041impl<'de> serde::de::Deserialize<'de> for ExternalAddress {
22042    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22043    where
22044        D: serde::Deserializer<'de>,
22045    {
22046        #[allow(non_camel_case_types)]
22047        #[doc(hidden)]
22048        #[derive(PartialEq, Eq, Hash)]
22049        enum __FieldTag {
22050            __name,
22051            __create_time,
22052            __update_time,
22053            __internal_ip,
22054            __external_ip,
22055            __state,
22056            __uid,
22057            __description,
22058            Unknown(std::string::String),
22059        }
22060        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
22061            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22062            where
22063                D: serde::Deserializer<'de>,
22064            {
22065                struct Visitor;
22066                impl<'de> serde::de::Visitor<'de> for Visitor {
22067                    type Value = __FieldTag;
22068                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
22069                        formatter.write_str("a field name for ExternalAddress")
22070                    }
22071                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
22072                    where
22073                        E: serde::de::Error,
22074                    {
22075                        use std::result::Result::Ok;
22076                        use std::string::ToString;
22077                        match value {
22078                            "name" => Ok(__FieldTag::__name),
22079                            "createTime" => Ok(__FieldTag::__create_time),
22080                            "create_time" => Ok(__FieldTag::__create_time),
22081                            "updateTime" => Ok(__FieldTag::__update_time),
22082                            "update_time" => Ok(__FieldTag::__update_time),
22083                            "internalIp" => Ok(__FieldTag::__internal_ip),
22084                            "internal_ip" => Ok(__FieldTag::__internal_ip),
22085                            "externalIp" => Ok(__FieldTag::__external_ip),
22086                            "external_ip" => Ok(__FieldTag::__external_ip),
22087                            "state" => Ok(__FieldTag::__state),
22088                            "uid" => Ok(__FieldTag::__uid),
22089                            "description" => Ok(__FieldTag::__description),
22090                            _ => Ok(__FieldTag::Unknown(value.to_string())),
22091                        }
22092                    }
22093                }
22094                deserializer.deserialize_identifier(Visitor)
22095            }
22096        }
22097        struct Visitor;
22098        impl<'de> serde::de::Visitor<'de> for Visitor {
22099            type Value = ExternalAddress;
22100            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
22101                formatter.write_str("struct ExternalAddress")
22102            }
22103            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
22104            where
22105                A: serde::de::MapAccess<'de>,
22106            {
22107                #[allow(unused_imports)]
22108                use serde::de::Error;
22109                use std::option::Option::Some;
22110                let mut fields = std::collections::HashSet::new();
22111                let mut result = Self::Value::new();
22112                while let Some(tag) = map.next_key::<__FieldTag>()? {
22113                    #[allow(clippy::match_single_binding)]
22114                    match tag {
22115                        __FieldTag::__name => {
22116                            if !fields.insert(__FieldTag::__name) {
22117                                return std::result::Result::Err(A::Error::duplicate_field(
22118                                    "multiple values for name",
22119                                ));
22120                            }
22121                            result.name = map
22122                                .next_value::<std::option::Option<std::string::String>>()?
22123                                .unwrap_or_default();
22124                        }
22125                        __FieldTag::__create_time => {
22126                            if !fields.insert(__FieldTag::__create_time) {
22127                                return std::result::Result::Err(A::Error::duplicate_field(
22128                                    "multiple values for create_time",
22129                                ));
22130                            }
22131                            result.create_time =
22132                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
22133                        }
22134                        __FieldTag::__update_time => {
22135                            if !fields.insert(__FieldTag::__update_time) {
22136                                return std::result::Result::Err(A::Error::duplicate_field(
22137                                    "multiple values for update_time",
22138                                ));
22139                            }
22140                            result.update_time =
22141                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
22142                        }
22143                        __FieldTag::__internal_ip => {
22144                            if !fields.insert(__FieldTag::__internal_ip) {
22145                                return std::result::Result::Err(A::Error::duplicate_field(
22146                                    "multiple values for internal_ip",
22147                                ));
22148                            }
22149                            result.internal_ip = map
22150                                .next_value::<std::option::Option<std::string::String>>()?
22151                                .unwrap_or_default();
22152                        }
22153                        __FieldTag::__external_ip => {
22154                            if !fields.insert(__FieldTag::__external_ip) {
22155                                return std::result::Result::Err(A::Error::duplicate_field(
22156                                    "multiple values for external_ip",
22157                                ));
22158                            }
22159                            result.external_ip = map
22160                                .next_value::<std::option::Option<std::string::String>>()?
22161                                .unwrap_or_default();
22162                        }
22163                        __FieldTag::__state => {
22164                            if !fields.insert(__FieldTag::__state) {
22165                                return std::result::Result::Err(A::Error::duplicate_field(
22166                                    "multiple values for state",
22167                                ));
22168                            }
22169                            result.state = map.next_value::<std::option::Option<crate::model::external_address::State>>()?.unwrap_or_default();
22170                        }
22171                        __FieldTag::__uid => {
22172                            if !fields.insert(__FieldTag::__uid) {
22173                                return std::result::Result::Err(A::Error::duplicate_field(
22174                                    "multiple values for uid",
22175                                ));
22176                            }
22177                            result.uid = map
22178                                .next_value::<std::option::Option<std::string::String>>()?
22179                                .unwrap_or_default();
22180                        }
22181                        __FieldTag::__description => {
22182                            if !fields.insert(__FieldTag::__description) {
22183                                return std::result::Result::Err(A::Error::duplicate_field(
22184                                    "multiple values for description",
22185                                ));
22186                            }
22187                            result.description = map
22188                                .next_value::<std::option::Option<std::string::String>>()?
22189                                .unwrap_or_default();
22190                        }
22191                        __FieldTag::Unknown(key) => {
22192                            let value = map.next_value::<serde_json::Value>()?;
22193                            result._unknown_fields.insert(key, value);
22194                        }
22195                    }
22196                }
22197                std::result::Result::Ok(result)
22198            }
22199        }
22200        deserializer.deserialize_any(Visitor)
22201    }
22202}
22203
22204#[doc(hidden)]
22205impl serde::ser::Serialize for ExternalAddress {
22206    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
22207    where
22208        S: serde::ser::Serializer,
22209    {
22210        use serde::ser::SerializeMap;
22211        #[allow(unused_imports)]
22212        use std::option::Option::Some;
22213        let mut state = serializer.serialize_map(std::option::Option::None)?;
22214        if !self.name.is_empty() {
22215            state.serialize_entry("name", &self.name)?;
22216        }
22217        if self.create_time.is_some() {
22218            state.serialize_entry("createTime", &self.create_time)?;
22219        }
22220        if self.update_time.is_some() {
22221            state.serialize_entry("updateTime", &self.update_time)?;
22222        }
22223        if !self.internal_ip.is_empty() {
22224            state.serialize_entry("internalIp", &self.internal_ip)?;
22225        }
22226        if !self.external_ip.is_empty() {
22227            state.serialize_entry("externalIp", &self.external_ip)?;
22228        }
22229        if !wkt::internal::is_default(&self.state) {
22230            state.serialize_entry("state", &self.state)?;
22231        }
22232        if !self.uid.is_empty() {
22233            state.serialize_entry("uid", &self.uid)?;
22234        }
22235        if !self.description.is_empty() {
22236            state.serialize_entry("description", &self.description)?;
22237        }
22238        if !self._unknown_fields.is_empty() {
22239            for (key, value) in self._unknown_fields.iter() {
22240                state.serialize_entry(key, &value)?;
22241            }
22242        }
22243        state.end()
22244    }
22245}
22246
22247/// Defines additional types related to [ExternalAddress].
22248pub mod external_address {
22249    #[allow(unused_imports)]
22250    use super::*;
22251
22252    /// Enum State defines possible states of external addresses.
22253    ///
22254    /// # Working with unknown values
22255    ///
22256    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
22257    /// additional enum variants at any time. Adding new variants is not considered
22258    /// a breaking change. Applications should write their code in anticipation of:
22259    ///
22260    /// - New values appearing in future releases of the client library, **and**
22261    /// - New values received dynamically, without application changes.
22262    ///
22263    /// Please consult the [Working with enums] section in the user guide for some
22264    /// guidelines.
22265    ///
22266    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
22267    #[derive(Clone, Debug, PartialEq)]
22268    #[non_exhaustive]
22269    pub enum State {
22270        /// The default value. This value should never be used.
22271        Unspecified,
22272        /// The address is ready.
22273        Active,
22274        /// The address is being created.
22275        Creating,
22276        /// The address is being updated.
22277        Updating,
22278        /// The address is being deleted.
22279        Deleting,
22280        /// If set, the enum was initialized with an unknown value.
22281        ///
22282        /// Applications can examine the value using [State::value] or
22283        /// [State::name].
22284        UnknownValue(state::UnknownValue),
22285    }
22286
22287    #[doc(hidden)]
22288    pub mod state {
22289        #[allow(unused_imports)]
22290        use super::*;
22291        #[derive(Clone, Debug, PartialEq)]
22292        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
22293    }
22294
22295    impl State {
22296        /// Gets the enum value.
22297        ///
22298        /// Returns `None` if the enum contains an unknown value deserialized from
22299        /// the string representation of enums.
22300        pub fn value(&self) -> std::option::Option<i32> {
22301            match self {
22302                Self::Unspecified => std::option::Option::Some(0),
22303                Self::Active => std::option::Option::Some(1),
22304                Self::Creating => std::option::Option::Some(2),
22305                Self::Updating => std::option::Option::Some(3),
22306                Self::Deleting => std::option::Option::Some(4),
22307                Self::UnknownValue(u) => u.0.value(),
22308            }
22309        }
22310
22311        /// Gets the enum value as a string.
22312        ///
22313        /// Returns `None` if the enum contains an unknown value deserialized from
22314        /// the integer representation of enums.
22315        pub fn name(&self) -> std::option::Option<&str> {
22316            match self {
22317                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
22318                Self::Active => std::option::Option::Some("ACTIVE"),
22319                Self::Creating => std::option::Option::Some("CREATING"),
22320                Self::Updating => std::option::Option::Some("UPDATING"),
22321                Self::Deleting => std::option::Option::Some("DELETING"),
22322                Self::UnknownValue(u) => u.0.name(),
22323            }
22324        }
22325    }
22326
22327    impl std::default::Default for State {
22328        fn default() -> Self {
22329            use std::convert::From;
22330            Self::from(0)
22331        }
22332    }
22333
22334    impl std::fmt::Display for State {
22335        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
22336            wkt::internal::display_enum(f, self.name(), self.value())
22337        }
22338    }
22339
22340    impl std::convert::From<i32> for State {
22341        fn from(value: i32) -> Self {
22342            match value {
22343                0 => Self::Unspecified,
22344                1 => Self::Active,
22345                2 => Self::Creating,
22346                3 => Self::Updating,
22347                4 => Self::Deleting,
22348                _ => Self::UnknownValue(state::UnknownValue(
22349                    wkt::internal::UnknownEnumValue::Integer(value),
22350                )),
22351            }
22352        }
22353    }
22354
22355    impl std::convert::From<&str> for State {
22356        fn from(value: &str) -> Self {
22357            use std::string::ToString;
22358            match value {
22359                "STATE_UNSPECIFIED" => Self::Unspecified,
22360                "ACTIVE" => Self::Active,
22361                "CREATING" => Self::Creating,
22362                "UPDATING" => Self::Updating,
22363                "DELETING" => Self::Deleting,
22364                _ => Self::UnknownValue(state::UnknownValue(
22365                    wkt::internal::UnknownEnumValue::String(value.to_string()),
22366                )),
22367            }
22368        }
22369    }
22370
22371    impl serde::ser::Serialize for State {
22372        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
22373        where
22374            S: serde::Serializer,
22375        {
22376            match self {
22377                Self::Unspecified => serializer.serialize_i32(0),
22378                Self::Active => serializer.serialize_i32(1),
22379                Self::Creating => serializer.serialize_i32(2),
22380                Self::Updating => serializer.serialize_i32(3),
22381                Self::Deleting => serializer.serialize_i32(4),
22382                Self::UnknownValue(u) => u.0.serialize(serializer),
22383            }
22384        }
22385    }
22386
22387    impl<'de> serde::de::Deserialize<'de> for State {
22388        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22389        where
22390            D: serde::Deserializer<'de>,
22391        {
22392            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
22393                ".google.cloud.vmwareengine.v1.ExternalAddress.State",
22394            ))
22395        }
22396    }
22397}
22398
22399/// Subnet in a private cloud. Either `management` subnets (such as vMotion) that
22400/// are read-only, or `userDefined`, which can also be updated.
22401#[derive(Clone, Debug, Default, PartialEq)]
22402#[non_exhaustive]
22403pub struct Subnet {
22404    /// Output only. The resource name of this subnet.
22405    /// Resource names are schemeless URIs that follow the conventions in
22406    /// <https://cloud.google.com/apis/design/resource_names>.
22407    /// For example:
22408    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/subnets/my-subnet`
22409    pub name: std::string::String,
22410
22411    /// The IP address range of the subnet in CIDR format '10.0.0.0/24'.
22412    pub ip_cidr_range: std::string::String,
22413
22414    /// The IP address of the gateway of this subnet.
22415    /// Must fall within the IP prefix defined above.
22416    pub gateway_ip: std::string::String,
22417
22418    /// Output only. The type of the subnet. For example "management" or
22419    /// "userDefined".
22420    pub r#type: std::string::String,
22421
22422    /// Output only. The state of the resource.
22423    pub state: crate::model::subnet::State,
22424
22425    /// Output only. VLAN ID of the VLAN on which the subnet is configured
22426    pub vlan_id: i32,
22427
22428    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
22429}
22430
22431impl Subnet {
22432    pub fn new() -> Self {
22433        std::default::Default::default()
22434    }
22435
22436    /// Sets the value of [name][crate::model::Subnet::name].
22437    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22438        self.name = v.into();
22439        self
22440    }
22441
22442    /// Sets the value of [ip_cidr_range][crate::model::Subnet::ip_cidr_range].
22443    pub fn set_ip_cidr_range<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22444        self.ip_cidr_range = v.into();
22445        self
22446    }
22447
22448    /// Sets the value of [gateway_ip][crate::model::Subnet::gateway_ip].
22449    pub fn set_gateway_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22450        self.gateway_ip = v.into();
22451        self
22452    }
22453
22454    /// Sets the value of [r#type][crate::model::Subnet::type].
22455    pub fn set_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22456        self.r#type = v.into();
22457        self
22458    }
22459
22460    /// Sets the value of [state][crate::model::Subnet::state].
22461    pub fn set_state<T: std::convert::Into<crate::model::subnet::State>>(mut self, v: T) -> Self {
22462        self.state = v.into();
22463        self
22464    }
22465
22466    /// Sets the value of [vlan_id][crate::model::Subnet::vlan_id].
22467    pub fn set_vlan_id<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
22468        self.vlan_id = v.into();
22469        self
22470    }
22471}
22472
22473impl wkt::message::Message for Subnet {
22474    fn typename() -> &'static str {
22475        "type.googleapis.com/google.cloud.vmwareengine.v1.Subnet"
22476    }
22477}
22478
22479#[doc(hidden)]
22480impl<'de> serde::de::Deserialize<'de> for Subnet {
22481    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22482    where
22483        D: serde::Deserializer<'de>,
22484    {
22485        #[allow(non_camel_case_types)]
22486        #[doc(hidden)]
22487        #[derive(PartialEq, Eq, Hash)]
22488        enum __FieldTag {
22489            __name,
22490            __ip_cidr_range,
22491            __gateway_ip,
22492            __type,
22493            __state,
22494            __vlan_id,
22495            Unknown(std::string::String),
22496        }
22497        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
22498            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22499            where
22500                D: serde::Deserializer<'de>,
22501            {
22502                struct Visitor;
22503                impl<'de> serde::de::Visitor<'de> for Visitor {
22504                    type Value = __FieldTag;
22505                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
22506                        formatter.write_str("a field name for Subnet")
22507                    }
22508                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
22509                    where
22510                        E: serde::de::Error,
22511                    {
22512                        use std::result::Result::Ok;
22513                        use std::string::ToString;
22514                        match value {
22515                            "name" => Ok(__FieldTag::__name),
22516                            "ipCidrRange" => Ok(__FieldTag::__ip_cidr_range),
22517                            "ip_cidr_range" => Ok(__FieldTag::__ip_cidr_range),
22518                            "gatewayIp" => Ok(__FieldTag::__gateway_ip),
22519                            "gateway_ip" => Ok(__FieldTag::__gateway_ip),
22520                            "type" => Ok(__FieldTag::__type),
22521                            "state" => Ok(__FieldTag::__state),
22522                            "vlanId" => Ok(__FieldTag::__vlan_id),
22523                            "vlan_id" => Ok(__FieldTag::__vlan_id),
22524                            _ => Ok(__FieldTag::Unknown(value.to_string())),
22525                        }
22526                    }
22527                }
22528                deserializer.deserialize_identifier(Visitor)
22529            }
22530        }
22531        struct Visitor;
22532        impl<'de> serde::de::Visitor<'de> for Visitor {
22533            type Value = Subnet;
22534            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
22535                formatter.write_str("struct Subnet")
22536            }
22537            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
22538            where
22539                A: serde::de::MapAccess<'de>,
22540            {
22541                #[allow(unused_imports)]
22542                use serde::de::Error;
22543                use std::option::Option::Some;
22544                let mut fields = std::collections::HashSet::new();
22545                let mut result = Self::Value::new();
22546                while let Some(tag) = map.next_key::<__FieldTag>()? {
22547                    #[allow(clippy::match_single_binding)]
22548                    match tag {
22549                        __FieldTag::__name => {
22550                            if !fields.insert(__FieldTag::__name) {
22551                                return std::result::Result::Err(A::Error::duplicate_field(
22552                                    "multiple values for name",
22553                                ));
22554                            }
22555                            result.name = map
22556                                .next_value::<std::option::Option<std::string::String>>()?
22557                                .unwrap_or_default();
22558                        }
22559                        __FieldTag::__ip_cidr_range => {
22560                            if !fields.insert(__FieldTag::__ip_cidr_range) {
22561                                return std::result::Result::Err(A::Error::duplicate_field(
22562                                    "multiple values for ip_cidr_range",
22563                                ));
22564                            }
22565                            result.ip_cidr_range = map
22566                                .next_value::<std::option::Option<std::string::String>>()?
22567                                .unwrap_or_default();
22568                        }
22569                        __FieldTag::__gateway_ip => {
22570                            if !fields.insert(__FieldTag::__gateway_ip) {
22571                                return std::result::Result::Err(A::Error::duplicate_field(
22572                                    "multiple values for gateway_ip",
22573                                ));
22574                            }
22575                            result.gateway_ip = map
22576                                .next_value::<std::option::Option<std::string::String>>()?
22577                                .unwrap_or_default();
22578                        }
22579                        __FieldTag::__type => {
22580                            if !fields.insert(__FieldTag::__type) {
22581                                return std::result::Result::Err(A::Error::duplicate_field(
22582                                    "multiple values for type",
22583                                ));
22584                            }
22585                            result.r#type = map
22586                                .next_value::<std::option::Option<std::string::String>>()?
22587                                .unwrap_or_default();
22588                        }
22589                        __FieldTag::__state => {
22590                            if !fields.insert(__FieldTag::__state) {
22591                                return std::result::Result::Err(A::Error::duplicate_field(
22592                                    "multiple values for state",
22593                                ));
22594                            }
22595                            result.state = map
22596                                .next_value::<std::option::Option<crate::model::subnet::State>>()?
22597                                .unwrap_or_default();
22598                        }
22599                        __FieldTag::__vlan_id => {
22600                            if !fields.insert(__FieldTag::__vlan_id) {
22601                                return std::result::Result::Err(A::Error::duplicate_field(
22602                                    "multiple values for vlan_id",
22603                                ));
22604                            }
22605                            struct __With(std::option::Option<i32>);
22606                            impl<'de> serde::de::Deserialize<'de> for __With {
22607                                fn deserialize<D>(
22608                                    deserializer: D,
22609                                ) -> std::result::Result<Self, D::Error>
22610                                where
22611                                    D: serde::de::Deserializer<'de>,
22612                                {
22613                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
22614                                }
22615                            }
22616                            result.vlan_id = map.next_value::<__With>()?.0.unwrap_or_default();
22617                        }
22618                        __FieldTag::Unknown(key) => {
22619                            let value = map.next_value::<serde_json::Value>()?;
22620                            result._unknown_fields.insert(key, value);
22621                        }
22622                    }
22623                }
22624                std::result::Result::Ok(result)
22625            }
22626        }
22627        deserializer.deserialize_any(Visitor)
22628    }
22629}
22630
22631#[doc(hidden)]
22632impl serde::ser::Serialize for Subnet {
22633    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
22634    where
22635        S: serde::ser::Serializer,
22636    {
22637        use serde::ser::SerializeMap;
22638        #[allow(unused_imports)]
22639        use std::option::Option::Some;
22640        let mut state = serializer.serialize_map(std::option::Option::None)?;
22641        if !self.name.is_empty() {
22642            state.serialize_entry("name", &self.name)?;
22643        }
22644        if !self.ip_cidr_range.is_empty() {
22645            state.serialize_entry("ipCidrRange", &self.ip_cidr_range)?;
22646        }
22647        if !self.gateway_ip.is_empty() {
22648            state.serialize_entry("gatewayIp", &self.gateway_ip)?;
22649        }
22650        if !self.r#type.is_empty() {
22651            state.serialize_entry("type", &self.r#type)?;
22652        }
22653        if !wkt::internal::is_default(&self.state) {
22654            state.serialize_entry("state", &self.state)?;
22655        }
22656        if !wkt::internal::is_default(&self.vlan_id) {
22657            struct __With<'a>(&'a i32);
22658            impl<'a> serde::ser::Serialize for __With<'a> {
22659                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
22660                where
22661                    S: serde::ser::Serializer,
22662                {
22663                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
22664                }
22665            }
22666            state.serialize_entry("vlanId", &__With(&self.vlan_id))?;
22667        }
22668        if !self._unknown_fields.is_empty() {
22669            for (key, value) in self._unknown_fields.iter() {
22670                state.serialize_entry(key, &value)?;
22671            }
22672        }
22673        state.end()
22674    }
22675}
22676
22677/// Defines additional types related to [Subnet].
22678pub mod subnet {
22679    #[allow(unused_imports)]
22680    use super::*;
22681
22682    /// Defines possible states of subnets.
22683    ///
22684    /// # Working with unknown values
22685    ///
22686    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
22687    /// additional enum variants at any time. Adding new variants is not considered
22688    /// a breaking change. Applications should write their code in anticipation of:
22689    ///
22690    /// - New values appearing in future releases of the client library, **and**
22691    /// - New values received dynamically, without application changes.
22692    ///
22693    /// Please consult the [Working with enums] section in the user guide for some
22694    /// guidelines.
22695    ///
22696    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
22697    #[derive(Clone, Debug, PartialEq)]
22698    #[non_exhaustive]
22699    pub enum State {
22700        /// The default value. This value should never be used.
22701        Unspecified,
22702        /// The subnet is ready.
22703        Active,
22704        /// The subnet is being created.
22705        Creating,
22706        /// The subnet is being updated.
22707        Updating,
22708        /// The subnet is being deleted.
22709        Deleting,
22710        /// Changes requested in the last operation are being propagated.
22711        Reconciling,
22712        /// Last operation on the subnet did not succeed. Subnet's payload is
22713        /// reverted back to its most recent working state.
22714        Failed,
22715        /// If set, the enum was initialized with an unknown value.
22716        ///
22717        /// Applications can examine the value using [State::value] or
22718        /// [State::name].
22719        UnknownValue(state::UnknownValue),
22720    }
22721
22722    #[doc(hidden)]
22723    pub mod state {
22724        #[allow(unused_imports)]
22725        use super::*;
22726        #[derive(Clone, Debug, PartialEq)]
22727        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
22728    }
22729
22730    impl State {
22731        /// Gets the enum value.
22732        ///
22733        /// Returns `None` if the enum contains an unknown value deserialized from
22734        /// the string representation of enums.
22735        pub fn value(&self) -> std::option::Option<i32> {
22736            match self {
22737                Self::Unspecified => std::option::Option::Some(0),
22738                Self::Active => std::option::Option::Some(1),
22739                Self::Creating => std::option::Option::Some(2),
22740                Self::Updating => std::option::Option::Some(3),
22741                Self::Deleting => std::option::Option::Some(4),
22742                Self::Reconciling => std::option::Option::Some(5),
22743                Self::Failed => std::option::Option::Some(6),
22744                Self::UnknownValue(u) => u.0.value(),
22745            }
22746        }
22747
22748        /// Gets the enum value as a string.
22749        ///
22750        /// Returns `None` if the enum contains an unknown value deserialized from
22751        /// the integer representation of enums.
22752        pub fn name(&self) -> std::option::Option<&str> {
22753            match self {
22754                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
22755                Self::Active => std::option::Option::Some("ACTIVE"),
22756                Self::Creating => std::option::Option::Some("CREATING"),
22757                Self::Updating => std::option::Option::Some("UPDATING"),
22758                Self::Deleting => std::option::Option::Some("DELETING"),
22759                Self::Reconciling => std::option::Option::Some("RECONCILING"),
22760                Self::Failed => std::option::Option::Some("FAILED"),
22761                Self::UnknownValue(u) => u.0.name(),
22762            }
22763        }
22764    }
22765
22766    impl std::default::Default for State {
22767        fn default() -> Self {
22768            use std::convert::From;
22769            Self::from(0)
22770        }
22771    }
22772
22773    impl std::fmt::Display for State {
22774        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
22775            wkt::internal::display_enum(f, self.name(), self.value())
22776        }
22777    }
22778
22779    impl std::convert::From<i32> for State {
22780        fn from(value: i32) -> Self {
22781            match value {
22782                0 => Self::Unspecified,
22783                1 => Self::Active,
22784                2 => Self::Creating,
22785                3 => Self::Updating,
22786                4 => Self::Deleting,
22787                5 => Self::Reconciling,
22788                6 => Self::Failed,
22789                _ => Self::UnknownValue(state::UnknownValue(
22790                    wkt::internal::UnknownEnumValue::Integer(value),
22791                )),
22792            }
22793        }
22794    }
22795
22796    impl std::convert::From<&str> for State {
22797        fn from(value: &str) -> Self {
22798            use std::string::ToString;
22799            match value {
22800                "STATE_UNSPECIFIED" => Self::Unspecified,
22801                "ACTIVE" => Self::Active,
22802                "CREATING" => Self::Creating,
22803                "UPDATING" => Self::Updating,
22804                "DELETING" => Self::Deleting,
22805                "RECONCILING" => Self::Reconciling,
22806                "FAILED" => Self::Failed,
22807                _ => Self::UnknownValue(state::UnknownValue(
22808                    wkt::internal::UnknownEnumValue::String(value.to_string()),
22809                )),
22810            }
22811        }
22812    }
22813
22814    impl serde::ser::Serialize for State {
22815        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
22816        where
22817            S: serde::Serializer,
22818        {
22819            match self {
22820                Self::Unspecified => serializer.serialize_i32(0),
22821                Self::Active => serializer.serialize_i32(1),
22822                Self::Creating => serializer.serialize_i32(2),
22823                Self::Updating => serializer.serialize_i32(3),
22824                Self::Deleting => serializer.serialize_i32(4),
22825                Self::Reconciling => serializer.serialize_i32(5),
22826                Self::Failed => serializer.serialize_i32(6),
22827                Self::UnknownValue(u) => u.0.serialize(serializer),
22828            }
22829        }
22830    }
22831
22832    impl<'de> serde::de::Deserialize<'de> for State {
22833        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
22834        where
22835            D: serde::Deserializer<'de>,
22836        {
22837            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
22838                ".google.cloud.vmwareengine.v1.Subnet.State",
22839            ))
22840        }
22841    }
22842}
22843
22844/// External access firewall rules for filtering incoming traffic destined to
22845/// `ExternalAddress` resources.
22846#[derive(Clone, Debug, Default, PartialEq)]
22847#[non_exhaustive]
22848pub struct ExternalAccessRule {
22849    /// Output only. The resource name of this external access rule.
22850    /// Resource names are schemeless URIs that follow the conventions in
22851    /// <https://cloud.google.com/apis/design/resource_names>.
22852    /// For example:
22853    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
22854    pub name: std::string::String,
22855
22856    /// Output only. Creation time of this resource.
22857    pub create_time: std::option::Option<wkt::Timestamp>,
22858
22859    /// Output only. Last update time of this resource.
22860    pub update_time: std::option::Option<wkt::Timestamp>,
22861
22862    /// User-provided description for this external access rule.
22863    pub description: std::string::String,
22864
22865    /// External access rule priority, which determines the external access rule to
22866    /// use when multiple rules apply. If multiple rules have the same priority,
22867    /// their ordering is non-deterministic. If specific ordering is required,
22868    /// assign unique priorities to enforce such ordering. The external access rule
22869    /// priority is an integer from 100 to 4096, both inclusive. Lower integers
22870    /// indicate higher precedence. For example, a rule with priority `100` has
22871    /// higher precedence than a rule with priority `101`.
22872    pub priority: i32,
22873
22874    /// The action that the external access rule performs.
22875    pub action: crate::model::external_access_rule::Action,
22876
22877    /// The IP protocol to which the external access rule applies. This value can
22878    /// be one of the following three protocol strings (not case-sensitive):
22879    /// `tcp`, `udp`, or `icmp`.
22880    pub ip_protocol: std::string::String,
22881
22882    /// If source ranges are specified, the external access rule applies only to
22883    /// traffic that has a source IP address in these ranges. These ranges can
22884    /// either be expressed in the CIDR format or as an IP address. As only inbound
22885    /// rules are supported, `ExternalAddress` resources cannot be the source IP
22886    /// addresses of an external access rule. To match all source addresses,
22887    /// specify `0.0.0.0/0`.
22888    pub source_ip_ranges: std::vec::Vec<crate::model::external_access_rule::IpRange>,
22889
22890    /// A list of source ports to which the external access rule applies. This
22891    /// field is only applicable for the UDP or TCP protocol.
22892    /// Each entry must be either an integer or a range. For example: `["22"]`,
22893    /// `["80","443"]`, or `["12345-12349"]`. To match all source ports, specify
22894    /// `["0-65535"]`.
22895    pub source_ports: std::vec::Vec<std::string::String>,
22896
22897    /// If destination ranges are specified, the external access rule applies only
22898    /// to the traffic that has a destination IP address in these ranges. The
22899    /// specified IP addresses must have reserved external IP addresses in the
22900    /// scope of the parent network policy. To match all external IP addresses in
22901    /// the scope of the parent network policy, specify `0.0.0.0/0`. To match a
22902    /// specific external IP address, specify it using the
22903    /// `IpRange.external_address` property.
22904    pub destination_ip_ranges: std::vec::Vec<crate::model::external_access_rule::IpRange>,
22905
22906    /// A list of destination ports to which the external access rule applies. This
22907    /// field is only applicable for the UDP or TCP protocol.
22908    /// Each entry must be either an integer or a range. For example: `["22"]`,
22909    /// `["80","443"]`, or `["12345-12349"]`. To match all destination ports,
22910    /// specify `["0-65535"]`.
22911    pub destination_ports: std::vec::Vec<std::string::String>,
22912
22913    /// Output only. The state of the resource.
22914    pub state: crate::model::external_access_rule::State,
22915
22916    /// Output only. System-generated unique identifier for the resource.
22917    pub uid: std::string::String,
22918
22919    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
22920}
22921
22922impl ExternalAccessRule {
22923    pub fn new() -> Self {
22924        std::default::Default::default()
22925    }
22926
22927    /// Sets the value of [name][crate::model::ExternalAccessRule::name].
22928    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22929        self.name = v.into();
22930        self
22931    }
22932
22933    /// Sets the value of [create_time][crate::model::ExternalAccessRule::create_time].
22934    pub fn set_create_time<T>(mut self, v: T) -> Self
22935    where
22936        T: std::convert::Into<wkt::Timestamp>,
22937    {
22938        self.create_time = std::option::Option::Some(v.into());
22939        self
22940    }
22941
22942    /// Sets or clears the value of [create_time][crate::model::ExternalAccessRule::create_time].
22943    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
22944    where
22945        T: std::convert::Into<wkt::Timestamp>,
22946    {
22947        self.create_time = v.map(|x| x.into());
22948        self
22949    }
22950
22951    /// Sets the value of [update_time][crate::model::ExternalAccessRule::update_time].
22952    pub fn set_update_time<T>(mut self, v: T) -> Self
22953    where
22954        T: std::convert::Into<wkt::Timestamp>,
22955    {
22956        self.update_time = std::option::Option::Some(v.into());
22957        self
22958    }
22959
22960    /// Sets or clears the value of [update_time][crate::model::ExternalAccessRule::update_time].
22961    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
22962    where
22963        T: std::convert::Into<wkt::Timestamp>,
22964    {
22965        self.update_time = v.map(|x| x.into());
22966        self
22967    }
22968
22969    /// Sets the value of [description][crate::model::ExternalAccessRule::description].
22970    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22971        self.description = v.into();
22972        self
22973    }
22974
22975    /// Sets the value of [priority][crate::model::ExternalAccessRule::priority].
22976    pub fn set_priority<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
22977        self.priority = v.into();
22978        self
22979    }
22980
22981    /// Sets the value of [action][crate::model::ExternalAccessRule::action].
22982    pub fn set_action<T: std::convert::Into<crate::model::external_access_rule::Action>>(
22983        mut self,
22984        v: T,
22985    ) -> Self {
22986        self.action = v.into();
22987        self
22988    }
22989
22990    /// Sets the value of [ip_protocol][crate::model::ExternalAccessRule::ip_protocol].
22991    pub fn set_ip_protocol<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
22992        self.ip_protocol = v.into();
22993        self
22994    }
22995
22996    /// Sets the value of [source_ip_ranges][crate::model::ExternalAccessRule::source_ip_ranges].
22997    pub fn set_source_ip_ranges<T, V>(mut self, v: T) -> Self
22998    where
22999        T: std::iter::IntoIterator<Item = V>,
23000        V: std::convert::Into<crate::model::external_access_rule::IpRange>,
23001    {
23002        use std::iter::Iterator;
23003        self.source_ip_ranges = v.into_iter().map(|i| i.into()).collect();
23004        self
23005    }
23006
23007    /// Sets the value of [source_ports][crate::model::ExternalAccessRule::source_ports].
23008    pub fn set_source_ports<T, V>(mut self, v: T) -> Self
23009    where
23010        T: std::iter::IntoIterator<Item = V>,
23011        V: std::convert::Into<std::string::String>,
23012    {
23013        use std::iter::Iterator;
23014        self.source_ports = v.into_iter().map(|i| i.into()).collect();
23015        self
23016    }
23017
23018    /// Sets the value of [destination_ip_ranges][crate::model::ExternalAccessRule::destination_ip_ranges].
23019    pub fn set_destination_ip_ranges<T, V>(mut self, v: T) -> Self
23020    where
23021        T: std::iter::IntoIterator<Item = V>,
23022        V: std::convert::Into<crate::model::external_access_rule::IpRange>,
23023    {
23024        use std::iter::Iterator;
23025        self.destination_ip_ranges = v.into_iter().map(|i| i.into()).collect();
23026        self
23027    }
23028
23029    /// Sets the value of [destination_ports][crate::model::ExternalAccessRule::destination_ports].
23030    pub fn set_destination_ports<T, V>(mut self, v: T) -> Self
23031    where
23032        T: std::iter::IntoIterator<Item = V>,
23033        V: std::convert::Into<std::string::String>,
23034    {
23035        use std::iter::Iterator;
23036        self.destination_ports = v.into_iter().map(|i| i.into()).collect();
23037        self
23038    }
23039
23040    /// Sets the value of [state][crate::model::ExternalAccessRule::state].
23041    pub fn set_state<T: std::convert::Into<crate::model::external_access_rule::State>>(
23042        mut self,
23043        v: T,
23044    ) -> Self {
23045        self.state = v.into();
23046        self
23047    }
23048
23049    /// Sets the value of [uid][crate::model::ExternalAccessRule::uid].
23050    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
23051        self.uid = v.into();
23052        self
23053    }
23054}
23055
23056impl wkt::message::Message for ExternalAccessRule {
23057    fn typename() -> &'static str {
23058        "type.googleapis.com/google.cloud.vmwareengine.v1.ExternalAccessRule"
23059    }
23060}
23061
23062#[doc(hidden)]
23063impl<'de> serde::de::Deserialize<'de> for ExternalAccessRule {
23064    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23065    where
23066        D: serde::Deserializer<'de>,
23067    {
23068        #[allow(non_camel_case_types)]
23069        #[doc(hidden)]
23070        #[derive(PartialEq, Eq, Hash)]
23071        enum __FieldTag {
23072            __name,
23073            __create_time,
23074            __update_time,
23075            __description,
23076            __priority,
23077            __action,
23078            __ip_protocol,
23079            __source_ip_ranges,
23080            __source_ports,
23081            __destination_ip_ranges,
23082            __destination_ports,
23083            __state,
23084            __uid,
23085            Unknown(std::string::String),
23086        }
23087        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
23088            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23089            where
23090                D: serde::Deserializer<'de>,
23091            {
23092                struct Visitor;
23093                impl<'de> serde::de::Visitor<'de> for Visitor {
23094                    type Value = __FieldTag;
23095                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
23096                        formatter.write_str("a field name for ExternalAccessRule")
23097                    }
23098                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
23099                    where
23100                        E: serde::de::Error,
23101                    {
23102                        use std::result::Result::Ok;
23103                        use std::string::ToString;
23104                        match value {
23105                            "name" => Ok(__FieldTag::__name),
23106                            "createTime" => Ok(__FieldTag::__create_time),
23107                            "create_time" => Ok(__FieldTag::__create_time),
23108                            "updateTime" => Ok(__FieldTag::__update_time),
23109                            "update_time" => Ok(__FieldTag::__update_time),
23110                            "description" => Ok(__FieldTag::__description),
23111                            "priority" => Ok(__FieldTag::__priority),
23112                            "action" => Ok(__FieldTag::__action),
23113                            "ipProtocol" => Ok(__FieldTag::__ip_protocol),
23114                            "ip_protocol" => Ok(__FieldTag::__ip_protocol),
23115                            "sourceIpRanges" => Ok(__FieldTag::__source_ip_ranges),
23116                            "source_ip_ranges" => Ok(__FieldTag::__source_ip_ranges),
23117                            "sourcePorts" => Ok(__FieldTag::__source_ports),
23118                            "source_ports" => Ok(__FieldTag::__source_ports),
23119                            "destinationIpRanges" => Ok(__FieldTag::__destination_ip_ranges),
23120                            "destination_ip_ranges" => Ok(__FieldTag::__destination_ip_ranges),
23121                            "destinationPorts" => Ok(__FieldTag::__destination_ports),
23122                            "destination_ports" => Ok(__FieldTag::__destination_ports),
23123                            "state" => Ok(__FieldTag::__state),
23124                            "uid" => Ok(__FieldTag::__uid),
23125                            _ => Ok(__FieldTag::Unknown(value.to_string())),
23126                        }
23127                    }
23128                }
23129                deserializer.deserialize_identifier(Visitor)
23130            }
23131        }
23132        struct Visitor;
23133        impl<'de> serde::de::Visitor<'de> for Visitor {
23134            type Value = ExternalAccessRule;
23135            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
23136                formatter.write_str("struct ExternalAccessRule")
23137            }
23138            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
23139            where
23140                A: serde::de::MapAccess<'de>,
23141            {
23142                #[allow(unused_imports)]
23143                use serde::de::Error;
23144                use std::option::Option::Some;
23145                let mut fields = std::collections::HashSet::new();
23146                let mut result = Self::Value::new();
23147                while let Some(tag) = map.next_key::<__FieldTag>()? {
23148                    #[allow(clippy::match_single_binding)]
23149                    match tag {
23150                        __FieldTag::__name => {
23151                            if !fields.insert(__FieldTag::__name) {
23152                                return std::result::Result::Err(A::Error::duplicate_field(
23153                                    "multiple values for name",
23154                                ));
23155                            }
23156                            result.name = map
23157                                .next_value::<std::option::Option<std::string::String>>()?
23158                                .unwrap_or_default();
23159                        }
23160                        __FieldTag::__create_time => {
23161                            if !fields.insert(__FieldTag::__create_time) {
23162                                return std::result::Result::Err(A::Error::duplicate_field(
23163                                    "multiple values for create_time",
23164                                ));
23165                            }
23166                            result.create_time =
23167                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
23168                        }
23169                        __FieldTag::__update_time => {
23170                            if !fields.insert(__FieldTag::__update_time) {
23171                                return std::result::Result::Err(A::Error::duplicate_field(
23172                                    "multiple values for update_time",
23173                                ));
23174                            }
23175                            result.update_time =
23176                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
23177                        }
23178                        __FieldTag::__description => {
23179                            if !fields.insert(__FieldTag::__description) {
23180                                return std::result::Result::Err(A::Error::duplicate_field(
23181                                    "multiple values for description",
23182                                ));
23183                            }
23184                            result.description = map
23185                                .next_value::<std::option::Option<std::string::String>>()?
23186                                .unwrap_or_default();
23187                        }
23188                        __FieldTag::__priority => {
23189                            if !fields.insert(__FieldTag::__priority) {
23190                                return std::result::Result::Err(A::Error::duplicate_field(
23191                                    "multiple values for priority",
23192                                ));
23193                            }
23194                            struct __With(std::option::Option<i32>);
23195                            impl<'de> serde::de::Deserialize<'de> for __With {
23196                                fn deserialize<D>(
23197                                    deserializer: D,
23198                                ) -> std::result::Result<Self, D::Error>
23199                                where
23200                                    D: serde::de::Deserializer<'de>,
23201                                {
23202                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
23203                                }
23204                            }
23205                            result.priority = map.next_value::<__With>()?.0.unwrap_or_default();
23206                        }
23207                        __FieldTag::__action => {
23208                            if !fields.insert(__FieldTag::__action) {
23209                                return std::result::Result::Err(A::Error::duplicate_field(
23210                                    "multiple values for action",
23211                                ));
23212                            }
23213                            result.action = map.next_value::<std::option::Option<crate::model::external_access_rule::Action>>()?.unwrap_or_default();
23214                        }
23215                        __FieldTag::__ip_protocol => {
23216                            if !fields.insert(__FieldTag::__ip_protocol) {
23217                                return std::result::Result::Err(A::Error::duplicate_field(
23218                                    "multiple values for ip_protocol",
23219                                ));
23220                            }
23221                            result.ip_protocol = map
23222                                .next_value::<std::option::Option<std::string::String>>()?
23223                                .unwrap_or_default();
23224                        }
23225                        __FieldTag::__source_ip_ranges => {
23226                            if !fields.insert(__FieldTag::__source_ip_ranges) {
23227                                return std::result::Result::Err(A::Error::duplicate_field(
23228                                    "multiple values for source_ip_ranges",
23229                                ));
23230                            }
23231                            result.source_ip_ranges = map
23232                                .next_value::<std::option::Option<
23233                                    std::vec::Vec<crate::model::external_access_rule::IpRange>,
23234                                >>()?
23235                                .unwrap_or_default();
23236                        }
23237                        __FieldTag::__source_ports => {
23238                            if !fields.insert(__FieldTag::__source_ports) {
23239                                return std::result::Result::Err(A::Error::duplicate_field(
23240                                    "multiple values for source_ports",
23241                                ));
23242                            }
23243                            result.source_ports = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
23244                        }
23245                        __FieldTag::__destination_ip_ranges => {
23246                            if !fields.insert(__FieldTag::__destination_ip_ranges) {
23247                                return std::result::Result::Err(A::Error::duplicate_field(
23248                                    "multiple values for destination_ip_ranges",
23249                                ));
23250                            }
23251                            result.destination_ip_ranges = map
23252                                .next_value::<std::option::Option<
23253                                    std::vec::Vec<crate::model::external_access_rule::IpRange>,
23254                                >>()?
23255                                .unwrap_or_default();
23256                        }
23257                        __FieldTag::__destination_ports => {
23258                            if !fields.insert(__FieldTag::__destination_ports) {
23259                                return std::result::Result::Err(A::Error::duplicate_field(
23260                                    "multiple values for destination_ports",
23261                                ));
23262                            }
23263                            result.destination_ports = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
23264                        }
23265                        __FieldTag::__state => {
23266                            if !fields.insert(__FieldTag::__state) {
23267                                return std::result::Result::Err(A::Error::duplicate_field(
23268                                    "multiple values for state",
23269                                ));
23270                            }
23271                            result.state = map.next_value::<std::option::Option<crate::model::external_access_rule::State>>()?.unwrap_or_default();
23272                        }
23273                        __FieldTag::__uid => {
23274                            if !fields.insert(__FieldTag::__uid) {
23275                                return std::result::Result::Err(A::Error::duplicate_field(
23276                                    "multiple values for uid",
23277                                ));
23278                            }
23279                            result.uid = map
23280                                .next_value::<std::option::Option<std::string::String>>()?
23281                                .unwrap_or_default();
23282                        }
23283                        __FieldTag::Unknown(key) => {
23284                            let value = map.next_value::<serde_json::Value>()?;
23285                            result._unknown_fields.insert(key, value);
23286                        }
23287                    }
23288                }
23289                std::result::Result::Ok(result)
23290            }
23291        }
23292        deserializer.deserialize_any(Visitor)
23293    }
23294}
23295
23296#[doc(hidden)]
23297impl serde::ser::Serialize for ExternalAccessRule {
23298    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
23299    where
23300        S: serde::ser::Serializer,
23301    {
23302        use serde::ser::SerializeMap;
23303        #[allow(unused_imports)]
23304        use std::option::Option::Some;
23305        let mut state = serializer.serialize_map(std::option::Option::None)?;
23306        if !self.name.is_empty() {
23307            state.serialize_entry("name", &self.name)?;
23308        }
23309        if self.create_time.is_some() {
23310            state.serialize_entry("createTime", &self.create_time)?;
23311        }
23312        if self.update_time.is_some() {
23313            state.serialize_entry("updateTime", &self.update_time)?;
23314        }
23315        if !self.description.is_empty() {
23316            state.serialize_entry("description", &self.description)?;
23317        }
23318        if !wkt::internal::is_default(&self.priority) {
23319            struct __With<'a>(&'a i32);
23320            impl<'a> serde::ser::Serialize for __With<'a> {
23321                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
23322                where
23323                    S: serde::ser::Serializer,
23324                {
23325                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
23326                }
23327            }
23328            state.serialize_entry("priority", &__With(&self.priority))?;
23329        }
23330        if !wkt::internal::is_default(&self.action) {
23331            state.serialize_entry("action", &self.action)?;
23332        }
23333        if !self.ip_protocol.is_empty() {
23334            state.serialize_entry("ipProtocol", &self.ip_protocol)?;
23335        }
23336        if !self.source_ip_ranges.is_empty() {
23337            state.serialize_entry("sourceIpRanges", &self.source_ip_ranges)?;
23338        }
23339        if !self.source_ports.is_empty() {
23340            state.serialize_entry("sourcePorts", &self.source_ports)?;
23341        }
23342        if !self.destination_ip_ranges.is_empty() {
23343            state.serialize_entry("destinationIpRanges", &self.destination_ip_ranges)?;
23344        }
23345        if !self.destination_ports.is_empty() {
23346            state.serialize_entry("destinationPorts", &self.destination_ports)?;
23347        }
23348        if !wkt::internal::is_default(&self.state) {
23349            state.serialize_entry("state", &self.state)?;
23350        }
23351        if !self.uid.is_empty() {
23352            state.serialize_entry("uid", &self.uid)?;
23353        }
23354        if !self._unknown_fields.is_empty() {
23355            for (key, value) in self._unknown_fields.iter() {
23356                state.serialize_entry(key, &value)?;
23357            }
23358        }
23359        state.end()
23360    }
23361}
23362
23363/// Defines additional types related to [ExternalAccessRule].
23364pub mod external_access_rule {
23365    #[allow(unused_imports)]
23366    use super::*;
23367
23368    /// An IP range provided in any one of the supported formats.
23369    #[derive(Clone, Debug, Default, PartialEq)]
23370    #[non_exhaustive]
23371    pub struct IpRange {
23372        pub ip_range: std::option::Option<crate::model::external_access_rule::ip_range::IpRange>,
23373
23374        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
23375    }
23376
23377    impl IpRange {
23378        pub fn new() -> Self {
23379            std::default::Default::default()
23380        }
23381
23382        /// Sets the value of [ip_range][crate::model::external_access_rule::IpRange::ip_range].
23383        ///
23384        /// Note that all the setters affecting `ip_range` are mutually
23385        /// exclusive.
23386        pub fn set_ip_range<
23387            T: std::convert::Into<
23388                    std::option::Option<crate::model::external_access_rule::ip_range::IpRange>,
23389                >,
23390        >(
23391            mut self,
23392            v: T,
23393        ) -> Self {
23394            self.ip_range = v.into();
23395            self
23396        }
23397
23398        /// The value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23399        /// if it holds a `IpAddress`, `None` if the field is not set or
23400        /// holds a different branch.
23401        pub fn ip_address(&self) -> std::option::Option<&std::string::String> {
23402            #[allow(unreachable_patterns)]
23403            self.ip_range.as_ref().and_then(|v| match v {
23404                crate::model::external_access_rule::ip_range::IpRange::IpAddress(v) => {
23405                    std::option::Option::Some(v)
23406                }
23407                _ => std::option::Option::None,
23408            })
23409        }
23410
23411        /// Sets the value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23412        /// to hold a `IpAddress`.
23413        ///
23414        /// Note that all the setters affecting `ip_range` are
23415        /// mutually exclusive.
23416        pub fn set_ip_address<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
23417            self.ip_range = std::option::Option::Some(
23418                crate::model::external_access_rule::ip_range::IpRange::IpAddress(v.into()),
23419            );
23420            self
23421        }
23422
23423        /// The value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23424        /// if it holds a `IpAddressRange`, `None` if the field is not set or
23425        /// holds a different branch.
23426        pub fn ip_address_range(&self) -> std::option::Option<&std::string::String> {
23427            #[allow(unreachable_patterns)]
23428            self.ip_range.as_ref().and_then(|v| match v {
23429                crate::model::external_access_rule::ip_range::IpRange::IpAddressRange(v) => {
23430                    std::option::Option::Some(v)
23431                }
23432                _ => std::option::Option::None,
23433            })
23434        }
23435
23436        /// Sets the value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23437        /// to hold a `IpAddressRange`.
23438        ///
23439        /// Note that all the setters affecting `ip_range` are
23440        /// mutually exclusive.
23441        pub fn set_ip_address_range<T: std::convert::Into<std::string::String>>(
23442            mut self,
23443            v: T,
23444        ) -> Self {
23445            self.ip_range = std::option::Option::Some(
23446                crate::model::external_access_rule::ip_range::IpRange::IpAddressRange(v.into()),
23447            );
23448            self
23449        }
23450
23451        /// The value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23452        /// if it holds a `ExternalAddress`, `None` if the field is not set or
23453        /// holds a different branch.
23454        pub fn external_address(&self) -> std::option::Option<&std::string::String> {
23455            #[allow(unreachable_patterns)]
23456            self.ip_range.as_ref().and_then(|v| match v {
23457                crate::model::external_access_rule::ip_range::IpRange::ExternalAddress(v) => {
23458                    std::option::Option::Some(v)
23459                }
23460                _ => std::option::Option::None,
23461            })
23462        }
23463
23464        /// Sets the value of [ip_range][crate::model::external_access_rule::IpRange::ip_range]
23465        /// to hold a `ExternalAddress`.
23466        ///
23467        /// Note that all the setters affecting `ip_range` are
23468        /// mutually exclusive.
23469        pub fn set_external_address<T: std::convert::Into<std::string::String>>(
23470            mut self,
23471            v: T,
23472        ) -> Self {
23473            self.ip_range = std::option::Option::Some(
23474                crate::model::external_access_rule::ip_range::IpRange::ExternalAddress(v.into()),
23475            );
23476            self
23477        }
23478    }
23479
23480    impl wkt::message::Message for IpRange {
23481        fn typename() -> &'static str {
23482            "type.googleapis.com/google.cloud.vmwareengine.v1.ExternalAccessRule.IpRange"
23483        }
23484    }
23485
23486    #[doc(hidden)]
23487    impl<'de> serde::de::Deserialize<'de> for IpRange {
23488        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23489        where
23490            D: serde::Deserializer<'de>,
23491        {
23492            #[allow(non_camel_case_types)]
23493            #[doc(hidden)]
23494            #[derive(PartialEq, Eq, Hash)]
23495            enum __FieldTag {
23496                __ip_address,
23497                __ip_address_range,
23498                __external_address,
23499                Unknown(std::string::String),
23500            }
23501            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
23502                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23503                where
23504                    D: serde::Deserializer<'de>,
23505                {
23506                    struct Visitor;
23507                    impl<'de> serde::de::Visitor<'de> for Visitor {
23508                        type Value = __FieldTag;
23509                        fn expecting(
23510                            &self,
23511                            formatter: &mut std::fmt::Formatter,
23512                        ) -> std::fmt::Result {
23513                            formatter.write_str("a field name for IpRange")
23514                        }
23515                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
23516                        where
23517                            E: serde::de::Error,
23518                        {
23519                            use std::result::Result::Ok;
23520                            use std::string::ToString;
23521                            match value {
23522                                "ipAddress" => Ok(__FieldTag::__ip_address),
23523                                "ip_address" => Ok(__FieldTag::__ip_address),
23524                                "ipAddressRange" => Ok(__FieldTag::__ip_address_range),
23525                                "ip_address_range" => Ok(__FieldTag::__ip_address_range),
23526                                "externalAddress" => Ok(__FieldTag::__external_address),
23527                                "external_address" => Ok(__FieldTag::__external_address),
23528                                _ => Ok(__FieldTag::Unknown(value.to_string())),
23529                            }
23530                        }
23531                    }
23532                    deserializer.deserialize_identifier(Visitor)
23533                }
23534            }
23535            struct Visitor;
23536            impl<'de> serde::de::Visitor<'de> for Visitor {
23537                type Value = IpRange;
23538                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
23539                    formatter.write_str("struct IpRange")
23540                }
23541                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
23542                where
23543                    A: serde::de::MapAccess<'de>,
23544                {
23545                    #[allow(unused_imports)]
23546                    use serde::de::Error;
23547                    use std::option::Option::Some;
23548                    let mut fields = std::collections::HashSet::new();
23549                    let mut result = Self::Value::new();
23550                    while let Some(tag) = map.next_key::<__FieldTag>()? {
23551                        #[allow(clippy::match_single_binding)]
23552                        match tag {
23553                            __FieldTag::__ip_address => {
23554                                if !fields.insert(__FieldTag::__ip_address) {
23555                                    return std::result::Result::Err(A::Error::duplicate_field(
23556                                        "multiple values for ip_address",
23557                                    ));
23558                                }
23559                                if result.ip_range.is_some() {
23560                                    return std::result::Result::Err(A::Error::duplicate_field(
23561                                        "multiple values for `ip_range`, a oneof with full ID .google.cloud.vmwareengine.v1.ExternalAccessRule.IpRange.ip_address, latest field was ipAddress",
23562                                    ));
23563                                }
23564                                result.ip_range = std::option::Option::Some(
23565                                    crate::model::external_access_rule::ip_range::IpRange::IpAddress(
23566                                        map.next_value::<std::option::Option<std::string::String>>()?.unwrap_or_default()
23567                                    ),
23568                                );
23569                            }
23570                            __FieldTag::__ip_address_range => {
23571                                if !fields.insert(__FieldTag::__ip_address_range) {
23572                                    return std::result::Result::Err(A::Error::duplicate_field(
23573                                        "multiple values for ip_address_range",
23574                                    ));
23575                                }
23576                                if result.ip_range.is_some() {
23577                                    return std::result::Result::Err(A::Error::duplicate_field(
23578                                        "multiple values for `ip_range`, a oneof with full ID .google.cloud.vmwareengine.v1.ExternalAccessRule.IpRange.ip_address_range, latest field was ipAddressRange",
23579                                    ));
23580                                }
23581                                result.ip_range = std::option::Option::Some(
23582                                    crate::model::external_access_rule::ip_range::IpRange::IpAddressRange(
23583                                        map.next_value::<std::option::Option<std::string::String>>()?.unwrap_or_default()
23584                                    ),
23585                                );
23586                            }
23587                            __FieldTag::__external_address => {
23588                                if !fields.insert(__FieldTag::__external_address) {
23589                                    return std::result::Result::Err(A::Error::duplicate_field(
23590                                        "multiple values for external_address",
23591                                    ));
23592                                }
23593                                if result.ip_range.is_some() {
23594                                    return std::result::Result::Err(A::Error::duplicate_field(
23595                                        "multiple values for `ip_range`, a oneof with full ID .google.cloud.vmwareengine.v1.ExternalAccessRule.IpRange.external_address, latest field was externalAddress",
23596                                    ));
23597                                }
23598                                result.ip_range = std::option::Option::Some(
23599                                    crate::model::external_access_rule::ip_range::IpRange::ExternalAddress(
23600                                        map.next_value::<std::option::Option<std::string::String>>()?.unwrap_or_default()
23601                                    ),
23602                                );
23603                            }
23604                            __FieldTag::Unknown(key) => {
23605                                let value = map.next_value::<serde_json::Value>()?;
23606                                result._unknown_fields.insert(key, value);
23607                            }
23608                        }
23609                    }
23610                    std::result::Result::Ok(result)
23611                }
23612            }
23613            deserializer.deserialize_any(Visitor)
23614        }
23615    }
23616
23617    #[doc(hidden)]
23618    impl serde::ser::Serialize for IpRange {
23619        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
23620        where
23621            S: serde::ser::Serializer,
23622        {
23623            use serde::ser::SerializeMap;
23624            #[allow(unused_imports)]
23625            use std::option::Option::Some;
23626            let mut state = serializer.serialize_map(std::option::Option::None)?;
23627            if let Some(value) = self.ip_address() {
23628                state.serialize_entry("ipAddress", value)?;
23629            }
23630            if let Some(value) = self.ip_address_range() {
23631                state.serialize_entry("ipAddressRange", value)?;
23632            }
23633            if let Some(value) = self.external_address() {
23634                state.serialize_entry("externalAddress", value)?;
23635            }
23636            if !self._unknown_fields.is_empty() {
23637                for (key, value) in self._unknown_fields.iter() {
23638                    state.serialize_entry(key, &value)?;
23639                }
23640            }
23641            state.end()
23642        }
23643    }
23644
23645    /// Defines additional types related to [IpRange].
23646    pub mod ip_range {
23647        #[allow(unused_imports)]
23648        use super::*;
23649
23650        #[derive(Clone, Debug, PartialEq)]
23651        #[non_exhaustive]
23652        pub enum IpRange {
23653            /// A single IP address. For example: `10.0.0.5`.
23654            IpAddress(std::string::String),
23655            /// An IP address range in the CIDR format. For example: `10.0.0.0/24`.
23656            IpAddressRange(std::string::String),
23657            /// The name of an `ExternalAddress` resource. The external address must
23658            /// have been reserved in the scope of this external access rule's parent
23659            /// network policy.  Provide the external address name in the form of
23660            /// `projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}`.
23661            /// For example:
23662            /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`.
23663            ExternalAddress(std::string::String),
23664        }
23665    }
23666
23667    /// Action determines whether the external access rule permits or blocks
23668    /// traffic, subject to the other components of the rule matching the traffic.
23669    ///
23670    /// # Working with unknown values
23671    ///
23672    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
23673    /// additional enum variants at any time. Adding new variants is not considered
23674    /// a breaking change. Applications should write their code in anticipation of:
23675    ///
23676    /// - New values appearing in future releases of the client library, **and**
23677    /// - New values received dynamically, without application changes.
23678    ///
23679    /// Please consult the [Working with enums] section in the user guide for some
23680    /// guidelines.
23681    ///
23682    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
23683    #[derive(Clone, Debug, PartialEq)]
23684    #[non_exhaustive]
23685    pub enum Action {
23686        /// Defaults to allow.
23687        Unspecified,
23688        /// Allows connections that match the other specified components.
23689        Allow,
23690        /// Blocks connections that match the other specified components.
23691        Deny,
23692        /// If set, the enum was initialized with an unknown value.
23693        ///
23694        /// Applications can examine the value using [Action::value] or
23695        /// [Action::name].
23696        UnknownValue(action::UnknownValue),
23697    }
23698
23699    #[doc(hidden)]
23700    pub mod action {
23701        #[allow(unused_imports)]
23702        use super::*;
23703        #[derive(Clone, Debug, PartialEq)]
23704        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
23705    }
23706
23707    impl Action {
23708        /// Gets the enum value.
23709        ///
23710        /// Returns `None` if the enum contains an unknown value deserialized from
23711        /// the string representation of enums.
23712        pub fn value(&self) -> std::option::Option<i32> {
23713            match self {
23714                Self::Unspecified => std::option::Option::Some(0),
23715                Self::Allow => std::option::Option::Some(1),
23716                Self::Deny => std::option::Option::Some(2),
23717                Self::UnknownValue(u) => u.0.value(),
23718            }
23719        }
23720
23721        /// Gets the enum value as a string.
23722        ///
23723        /// Returns `None` if the enum contains an unknown value deserialized from
23724        /// the integer representation of enums.
23725        pub fn name(&self) -> std::option::Option<&str> {
23726            match self {
23727                Self::Unspecified => std::option::Option::Some("ACTION_UNSPECIFIED"),
23728                Self::Allow => std::option::Option::Some("ALLOW"),
23729                Self::Deny => std::option::Option::Some("DENY"),
23730                Self::UnknownValue(u) => u.0.name(),
23731            }
23732        }
23733    }
23734
23735    impl std::default::Default for Action {
23736        fn default() -> Self {
23737            use std::convert::From;
23738            Self::from(0)
23739        }
23740    }
23741
23742    impl std::fmt::Display for Action {
23743        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
23744            wkt::internal::display_enum(f, self.name(), self.value())
23745        }
23746    }
23747
23748    impl std::convert::From<i32> for Action {
23749        fn from(value: i32) -> Self {
23750            match value {
23751                0 => Self::Unspecified,
23752                1 => Self::Allow,
23753                2 => Self::Deny,
23754                _ => Self::UnknownValue(action::UnknownValue(
23755                    wkt::internal::UnknownEnumValue::Integer(value),
23756                )),
23757            }
23758        }
23759    }
23760
23761    impl std::convert::From<&str> for Action {
23762        fn from(value: &str) -> Self {
23763            use std::string::ToString;
23764            match value {
23765                "ACTION_UNSPECIFIED" => Self::Unspecified,
23766                "ALLOW" => Self::Allow,
23767                "DENY" => Self::Deny,
23768                _ => Self::UnknownValue(action::UnknownValue(
23769                    wkt::internal::UnknownEnumValue::String(value.to_string()),
23770                )),
23771            }
23772        }
23773    }
23774
23775    impl serde::ser::Serialize for Action {
23776        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
23777        where
23778            S: serde::Serializer,
23779        {
23780            match self {
23781                Self::Unspecified => serializer.serialize_i32(0),
23782                Self::Allow => serializer.serialize_i32(1),
23783                Self::Deny => serializer.serialize_i32(2),
23784                Self::UnknownValue(u) => u.0.serialize(serializer),
23785            }
23786        }
23787    }
23788
23789    impl<'de> serde::de::Deserialize<'de> for Action {
23790        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23791        where
23792            D: serde::Deserializer<'de>,
23793        {
23794            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Action>::new(
23795                ".google.cloud.vmwareengine.v1.ExternalAccessRule.Action",
23796            ))
23797        }
23798    }
23799
23800    /// Defines possible states of external access firewall rules.
23801    ///
23802    /// # Working with unknown values
23803    ///
23804    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
23805    /// additional enum variants at any time. Adding new variants is not considered
23806    /// a breaking change. Applications should write their code in anticipation of:
23807    ///
23808    /// - New values appearing in future releases of the client library, **and**
23809    /// - New values received dynamically, without application changes.
23810    ///
23811    /// Please consult the [Working with enums] section in the user guide for some
23812    /// guidelines.
23813    ///
23814    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
23815    #[derive(Clone, Debug, PartialEq)]
23816    #[non_exhaustive]
23817    pub enum State {
23818        /// The default value. This value is used if the state is omitted.
23819        Unspecified,
23820        /// The rule is ready.
23821        Active,
23822        /// The rule is being created.
23823        Creating,
23824        /// The rule is being updated.
23825        Updating,
23826        /// The rule is being deleted.
23827        Deleting,
23828        /// If set, the enum was initialized with an unknown value.
23829        ///
23830        /// Applications can examine the value using [State::value] or
23831        /// [State::name].
23832        UnknownValue(state::UnknownValue),
23833    }
23834
23835    #[doc(hidden)]
23836    pub mod state {
23837        #[allow(unused_imports)]
23838        use super::*;
23839        #[derive(Clone, Debug, PartialEq)]
23840        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
23841    }
23842
23843    impl State {
23844        /// Gets the enum value.
23845        ///
23846        /// Returns `None` if the enum contains an unknown value deserialized from
23847        /// the string representation of enums.
23848        pub fn value(&self) -> std::option::Option<i32> {
23849            match self {
23850                Self::Unspecified => std::option::Option::Some(0),
23851                Self::Active => std::option::Option::Some(1),
23852                Self::Creating => std::option::Option::Some(2),
23853                Self::Updating => std::option::Option::Some(3),
23854                Self::Deleting => std::option::Option::Some(4),
23855                Self::UnknownValue(u) => u.0.value(),
23856            }
23857        }
23858
23859        /// Gets the enum value as a string.
23860        ///
23861        /// Returns `None` if the enum contains an unknown value deserialized from
23862        /// the integer representation of enums.
23863        pub fn name(&self) -> std::option::Option<&str> {
23864            match self {
23865                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
23866                Self::Active => std::option::Option::Some("ACTIVE"),
23867                Self::Creating => std::option::Option::Some("CREATING"),
23868                Self::Updating => std::option::Option::Some("UPDATING"),
23869                Self::Deleting => std::option::Option::Some("DELETING"),
23870                Self::UnknownValue(u) => u.0.name(),
23871            }
23872        }
23873    }
23874
23875    impl std::default::Default for State {
23876        fn default() -> Self {
23877            use std::convert::From;
23878            Self::from(0)
23879        }
23880    }
23881
23882    impl std::fmt::Display for State {
23883        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
23884            wkt::internal::display_enum(f, self.name(), self.value())
23885        }
23886    }
23887
23888    impl std::convert::From<i32> for State {
23889        fn from(value: i32) -> Self {
23890            match value {
23891                0 => Self::Unspecified,
23892                1 => Self::Active,
23893                2 => Self::Creating,
23894                3 => Self::Updating,
23895                4 => Self::Deleting,
23896                _ => Self::UnknownValue(state::UnknownValue(
23897                    wkt::internal::UnknownEnumValue::Integer(value),
23898                )),
23899            }
23900        }
23901    }
23902
23903    impl std::convert::From<&str> for State {
23904        fn from(value: &str) -> Self {
23905            use std::string::ToString;
23906            match value {
23907                "STATE_UNSPECIFIED" => Self::Unspecified,
23908                "ACTIVE" => Self::Active,
23909                "CREATING" => Self::Creating,
23910                "UPDATING" => Self::Updating,
23911                "DELETING" => Self::Deleting,
23912                _ => Self::UnknownValue(state::UnknownValue(
23913                    wkt::internal::UnknownEnumValue::String(value.to_string()),
23914                )),
23915            }
23916        }
23917    }
23918
23919    impl serde::ser::Serialize for State {
23920        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
23921        where
23922            S: serde::Serializer,
23923        {
23924            match self {
23925                Self::Unspecified => serializer.serialize_i32(0),
23926                Self::Active => serializer.serialize_i32(1),
23927                Self::Creating => serializer.serialize_i32(2),
23928                Self::Updating => serializer.serialize_i32(3),
23929                Self::Deleting => serializer.serialize_i32(4),
23930                Self::UnknownValue(u) => u.0.serialize(serializer),
23931            }
23932        }
23933    }
23934
23935    impl<'de> serde::de::Deserialize<'de> for State {
23936        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
23937        where
23938            D: serde::Deserializer<'de>,
23939        {
23940            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
23941                ".google.cloud.vmwareengine.v1.ExternalAccessRule.State",
23942            ))
23943        }
23944    }
23945}
23946
23947/// Logging server to receive vCenter or ESXi logs.
23948#[derive(Clone, Debug, Default, PartialEq)]
23949#[non_exhaustive]
23950pub struct LoggingServer {
23951    /// Output only. The resource name of this logging server.
23952    /// Resource names are schemeless URIs that follow the conventions in
23953    /// <https://cloud.google.com/apis/design/resource_names>.
23954    /// For example:
23955    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
23956    pub name: std::string::String,
23957
23958    /// Output only. Creation time of this resource.
23959    pub create_time: std::option::Option<wkt::Timestamp>,
23960
23961    /// Output only. Last update time of this resource.
23962    pub update_time: std::option::Option<wkt::Timestamp>,
23963
23964    /// Required. Fully-qualified domain name (FQDN) or IP Address of the logging
23965    /// server.
23966    pub hostname: std::string::String,
23967
23968    /// Required. Port number at which the logging server receives logs.
23969    pub port: i32,
23970
23971    /// Required. Protocol used by vCenter to send logs to a logging server.
23972    pub protocol: crate::model::logging_server::Protocol,
23973
23974    /// Required. The type of component that produces logs that will be forwarded
23975    /// to this logging server.
23976    pub source_type: crate::model::logging_server::SourceType,
23977
23978    /// Output only. System-generated unique identifier for the resource.
23979    pub uid: std::string::String,
23980
23981    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
23982}
23983
23984impl LoggingServer {
23985    pub fn new() -> Self {
23986        std::default::Default::default()
23987    }
23988
23989    /// Sets the value of [name][crate::model::LoggingServer::name].
23990    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
23991        self.name = v.into();
23992        self
23993    }
23994
23995    /// Sets the value of [create_time][crate::model::LoggingServer::create_time].
23996    pub fn set_create_time<T>(mut self, v: T) -> Self
23997    where
23998        T: std::convert::Into<wkt::Timestamp>,
23999    {
24000        self.create_time = std::option::Option::Some(v.into());
24001        self
24002    }
24003
24004    /// Sets or clears the value of [create_time][crate::model::LoggingServer::create_time].
24005    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
24006    where
24007        T: std::convert::Into<wkt::Timestamp>,
24008    {
24009        self.create_time = v.map(|x| x.into());
24010        self
24011    }
24012
24013    /// Sets the value of [update_time][crate::model::LoggingServer::update_time].
24014    pub fn set_update_time<T>(mut self, v: T) -> Self
24015    where
24016        T: std::convert::Into<wkt::Timestamp>,
24017    {
24018        self.update_time = std::option::Option::Some(v.into());
24019        self
24020    }
24021
24022    /// Sets or clears the value of [update_time][crate::model::LoggingServer::update_time].
24023    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
24024    where
24025        T: std::convert::Into<wkt::Timestamp>,
24026    {
24027        self.update_time = v.map(|x| x.into());
24028        self
24029    }
24030
24031    /// Sets the value of [hostname][crate::model::LoggingServer::hostname].
24032    pub fn set_hostname<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
24033        self.hostname = v.into();
24034        self
24035    }
24036
24037    /// Sets the value of [port][crate::model::LoggingServer::port].
24038    pub fn set_port<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
24039        self.port = v.into();
24040        self
24041    }
24042
24043    /// Sets the value of [protocol][crate::model::LoggingServer::protocol].
24044    pub fn set_protocol<T: std::convert::Into<crate::model::logging_server::Protocol>>(
24045        mut self,
24046        v: T,
24047    ) -> Self {
24048        self.protocol = v.into();
24049        self
24050    }
24051
24052    /// Sets the value of [source_type][crate::model::LoggingServer::source_type].
24053    pub fn set_source_type<T: std::convert::Into<crate::model::logging_server::SourceType>>(
24054        mut self,
24055        v: T,
24056    ) -> Self {
24057        self.source_type = v.into();
24058        self
24059    }
24060
24061    /// Sets the value of [uid][crate::model::LoggingServer::uid].
24062    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
24063        self.uid = v.into();
24064        self
24065    }
24066}
24067
24068impl wkt::message::Message for LoggingServer {
24069    fn typename() -> &'static str {
24070        "type.googleapis.com/google.cloud.vmwareengine.v1.LoggingServer"
24071    }
24072}
24073
24074#[doc(hidden)]
24075impl<'de> serde::de::Deserialize<'de> for LoggingServer {
24076    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24077    where
24078        D: serde::Deserializer<'de>,
24079    {
24080        #[allow(non_camel_case_types)]
24081        #[doc(hidden)]
24082        #[derive(PartialEq, Eq, Hash)]
24083        enum __FieldTag {
24084            __name,
24085            __create_time,
24086            __update_time,
24087            __hostname,
24088            __port,
24089            __protocol,
24090            __source_type,
24091            __uid,
24092            Unknown(std::string::String),
24093        }
24094        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
24095            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24096            where
24097                D: serde::Deserializer<'de>,
24098            {
24099                struct Visitor;
24100                impl<'de> serde::de::Visitor<'de> for Visitor {
24101                    type Value = __FieldTag;
24102                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
24103                        formatter.write_str("a field name for LoggingServer")
24104                    }
24105                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
24106                    where
24107                        E: serde::de::Error,
24108                    {
24109                        use std::result::Result::Ok;
24110                        use std::string::ToString;
24111                        match value {
24112                            "name" => Ok(__FieldTag::__name),
24113                            "createTime" => Ok(__FieldTag::__create_time),
24114                            "create_time" => Ok(__FieldTag::__create_time),
24115                            "updateTime" => Ok(__FieldTag::__update_time),
24116                            "update_time" => Ok(__FieldTag::__update_time),
24117                            "hostname" => Ok(__FieldTag::__hostname),
24118                            "port" => Ok(__FieldTag::__port),
24119                            "protocol" => Ok(__FieldTag::__protocol),
24120                            "sourceType" => Ok(__FieldTag::__source_type),
24121                            "source_type" => Ok(__FieldTag::__source_type),
24122                            "uid" => Ok(__FieldTag::__uid),
24123                            _ => Ok(__FieldTag::Unknown(value.to_string())),
24124                        }
24125                    }
24126                }
24127                deserializer.deserialize_identifier(Visitor)
24128            }
24129        }
24130        struct Visitor;
24131        impl<'de> serde::de::Visitor<'de> for Visitor {
24132            type Value = LoggingServer;
24133            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
24134                formatter.write_str("struct LoggingServer")
24135            }
24136            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
24137            where
24138                A: serde::de::MapAccess<'de>,
24139            {
24140                #[allow(unused_imports)]
24141                use serde::de::Error;
24142                use std::option::Option::Some;
24143                let mut fields = std::collections::HashSet::new();
24144                let mut result = Self::Value::new();
24145                while let Some(tag) = map.next_key::<__FieldTag>()? {
24146                    #[allow(clippy::match_single_binding)]
24147                    match tag {
24148                        __FieldTag::__name => {
24149                            if !fields.insert(__FieldTag::__name) {
24150                                return std::result::Result::Err(A::Error::duplicate_field(
24151                                    "multiple values for name",
24152                                ));
24153                            }
24154                            result.name = map
24155                                .next_value::<std::option::Option<std::string::String>>()?
24156                                .unwrap_or_default();
24157                        }
24158                        __FieldTag::__create_time => {
24159                            if !fields.insert(__FieldTag::__create_time) {
24160                                return std::result::Result::Err(A::Error::duplicate_field(
24161                                    "multiple values for create_time",
24162                                ));
24163                            }
24164                            result.create_time =
24165                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
24166                        }
24167                        __FieldTag::__update_time => {
24168                            if !fields.insert(__FieldTag::__update_time) {
24169                                return std::result::Result::Err(A::Error::duplicate_field(
24170                                    "multiple values for update_time",
24171                                ));
24172                            }
24173                            result.update_time =
24174                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
24175                        }
24176                        __FieldTag::__hostname => {
24177                            if !fields.insert(__FieldTag::__hostname) {
24178                                return std::result::Result::Err(A::Error::duplicate_field(
24179                                    "multiple values for hostname",
24180                                ));
24181                            }
24182                            result.hostname = map
24183                                .next_value::<std::option::Option<std::string::String>>()?
24184                                .unwrap_or_default();
24185                        }
24186                        __FieldTag::__port => {
24187                            if !fields.insert(__FieldTag::__port) {
24188                                return std::result::Result::Err(A::Error::duplicate_field(
24189                                    "multiple values for port",
24190                                ));
24191                            }
24192                            struct __With(std::option::Option<i32>);
24193                            impl<'de> serde::de::Deserialize<'de> for __With {
24194                                fn deserialize<D>(
24195                                    deserializer: D,
24196                                ) -> std::result::Result<Self, D::Error>
24197                                where
24198                                    D: serde::de::Deserializer<'de>,
24199                                {
24200                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
24201                                }
24202                            }
24203                            result.port = map.next_value::<__With>()?.0.unwrap_or_default();
24204                        }
24205                        __FieldTag::__protocol => {
24206                            if !fields.insert(__FieldTag::__protocol) {
24207                                return std::result::Result::Err(A::Error::duplicate_field(
24208                                    "multiple values for protocol",
24209                                ));
24210                            }
24211                            result.protocol = map.next_value::<std::option::Option<crate::model::logging_server::Protocol>>()?.unwrap_or_default();
24212                        }
24213                        __FieldTag::__source_type => {
24214                            if !fields.insert(__FieldTag::__source_type) {
24215                                return std::result::Result::Err(A::Error::duplicate_field(
24216                                    "multiple values for source_type",
24217                                ));
24218                            }
24219                            result.source_type = map.next_value::<std::option::Option<crate::model::logging_server::SourceType>>()?.unwrap_or_default();
24220                        }
24221                        __FieldTag::__uid => {
24222                            if !fields.insert(__FieldTag::__uid) {
24223                                return std::result::Result::Err(A::Error::duplicate_field(
24224                                    "multiple values for uid",
24225                                ));
24226                            }
24227                            result.uid = map
24228                                .next_value::<std::option::Option<std::string::String>>()?
24229                                .unwrap_or_default();
24230                        }
24231                        __FieldTag::Unknown(key) => {
24232                            let value = map.next_value::<serde_json::Value>()?;
24233                            result._unknown_fields.insert(key, value);
24234                        }
24235                    }
24236                }
24237                std::result::Result::Ok(result)
24238            }
24239        }
24240        deserializer.deserialize_any(Visitor)
24241    }
24242}
24243
24244#[doc(hidden)]
24245impl serde::ser::Serialize for LoggingServer {
24246    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
24247    where
24248        S: serde::ser::Serializer,
24249    {
24250        use serde::ser::SerializeMap;
24251        #[allow(unused_imports)]
24252        use std::option::Option::Some;
24253        let mut state = serializer.serialize_map(std::option::Option::None)?;
24254        if !self.name.is_empty() {
24255            state.serialize_entry("name", &self.name)?;
24256        }
24257        if self.create_time.is_some() {
24258            state.serialize_entry("createTime", &self.create_time)?;
24259        }
24260        if self.update_time.is_some() {
24261            state.serialize_entry("updateTime", &self.update_time)?;
24262        }
24263        if !self.hostname.is_empty() {
24264            state.serialize_entry("hostname", &self.hostname)?;
24265        }
24266        if !wkt::internal::is_default(&self.port) {
24267            struct __With<'a>(&'a i32);
24268            impl<'a> serde::ser::Serialize for __With<'a> {
24269                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
24270                where
24271                    S: serde::ser::Serializer,
24272                {
24273                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
24274                }
24275            }
24276            state.serialize_entry("port", &__With(&self.port))?;
24277        }
24278        if !wkt::internal::is_default(&self.protocol) {
24279            state.serialize_entry("protocol", &self.protocol)?;
24280        }
24281        if !wkt::internal::is_default(&self.source_type) {
24282            state.serialize_entry("sourceType", &self.source_type)?;
24283        }
24284        if !self.uid.is_empty() {
24285            state.serialize_entry("uid", &self.uid)?;
24286        }
24287        if !self._unknown_fields.is_empty() {
24288            for (key, value) in self._unknown_fields.iter() {
24289                state.serialize_entry(key, &value)?;
24290            }
24291        }
24292        state.end()
24293    }
24294}
24295
24296/// Defines additional types related to [LoggingServer].
24297pub mod logging_server {
24298    #[allow(unused_imports)]
24299    use super::*;
24300
24301    /// Defines possible protocols used to send logs to
24302    /// a logging server.
24303    ///
24304    /// # Working with unknown values
24305    ///
24306    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
24307    /// additional enum variants at any time. Adding new variants is not considered
24308    /// a breaking change. Applications should write their code in anticipation of:
24309    ///
24310    /// - New values appearing in future releases of the client library, **and**
24311    /// - New values received dynamically, without application changes.
24312    ///
24313    /// Please consult the [Working with enums] section in the user guide for some
24314    /// guidelines.
24315    ///
24316    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
24317    #[derive(Clone, Debug, PartialEq)]
24318    #[non_exhaustive]
24319    pub enum Protocol {
24320        /// Unspecified communications protocol. This is the default value.
24321        Unspecified,
24322        /// UDP
24323        Udp,
24324        /// TCP
24325        Tcp,
24326        /// TLS
24327        Tls,
24328        /// SSL
24329        Ssl,
24330        /// RELP
24331        Relp,
24332        /// If set, the enum was initialized with an unknown value.
24333        ///
24334        /// Applications can examine the value using [Protocol::value] or
24335        /// [Protocol::name].
24336        UnknownValue(protocol::UnknownValue),
24337    }
24338
24339    #[doc(hidden)]
24340    pub mod protocol {
24341        #[allow(unused_imports)]
24342        use super::*;
24343        #[derive(Clone, Debug, PartialEq)]
24344        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
24345    }
24346
24347    impl Protocol {
24348        /// Gets the enum value.
24349        ///
24350        /// Returns `None` if the enum contains an unknown value deserialized from
24351        /// the string representation of enums.
24352        pub fn value(&self) -> std::option::Option<i32> {
24353            match self {
24354                Self::Unspecified => std::option::Option::Some(0),
24355                Self::Udp => std::option::Option::Some(1),
24356                Self::Tcp => std::option::Option::Some(2),
24357                Self::Tls => std::option::Option::Some(3),
24358                Self::Ssl => std::option::Option::Some(4),
24359                Self::Relp => std::option::Option::Some(5),
24360                Self::UnknownValue(u) => u.0.value(),
24361            }
24362        }
24363
24364        /// Gets the enum value as a string.
24365        ///
24366        /// Returns `None` if the enum contains an unknown value deserialized from
24367        /// the integer representation of enums.
24368        pub fn name(&self) -> std::option::Option<&str> {
24369            match self {
24370                Self::Unspecified => std::option::Option::Some("PROTOCOL_UNSPECIFIED"),
24371                Self::Udp => std::option::Option::Some("UDP"),
24372                Self::Tcp => std::option::Option::Some("TCP"),
24373                Self::Tls => std::option::Option::Some("TLS"),
24374                Self::Ssl => std::option::Option::Some("SSL"),
24375                Self::Relp => std::option::Option::Some("RELP"),
24376                Self::UnknownValue(u) => u.0.name(),
24377            }
24378        }
24379    }
24380
24381    impl std::default::Default for Protocol {
24382        fn default() -> Self {
24383            use std::convert::From;
24384            Self::from(0)
24385        }
24386    }
24387
24388    impl std::fmt::Display for Protocol {
24389        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
24390            wkt::internal::display_enum(f, self.name(), self.value())
24391        }
24392    }
24393
24394    impl std::convert::From<i32> for Protocol {
24395        fn from(value: i32) -> Self {
24396            match value {
24397                0 => Self::Unspecified,
24398                1 => Self::Udp,
24399                2 => Self::Tcp,
24400                3 => Self::Tls,
24401                4 => Self::Ssl,
24402                5 => Self::Relp,
24403                _ => Self::UnknownValue(protocol::UnknownValue(
24404                    wkt::internal::UnknownEnumValue::Integer(value),
24405                )),
24406            }
24407        }
24408    }
24409
24410    impl std::convert::From<&str> for Protocol {
24411        fn from(value: &str) -> Self {
24412            use std::string::ToString;
24413            match value {
24414                "PROTOCOL_UNSPECIFIED" => Self::Unspecified,
24415                "UDP" => Self::Udp,
24416                "TCP" => Self::Tcp,
24417                "TLS" => Self::Tls,
24418                "SSL" => Self::Ssl,
24419                "RELP" => Self::Relp,
24420                _ => Self::UnknownValue(protocol::UnknownValue(
24421                    wkt::internal::UnknownEnumValue::String(value.to_string()),
24422                )),
24423            }
24424        }
24425    }
24426
24427    impl serde::ser::Serialize for Protocol {
24428        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
24429        where
24430            S: serde::Serializer,
24431        {
24432            match self {
24433                Self::Unspecified => serializer.serialize_i32(0),
24434                Self::Udp => serializer.serialize_i32(1),
24435                Self::Tcp => serializer.serialize_i32(2),
24436                Self::Tls => serializer.serialize_i32(3),
24437                Self::Ssl => serializer.serialize_i32(4),
24438                Self::Relp => serializer.serialize_i32(5),
24439                Self::UnknownValue(u) => u.0.serialize(serializer),
24440            }
24441        }
24442    }
24443
24444    impl<'de> serde::de::Deserialize<'de> for Protocol {
24445        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24446        where
24447            D: serde::Deserializer<'de>,
24448        {
24449            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Protocol>::new(
24450                ".google.cloud.vmwareengine.v1.LoggingServer.Protocol",
24451            ))
24452        }
24453    }
24454
24455    /// Defines possible types of component that produces logs.
24456    ///
24457    /// # Working with unknown values
24458    ///
24459    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
24460    /// additional enum variants at any time. Adding new variants is not considered
24461    /// a breaking change. Applications should write their code in anticipation of:
24462    ///
24463    /// - New values appearing in future releases of the client library, **and**
24464    /// - New values received dynamically, without application changes.
24465    ///
24466    /// Please consult the [Working with enums] section in the user guide for some
24467    /// guidelines.
24468    ///
24469    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
24470    #[derive(Clone, Debug, PartialEq)]
24471    #[non_exhaustive]
24472    pub enum SourceType {
24473        /// The default value. This value should never be used.
24474        Unspecified,
24475        /// Logs produced by ESXI hosts
24476        Esxi,
24477        /// Logs produced by vCenter server
24478        Vcsa,
24479        /// If set, the enum was initialized with an unknown value.
24480        ///
24481        /// Applications can examine the value using [SourceType::value] or
24482        /// [SourceType::name].
24483        UnknownValue(source_type::UnknownValue),
24484    }
24485
24486    #[doc(hidden)]
24487    pub mod source_type {
24488        #[allow(unused_imports)]
24489        use super::*;
24490        #[derive(Clone, Debug, PartialEq)]
24491        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
24492    }
24493
24494    impl SourceType {
24495        /// Gets the enum value.
24496        ///
24497        /// Returns `None` if the enum contains an unknown value deserialized from
24498        /// the string representation of enums.
24499        pub fn value(&self) -> std::option::Option<i32> {
24500            match self {
24501                Self::Unspecified => std::option::Option::Some(0),
24502                Self::Esxi => std::option::Option::Some(1),
24503                Self::Vcsa => std::option::Option::Some(2),
24504                Self::UnknownValue(u) => u.0.value(),
24505            }
24506        }
24507
24508        /// Gets the enum value as a string.
24509        ///
24510        /// Returns `None` if the enum contains an unknown value deserialized from
24511        /// the integer representation of enums.
24512        pub fn name(&self) -> std::option::Option<&str> {
24513            match self {
24514                Self::Unspecified => std::option::Option::Some("SOURCE_TYPE_UNSPECIFIED"),
24515                Self::Esxi => std::option::Option::Some("ESXI"),
24516                Self::Vcsa => std::option::Option::Some("VCSA"),
24517                Self::UnknownValue(u) => u.0.name(),
24518            }
24519        }
24520    }
24521
24522    impl std::default::Default for SourceType {
24523        fn default() -> Self {
24524            use std::convert::From;
24525            Self::from(0)
24526        }
24527    }
24528
24529    impl std::fmt::Display for SourceType {
24530        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
24531            wkt::internal::display_enum(f, self.name(), self.value())
24532        }
24533    }
24534
24535    impl std::convert::From<i32> for SourceType {
24536        fn from(value: i32) -> Self {
24537            match value {
24538                0 => Self::Unspecified,
24539                1 => Self::Esxi,
24540                2 => Self::Vcsa,
24541                _ => Self::UnknownValue(source_type::UnknownValue(
24542                    wkt::internal::UnknownEnumValue::Integer(value),
24543                )),
24544            }
24545        }
24546    }
24547
24548    impl std::convert::From<&str> for SourceType {
24549        fn from(value: &str) -> Self {
24550            use std::string::ToString;
24551            match value {
24552                "SOURCE_TYPE_UNSPECIFIED" => Self::Unspecified,
24553                "ESXI" => Self::Esxi,
24554                "VCSA" => Self::Vcsa,
24555                _ => Self::UnknownValue(source_type::UnknownValue(
24556                    wkt::internal::UnknownEnumValue::String(value.to_string()),
24557                )),
24558            }
24559        }
24560    }
24561
24562    impl serde::ser::Serialize for SourceType {
24563        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
24564        where
24565            S: serde::Serializer,
24566        {
24567            match self {
24568                Self::Unspecified => serializer.serialize_i32(0),
24569                Self::Esxi => serializer.serialize_i32(1),
24570                Self::Vcsa => serializer.serialize_i32(2),
24571                Self::UnknownValue(u) => u.0.serialize(serializer),
24572            }
24573        }
24574    }
24575
24576    impl<'de> serde::de::Deserialize<'de> for SourceType {
24577        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24578        where
24579            D: serde::Deserializer<'de>,
24580        {
24581            deserializer.deserialize_any(wkt::internal::EnumVisitor::<SourceType>::new(
24582                ".google.cloud.vmwareengine.v1.LoggingServer.SourceType",
24583            ))
24584        }
24585    }
24586}
24587
24588/// Describes node type.
24589#[derive(Clone, Debug, Default, PartialEq)]
24590#[non_exhaustive]
24591pub struct NodeType {
24592    /// Output only. The resource name of this node type.
24593    /// Resource names are schemeless URIs that follow the conventions in
24594    /// <https://cloud.google.com/apis/design/resource_names>.
24595    /// For example:
24596    /// `projects/my-proj/locations/us-central1-a/nodeTypes/standard-72`
24597    pub name: std::string::String,
24598
24599    /// Output only. The canonical identifier of the node type
24600    /// (corresponds to the `NodeType`). For example: standard-72.
24601    pub node_type_id: std::string::String,
24602
24603    /// Output only. The friendly name for this node type.
24604    /// For example: ve1-standard-72
24605    pub display_name: std::string::String,
24606
24607    /// Output only. The total number of virtual CPUs in a single node.
24608    pub virtual_cpu_count: i32,
24609
24610    /// Output only. The total number of CPU cores in a single node.
24611    pub total_core_count: i32,
24612
24613    /// Output only. The amount of physical memory available, defined in GB.
24614    pub memory_gb: i32,
24615
24616    /// Output only. The amount of storage available, defined in GB.
24617    pub disk_size_gb: i32,
24618
24619    /// Output only. List of possible values of custom core count.
24620    pub available_custom_core_counts: std::vec::Vec<i32>,
24621
24622    /// Output only. The type of the resource.
24623    pub kind: crate::model::node_type::Kind,
24624
24625    /// Output only. Families of the node type.
24626    /// For node types to be in the same cluster
24627    /// they must share at least one element in the `families`.
24628    pub families: std::vec::Vec<std::string::String>,
24629
24630    /// Output only. Capabilities of this node type.
24631    pub capabilities: std::vec::Vec<crate::model::node_type::Capability>,
24632
24633    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
24634}
24635
24636impl NodeType {
24637    pub fn new() -> Self {
24638        std::default::Default::default()
24639    }
24640
24641    /// Sets the value of [name][crate::model::NodeType::name].
24642    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
24643        self.name = v.into();
24644        self
24645    }
24646
24647    /// Sets the value of [node_type_id][crate::model::NodeType::node_type_id].
24648    pub fn set_node_type_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
24649        self.node_type_id = v.into();
24650        self
24651    }
24652
24653    /// Sets the value of [display_name][crate::model::NodeType::display_name].
24654    pub fn set_display_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
24655        self.display_name = v.into();
24656        self
24657    }
24658
24659    /// Sets the value of [virtual_cpu_count][crate::model::NodeType::virtual_cpu_count].
24660    pub fn set_virtual_cpu_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
24661        self.virtual_cpu_count = v.into();
24662        self
24663    }
24664
24665    /// Sets the value of [total_core_count][crate::model::NodeType::total_core_count].
24666    pub fn set_total_core_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
24667        self.total_core_count = v.into();
24668        self
24669    }
24670
24671    /// Sets the value of [memory_gb][crate::model::NodeType::memory_gb].
24672    pub fn set_memory_gb<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
24673        self.memory_gb = v.into();
24674        self
24675    }
24676
24677    /// Sets the value of [disk_size_gb][crate::model::NodeType::disk_size_gb].
24678    pub fn set_disk_size_gb<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
24679        self.disk_size_gb = v.into();
24680        self
24681    }
24682
24683    /// Sets the value of [available_custom_core_counts][crate::model::NodeType::available_custom_core_counts].
24684    pub fn set_available_custom_core_counts<T, V>(mut self, v: T) -> Self
24685    where
24686        T: std::iter::IntoIterator<Item = V>,
24687        V: std::convert::Into<i32>,
24688    {
24689        use std::iter::Iterator;
24690        self.available_custom_core_counts = v.into_iter().map(|i| i.into()).collect();
24691        self
24692    }
24693
24694    /// Sets the value of [kind][crate::model::NodeType::kind].
24695    pub fn set_kind<T: std::convert::Into<crate::model::node_type::Kind>>(mut self, v: T) -> Self {
24696        self.kind = v.into();
24697        self
24698    }
24699
24700    /// Sets the value of [families][crate::model::NodeType::families].
24701    pub fn set_families<T, V>(mut self, v: T) -> Self
24702    where
24703        T: std::iter::IntoIterator<Item = V>,
24704        V: std::convert::Into<std::string::String>,
24705    {
24706        use std::iter::Iterator;
24707        self.families = v.into_iter().map(|i| i.into()).collect();
24708        self
24709    }
24710
24711    /// Sets the value of [capabilities][crate::model::NodeType::capabilities].
24712    pub fn set_capabilities<T, V>(mut self, v: T) -> Self
24713    where
24714        T: std::iter::IntoIterator<Item = V>,
24715        V: std::convert::Into<crate::model::node_type::Capability>,
24716    {
24717        use std::iter::Iterator;
24718        self.capabilities = v.into_iter().map(|i| i.into()).collect();
24719        self
24720    }
24721}
24722
24723impl wkt::message::Message for NodeType {
24724    fn typename() -> &'static str {
24725        "type.googleapis.com/google.cloud.vmwareengine.v1.NodeType"
24726    }
24727}
24728
24729#[doc(hidden)]
24730impl<'de> serde::de::Deserialize<'de> for NodeType {
24731    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24732    where
24733        D: serde::Deserializer<'de>,
24734    {
24735        #[allow(non_camel_case_types)]
24736        #[doc(hidden)]
24737        #[derive(PartialEq, Eq, Hash)]
24738        enum __FieldTag {
24739            __name,
24740            __node_type_id,
24741            __display_name,
24742            __virtual_cpu_count,
24743            __total_core_count,
24744            __memory_gb,
24745            __disk_size_gb,
24746            __available_custom_core_counts,
24747            __kind,
24748            __families,
24749            __capabilities,
24750            Unknown(std::string::String),
24751        }
24752        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
24753            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
24754            where
24755                D: serde::Deserializer<'de>,
24756            {
24757                struct Visitor;
24758                impl<'de> serde::de::Visitor<'de> for Visitor {
24759                    type Value = __FieldTag;
24760                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
24761                        formatter.write_str("a field name for NodeType")
24762                    }
24763                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
24764                    where
24765                        E: serde::de::Error,
24766                    {
24767                        use std::result::Result::Ok;
24768                        use std::string::ToString;
24769                        match value {
24770                            "name" => Ok(__FieldTag::__name),
24771                            "nodeTypeId" => Ok(__FieldTag::__node_type_id),
24772                            "node_type_id" => Ok(__FieldTag::__node_type_id),
24773                            "displayName" => Ok(__FieldTag::__display_name),
24774                            "display_name" => Ok(__FieldTag::__display_name),
24775                            "virtualCpuCount" => Ok(__FieldTag::__virtual_cpu_count),
24776                            "virtual_cpu_count" => Ok(__FieldTag::__virtual_cpu_count),
24777                            "totalCoreCount" => Ok(__FieldTag::__total_core_count),
24778                            "total_core_count" => Ok(__FieldTag::__total_core_count),
24779                            "memoryGb" => Ok(__FieldTag::__memory_gb),
24780                            "memory_gb" => Ok(__FieldTag::__memory_gb),
24781                            "diskSizeGb" => Ok(__FieldTag::__disk_size_gb),
24782                            "disk_size_gb" => Ok(__FieldTag::__disk_size_gb),
24783                            "availableCustomCoreCounts" => {
24784                                Ok(__FieldTag::__available_custom_core_counts)
24785                            }
24786                            "available_custom_core_counts" => {
24787                                Ok(__FieldTag::__available_custom_core_counts)
24788                            }
24789                            "kind" => Ok(__FieldTag::__kind),
24790                            "families" => Ok(__FieldTag::__families),
24791                            "capabilities" => Ok(__FieldTag::__capabilities),
24792                            _ => Ok(__FieldTag::Unknown(value.to_string())),
24793                        }
24794                    }
24795                }
24796                deserializer.deserialize_identifier(Visitor)
24797            }
24798        }
24799        struct Visitor;
24800        impl<'de> serde::de::Visitor<'de> for Visitor {
24801            type Value = NodeType;
24802            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
24803                formatter.write_str("struct NodeType")
24804            }
24805            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
24806            where
24807                A: serde::de::MapAccess<'de>,
24808            {
24809                #[allow(unused_imports)]
24810                use serde::de::Error;
24811                use std::option::Option::Some;
24812                let mut fields = std::collections::HashSet::new();
24813                let mut result = Self::Value::new();
24814                while let Some(tag) = map.next_key::<__FieldTag>()? {
24815                    #[allow(clippy::match_single_binding)]
24816                    match tag {
24817                        __FieldTag::__name => {
24818                            if !fields.insert(__FieldTag::__name) {
24819                                return std::result::Result::Err(A::Error::duplicate_field(
24820                                    "multiple values for name",
24821                                ));
24822                            }
24823                            result.name = map
24824                                .next_value::<std::option::Option<std::string::String>>()?
24825                                .unwrap_or_default();
24826                        }
24827                        __FieldTag::__node_type_id => {
24828                            if !fields.insert(__FieldTag::__node_type_id) {
24829                                return std::result::Result::Err(A::Error::duplicate_field(
24830                                    "multiple values for node_type_id",
24831                                ));
24832                            }
24833                            result.node_type_id = map
24834                                .next_value::<std::option::Option<std::string::String>>()?
24835                                .unwrap_or_default();
24836                        }
24837                        __FieldTag::__display_name => {
24838                            if !fields.insert(__FieldTag::__display_name) {
24839                                return std::result::Result::Err(A::Error::duplicate_field(
24840                                    "multiple values for display_name",
24841                                ));
24842                            }
24843                            result.display_name = map
24844                                .next_value::<std::option::Option<std::string::String>>()?
24845                                .unwrap_or_default();
24846                        }
24847                        __FieldTag::__virtual_cpu_count => {
24848                            if !fields.insert(__FieldTag::__virtual_cpu_count) {
24849                                return std::result::Result::Err(A::Error::duplicate_field(
24850                                    "multiple values for virtual_cpu_count",
24851                                ));
24852                            }
24853                            struct __With(std::option::Option<i32>);
24854                            impl<'de> serde::de::Deserialize<'de> for __With {
24855                                fn deserialize<D>(
24856                                    deserializer: D,
24857                                ) -> std::result::Result<Self, D::Error>
24858                                where
24859                                    D: serde::de::Deserializer<'de>,
24860                                {
24861                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
24862                                }
24863                            }
24864                            result.virtual_cpu_count =
24865                                map.next_value::<__With>()?.0.unwrap_or_default();
24866                        }
24867                        __FieldTag::__total_core_count => {
24868                            if !fields.insert(__FieldTag::__total_core_count) {
24869                                return std::result::Result::Err(A::Error::duplicate_field(
24870                                    "multiple values for total_core_count",
24871                                ));
24872                            }
24873                            struct __With(std::option::Option<i32>);
24874                            impl<'de> serde::de::Deserialize<'de> for __With {
24875                                fn deserialize<D>(
24876                                    deserializer: D,
24877                                ) -> std::result::Result<Self, D::Error>
24878                                where
24879                                    D: serde::de::Deserializer<'de>,
24880                                {
24881                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
24882                                }
24883                            }
24884                            result.total_core_count =
24885                                map.next_value::<__With>()?.0.unwrap_or_default();
24886                        }
24887                        __FieldTag::__memory_gb => {
24888                            if !fields.insert(__FieldTag::__memory_gb) {
24889                                return std::result::Result::Err(A::Error::duplicate_field(
24890                                    "multiple values for memory_gb",
24891                                ));
24892                            }
24893                            struct __With(std::option::Option<i32>);
24894                            impl<'de> serde::de::Deserialize<'de> for __With {
24895                                fn deserialize<D>(
24896                                    deserializer: D,
24897                                ) -> std::result::Result<Self, D::Error>
24898                                where
24899                                    D: serde::de::Deserializer<'de>,
24900                                {
24901                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
24902                                }
24903                            }
24904                            result.memory_gb = map.next_value::<__With>()?.0.unwrap_or_default();
24905                        }
24906                        __FieldTag::__disk_size_gb => {
24907                            if !fields.insert(__FieldTag::__disk_size_gb) {
24908                                return std::result::Result::Err(A::Error::duplicate_field(
24909                                    "multiple values for disk_size_gb",
24910                                ));
24911                            }
24912                            struct __With(std::option::Option<i32>);
24913                            impl<'de> serde::de::Deserialize<'de> for __With {
24914                                fn deserialize<D>(
24915                                    deserializer: D,
24916                                ) -> std::result::Result<Self, D::Error>
24917                                where
24918                                    D: serde::de::Deserializer<'de>,
24919                                {
24920                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
24921                                }
24922                            }
24923                            result.disk_size_gb = map.next_value::<__With>()?.0.unwrap_or_default();
24924                        }
24925                        __FieldTag::__available_custom_core_counts => {
24926                            if !fields.insert(__FieldTag::__available_custom_core_counts) {
24927                                return std::result::Result::Err(A::Error::duplicate_field(
24928                                    "multiple values for available_custom_core_counts",
24929                                ));
24930                            }
24931                            struct __With(std::option::Option<std::vec::Vec<i32>>);
24932                            impl<'de> serde::de::Deserialize<'de> for __With {
24933                                fn deserialize<D>(
24934                                    deserializer: D,
24935                                ) -> std::result::Result<Self, D::Error>
24936                                where
24937                                    D: serde::de::Deserializer<'de>,
24938                                {
24939                                    serde_with::As::<
24940                                        std::option::Option<std::vec::Vec<wkt::internal::I32>>,
24941                                    >::deserialize(deserializer)
24942                                    .map(__With)
24943                                }
24944                            }
24945                            result.available_custom_core_counts =
24946                                map.next_value::<__With>()?.0.unwrap_or_default();
24947                        }
24948                        __FieldTag::__kind => {
24949                            if !fields.insert(__FieldTag::__kind) {
24950                                return std::result::Result::Err(A::Error::duplicate_field(
24951                                    "multiple values for kind",
24952                                ));
24953                            }
24954                            result.kind = map
24955                                .next_value::<std::option::Option<crate::model::node_type::Kind>>()?
24956                                .unwrap_or_default();
24957                        }
24958                        __FieldTag::__families => {
24959                            if !fields.insert(__FieldTag::__families) {
24960                                return std::result::Result::Err(A::Error::duplicate_field(
24961                                    "multiple values for families",
24962                                ));
24963                            }
24964                            result.families = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
24965                        }
24966                        __FieldTag::__capabilities => {
24967                            if !fields.insert(__FieldTag::__capabilities) {
24968                                return std::result::Result::Err(A::Error::duplicate_field(
24969                                    "multiple values for capabilities",
24970                                ));
24971                            }
24972                            result.capabilities = map
24973                                .next_value::<std::option::Option<
24974                                    std::vec::Vec<crate::model::node_type::Capability>,
24975                                >>()?
24976                                .unwrap_or_default();
24977                        }
24978                        __FieldTag::Unknown(key) => {
24979                            let value = map.next_value::<serde_json::Value>()?;
24980                            result._unknown_fields.insert(key, value);
24981                        }
24982                    }
24983                }
24984                std::result::Result::Ok(result)
24985            }
24986        }
24987        deserializer.deserialize_any(Visitor)
24988    }
24989}
24990
24991#[doc(hidden)]
24992impl serde::ser::Serialize for NodeType {
24993    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
24994    where
24995        S: serde::ser::Serializer,
24996    {
24997        use serde::ser::SerializeMap;
24998        #[allow(unused_imports)]
24999        use std::option::Option::Some;
25000        let mut state = serializer.serialize_map(std::option::Option::None)?;
25001        if !self.name.is_empty() {
25002            state.serialize_entry("name", &self.name)?;
25003        }
25004        if !self.node_type_id.is_empty() {
25005            state.serialize_entry("nodeTypeId", &self.node_type_id)?;
25006        }
25007        if !self.display_name.is_empty() {
25008            state.serialize_entry("displayName", &self.display_name)?;
25009        }
25010        if !wkt::internal::is_default(&self.virtual_cpu_count) {
25011            struct __With<'a>(&'a i32);
25012            impl<'a> serde::ser::Serialize for __With<'a> {
25013                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25014                where
25015                    S: serde::ser::Serializer,
25016                {
25017                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
25018                }
25019            }
25020            state.serialize_entry("virtualCpuCount", &__With(&self.virtual_cpu_count))?;
25021        }
25022        if !wkt::internal::is_default(&self.total_core_count) {
25023            struct __With<'a>(&'a i32);
25024            impl<'a> serde::ser::Serialize for __With<'a> {
25025                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25026                where
25027                    S: serde::ser::Serializer,
25028                {
25029                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
25030                }
25031            }
25032            state.serialize_entry("totalCoreCount", &__With(&self.total_core_count))?;
25033        }
25034        if !wkt::internal::is_default(&self.memory_gb) {
25035            struct __With<'a>(&'a i32);
25036            impl<'a> serde::ser::Serialize for __With<'a> {
25037                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25038                where
25039                    S: serde::ser::Serializer,
25040                {
25041                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
25042                }
25043            }
25044            state.serialize_entry("memoryGb", &__With(&self.memory_gb))?;
25045        }
25046        if !wkt::internal::is_default(&self.disk_size_gb) {
25047            struct __With<'a>(&'a i32);
25048            impl<'a> serde::ser::Serialize for __With<'a> {
25049                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25050                where
25051                    S: serde::ser::Serializer,
25052                {
25053                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
25054                }
25055            }
25056            state.serialize_entry("diskSizeGb", &__With(&self.disk_size_gb))?;
25057        }
25058        if !self.available_custom_core_counts.is_empty() {
25059            struct __With<'a>(&'a std::vec::Vec<i32>);
25060            impl<'a> serde::ser::Serialize for __With<'a> {
25061                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25062                where
25063                    S: serde::ser::Serializer,
25064                {
25065                    serde_with::As::<std::vec::Vec<wkt::internal::I32>>::serialize(
25066                        self.0, serializer,
25067                    )
25068                }
25069            }
25070            state.serialize_entry(
25071                "availableCustomCoreCounts",
25072                &__With(&self.available_custom_core_counts),
25073            )?;
25074        }
25075        if !wkt::internal::is_default(&self.kind) {
25076            state.serialize_entry("kind", &self.kind)?;
25077        }
25078        if !self.families.is_empty() {
25079            state.serialize_entry("families", &self.families)?;
25080        }
25081        if !self.capabilities.is_empty() {
25082            state.serialize_entry("capabilities", &self.capabilities)?;
25083        }
25084        if !self._unknown_fields.is_empty() {
25085            for (key, value) in self._unknown_fields.iter() {
25086                state.serialize_entry(key, &value)?;
25087            }
25088        }
25089        state.end()
25090    }
25091}
25092
25093/// Defines additional types related to [NodeType].
25094pub mod node_type {
25095    #[allow(unused_imports)]
25096    use super::*;
25097
25098    /// Enum Kind defines possible types of a NodeType.
25099    ///
25100    /// # Working with unknown values
25101    ///
25102    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
25103    /// additional enum variants at any time. Adding new variants is not considered
25104    /// a breaking change. Applications should write their code in anticipation of:
25105    ///
25106    /// - New values appearing in future releases of the client library, **and**
25107    /// - New values received dynamically, without application changes.
25108    ///
25109    /// Please consult the [Working with enums] section in the user guide for some
25110    /// guidelines.
25111    ///
25112    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
25113    #[derive(Clone, Debug, PartialEq)]
25114    #[non_exhaustive]
25115    pub enum Kind {
25116        /// The default value. This value should never be used.
25117        Unspecified,
25118        /// Standard HCI node.
25119        Standard,
25120        /// Storage only Node.
25121        StorageOnly,
25122        /// If set, the enum was initialized with an unknown value.
25123        ///
25124        /// Applications can examine the value using [Kind::value] or
25125        /// [Kind::name].
25126        UnknownValue(kind::UnknownValue),
25127    }
25128
25129    #[doc(hidden)]
25130    pub mod kind {
25131        #[allow(unused_imports)]
25132        use super::*;
25133        #[derive(Clone, Debug, PartialEq)]
25134        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
25135    }
25136
25137    impl Kind {
25138        /// Gets the enum value.
25139        ///
25140        /// Returns `None` if the enum contains an unknown value deserialized from
25141        /// the string representation of enums.
25142        pub fn value(&self) -> std::option::Option<i32> {
25143            match self {
25144                Self::Unspecified => std::option::Option::Some(0),
25145                Self::Standard => std::option::Option::Some(1),
25146                Self::StorageOnly => std::option::Option::Some(2),
25147                Self::UnknownValue(u) => u.0.value(),
25148            }
25149        }
25150
25151        /// Gets the enum value as a string.
25152        ///
25153        /// Returns `None` if the enum contains an unknown value deserialized from
25154        /// the integer representation of enums.
25155        pub fn name(&self) -> std::option::Option<&str> {
25156            match self {
25157                Self::Unspecified => std::option::Option::Some("KIND_UNSPECIFIED"),
25158                Self::Standard => std::option::Option::Some("STANDARD"),
25159                Self::StorageOnly => std::option::Option::Some("STORAGE_ONLY"),
25160                Self::UnknownValue(u) => u.0.name(),
25161            }
25162        }
25163    }
25164
25165    impl std::default::Default for Kind {
25166        fn default() -> Self {
25167            use std::convert::From;
25168            Self::from(0)
25169        }
25170    }
25171
25172    impl std::fmt::Display for Kind {
25173        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
25174            wkt::internal::display_enum(f, self.name(), self.value())
25175        }
25176    }
25177
25178    impl std::convert::From<i32> for Kind {
25179        fn from(value: i32) -> Self {
25180            match value {
25181                0 => Self::Unspecified,
25182                1 => Self::Standard,
25183                2 => Self::StorageOnly,
25184                _ => Self::UnknownValue(kind::UnknownValue(
25185                    wkt::internal::UnknownEnumValue::Integer(value),
25186                )),
25187            }
25188        }
25189    }
25190
25191    impl std::convert::From<&str> for Kind {
25192        fn from(value: &str) -> Self {
25193            use std::string::ToString;
25194            match value {
25195                "KIND_UNSPECIFIED" => Self::Unspecified,
25196                "STANDARD" => Self::Standard,
25197                "STORAGE_ONLY" => Self::StorageOnly,
25198                _ => Self::UnknownValue(kind::UnknownValue(
25199                    wkt::internal::UnknownEnumValue::String(value.to_string()),
25200                )),
25201            }
25202        }
25203    }
25204
25205    impl serde::ser::Serialize for Kind {
25206        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25207        where
25208            S: serde::Serializer,
25209        {
25210            match self {
25211                Self::Unspecified => serializer.serialize_i32(0),
25212                Self::Standard => serializer.serialize_i32(1),
25213                Self::StorageOnly => serializer.serialize_i32(2),
25214                Self::UnknownValue(u) => u.0.serialize(serializer),
25215            }
25216        }
25217    }
25218
25219    impl<'de> serde::de::Deserialize<'de> for Kind {
25220        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25221        where
25222            D: serde::Deserializer<'de>,
25223        {
25224            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Kind>::new(
25225                ".google.cloud.vmwareengine.v1.NodeType.Kind",
25226            ))
25227        }
25228    }
25229
25230    /// Capability of a node type.
25231    ///
25232    /// # Working with unknown values
25233    ///
25234    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
25235    /// additional enum variants at any time. Adding new variants is not considered
25236    /// a breaking change. Applications should write their code in anticipation of:
25237    ///
25238    /// - New values appearing in future releases of the client library, **and**
25239    /// - New values received dynamically, without application changes.
25240    ///
25241    /// Please consult the [Working with enums] section in the user guide for some
25242    /// guidelines.
25243    ///
25244    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
25245    #[derive(Clone, Debug, PartialEq)]
25246    #[non_exhaustive]
25247    pub enum Capability {
25248        /// The default value. This value is used if the capability is omitted or
25249        /// unknown.
25250        Unspecified,
25251        /// This node type supports stretch clusters.
25252        StretchedClusters,
25253        /// If set, the enum was initialized with an unknown value.
25254        ///
25255        /// Applications can examine the value using [Capability::value] or
25256        /// [Capability::name].
25257        UnknownValue(capability::UnknownValue),
25258    }
25259
25260    #[doc(hidden)]
25261    pub mod capability {
25262        #[allow(unused_imports)]
25263        use super::*;
25264        #[derive(Clone, Debug, PartialEq)]
25265        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
25266    }
25267
25268    impl Capability {
25269        /// Gets the enum value.
25270        ///
25271        /// Returns `None` if the enum contains an unknown value deserialized from
25272        /// the string representation of enums.
25273        pub fn value(&self) -> std::option::Option<i32> {
25274            match self {
25275                Self::Unspecified => std::option::Option::Some(0),
25276                Self::StretchedClusters => std::option::Option::Some(1),
25277                Self::UnknownValue(u) => u.0.value(),
25278            }
25279        }
25280
25281        /// Gets the enum value as a string.
25282        ///
25283        /// Returns `None` if the enum contains an unknown value deserialized from
25284        /// the integer representation of enums.
25285        pub fn name(&self) -> std::option::Option<&str> {
25286            match self {
25287                Self::Unspecified => std::option::Option::Some("CAPABILITY_UNSPECIFIED"),
25288                Self::StretchedClusters => std::option::Option::Some("STRETCHED_CLUSTERS"),
25289                Self::UnknownValue(u) => u.0.name(),
25290            }
25291        }
25292    }
25293
25294    impl std::default::Default for Capability {
25295        fn default() -> Self {
25296            use std::convert::From;
25297            Self::from(0)
25298        }
25299    }
25300
25301    impl std::fmt::Display for Capability {
25302        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
25303            wkt::internal::display_enum(f, self.name(), self.value())
25304        }
25305    }
25306
25307    impl std::convert::From<i32> for Capability {
25308        fn from(value: i32) -> Self {
25309            match value {
25310                0 => Self::Unspecified,
25311                1 => Self::StretchedClusters,
25312                _ => Self::UnknownValue(capability::UnknownValue(
25313                    wkt::internal::UnknownEnumValue::Integer(value),
25314                )),
25315            }
25316        }
25317    }
25318
25319    impl std::convert::From<&str> for Capability {
25320        fn from(value: &str) -> Self {
25321            use std::string::ToString;
25322            match value {
25323                "CAPABILITY_UNSPECIFIED" => Self::Unspecified,
25324                "STRETCHED_CLUSTERS" => Self::StretchedClusters,
25325                _ => Self::UnknownValue(capability::UnknownValue(
25326                    wkt::internal::UnknownEnumValue::String(value.to_string()),
25327                )),
25328            }
25329        }
25330    }
25331
25332    impl serde::ser::Serialize for Capability {
25333        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25334        where
25335            S: serde::Serializer,
25336        {
25337            match self {
25338                Self::Unspecified => serializer.serialize_i32(0),
25339                Self::StretchedClusters => serializer.serialize_i32(1),
25340                Self::UnknownValue(u) => u.0.serialize(serializer),
25341            }
25342        }
25343    }
25344
25345    impl<'de> serde::de::Deserialize<'de> for Capability {
25346        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25347        where
25348            D: serde::Deserializer<'de>,
25349        {
25350            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Capability>::new(
25351                ".google.cloud.vmwareengine.v1.NodeType.Capability",
25352            ))
25353        }
25354    }
25355}
25356
25357/// Credentials for a private cloud.
25358#[derive(Clone, Debug, Default, PartialEq)]
25359#[non_exhaustive]
25360pub struct Credentials {
25361    /// Initial username.
25362    pub username: std::string::String,
25363
25364    /// Initial password.
25365    pub password: std::string::String,
25366
25367    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
25368}
25369
25370impl Credentials {
25371    pub fn new() -> Self {
25372        std::default::Default::default()
25373    }
25374
25375    /// Sets the value of [username][crate::model::Credentials::username].
25376    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25377        self.username = v.into();
25378        self
25379    }
25380
25381    /// Sets the value of [password][crate::model::Credentials::password].
25382    pub fn set_password<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25383        self.password = v.into();
25384        self
25385    }
25386}
25387
25388impl wkt::message::Message for Credentials {
25389    fn typename() -> &'static str {
25390        "type.googleapis.com/google.cloud.vmwareengine.v1.Credentials"
25391    }
25392}
25393
25394#[doc(hidden)]
25395impl<'de> serde::de::Deserialize<'de> for Credentials {
25396    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25397    where
25398        D: serde::Deserializer<'de>,
25399    {
25400        #[allow(non_camel_case_types)]
25401        #[doc(hidden)]
25402        #[derive(PartialEq, Eq, Hash)]
25403        enum __FieldTag {
25404            __username,
25405            __password,
25406            Unknown(std::string::String),
25407        }
25408        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
25409            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25410            where
25411                D: serde::Deserializer<'de>,
25412            {
25413                struct Visitor;
25414                impl<'de> serde::de::Visitor<'de> for Visitor {
25415                    type Value = __FieldTag;
25416                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
25417                        formatter.write_str("a field name for Credentials")
25418                    }
25419                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
25420                    where
25421                        E: serde::de::Error,
25422                    {
25423                        use std::result::Result::Ok;
25424                        use std::string::ToString;
25425                        match value {
25426                            "username" => Ok(__FieldTag::__username),
25427                            "password" => Ok(__FieldTag::__password),
25428                            _ => Ok(__FieldTag::Unknown(value.to_string())),
25429                        }
25430                    }
25431                }
25432                deserializer.deserialize_identifier(Visitor)
25433            }
25434        }
25435        struct Visitor;
25436        impl<'de> serde::de::Visitor<'de> for Visitor {
25437            type Value = Credentials;
25438            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
25439                formatter.write_str("struct Credentials")
25440            }
25441            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
25442            where
25443                A: serde::de::MapAccess<'de>,
25444            {
25445                #[allow(unused_imports)]
25446                use serde::de::Error;
25447                use std::option::Option::Some;
25448                let mut fields = std::collections::HashSet::new();
25449                let mut result = Self::Value::new();
25450                while let Some(tag) = map.next_key::<__FieldTag>()? {
25451                    #[allow(clippy::match_single_binding)]
25452                    match tag {
25453                        __FieldTag::__username => {
25454                            if !fields.insert(__FieldTag::__username) {
25455                                return std::result::Result::Err(A::Error::duplicate_field(
25456                                    "multiple values for username",
25457                                ));
25458                            }
25459                            result.username = map
25460                                .next_value::<std::option::Option<std::string::String>>()?
25461                                .unwrap_or_default();
25462                        }
25463                        __FieldTag::__password => {
25464                            if !fields.insert(__FieldTag::__password) {
25465                                return std::result::Result::Err(A::Error::duplicate_field(
25466                                    "multiple values for password",
25467                                ));
25468                            }
25469                            result.password = map
25470                                .next_value::<std::option::Option<std::string::String>>()?
25471                                .unwrap_or_default();
25472                        }
25473                        __FieldTag::Unknown(key) => {
25474                            let value = map.next_value::<serde_json::Value>()?;
25475                            result._unknown_fields.insert(key, value);
25476                        }
25477                    }
25478                }
25479                std::result::Result::Ok(result)
25480            }
25481        }
25482        deserializer.deserialize_any(Visitor)
25483    }
25484}
25485
25486#[doc(hidden)]
25487impl serde::ser::Serialize for Credentials {
25488    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25489    where
25490        S: serde::ser::Serializer,
25491    {
25492        use serde::ser::SerializeMap;
25493        #[allow(unused_imports)]
25494        use std::option::Option::Some;
25495        let mut state = serializer.serialize_map(std::option::Option::None)?;
25496        if !self.username.is_empty() {
25497            state.serialize_entry("username", &self.username)?;
25498        }
25499        if !self.password.is_empty() {
25500            state.serialize_entry("password", &self.password)?;
25501        }
25502        if !self._unknown_fields.is_empty() {
25503            for (key, value) in self._unknown_fields.iter() {
25504                state.serialize_entry(key, &value)?;
25505            }
25506        }
25507        state.end()
25508    }
25509}
25510
25511/// HCX activation key. A default key is created during
25512/// private cloud provisioning, but this behavior is subject to change
25513/// and you should always verify active keys.
25514/// Use
25515/// [VmwareEngine.ListHcxActivationKeys][google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]
25516/// to retrieve existing keys and
25517/// [VmwareEngine.CreateHcxActivationKey][google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey]
25518/// to create new ones.
25519///
25520/// [google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey]: crate::client::VmwareEngine::create_hcx_activation_key
25521/// [google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]: crate::client::VmwareEngine::list_hcx_activation_keys
25522#[derive(Clone, Debug, Default, PartialEq)]
25523#[non_exhaustive]
25524pub struct HcxActivationKey {
25525    /// Output only. The resource name of this HcxActivationKey.
25526    /// Resource names are schemeless URIs that follow the conventions in
25527    /// <https://cloud.google.com/apis/design/resource_names>.
25528    /// For example:
25529    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`
25530    pub name: std::string::String,
25531
25532    /// Output only. Creation time of HCX activation key.
25533    pub create_time: std::option::Option<wkt::Timestamp>,
25534
25535    /// Output only. State of HCX activation key.
25536    pub state: crate::model::hcx_activation_key::State,
25537
25538    /// Output only. HCX activation key.
25539    pub activation_key: std::string::String,
25540
25541    /// Output only. System-generated unique identifier for the resource.
25542    pub uid: std::string::String,
25543
25544    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
25545}
25546
25547impl HcxActivationKey {
25548    pub fn new() -> Self {
25549        std::default::Default::default()
25550    }
25551
25552    /// Sets the value of [name][crate::model::HcxActivationKey::name].
25553    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25554        self.name = v.into();
25555        self
25556    }
25557
25558    /// Sets the value of [create_time][crate::model::HcxActivationKey::create_time].
25559    pub fn set_create_time<T>(mut self, v: T) -> Self
25560    where
25561        T: std::convert::Into<wkt::Timestamp>,
25562    {
25563        self.create_time = std::option::Option::Some(v.into());
25564        self
25565    }
25566
25567    /// Sets or clears the value of [create_time][crate::model::HcxActivationKey::create_time].
25568    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
25569    where
25570        T: std::convert::Into<wkt::Timestamp>,
25571    {
25572        self.create_time = v.map(|x| x.into());
25573        self
25574    }
25575
25576    /// Sets the value of [state][crate::model::HcxActivationKey::state].
25577    pub fn set_state<T: std::convert::Into<crate::model::hcx_activation_key::State>>(
25578        mut self,
25579        v: T,
25580    ) -> Self {
25581        self.state = v.into();
25582        self
25583    }
25584
25585    /// Sets the value of [activation_key][crate::model::HcxActivationKey::activation_key].
25586    pub fn set_activation_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25587        self.activation_key = v.into();
25588        self
25589    }
25590
25591    /// Sets the value of [uid][crate::model::HcxActivationKey::uid].
25592    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25593        self.uid = v.into();
25594        self
25595    }
25596}
25597
25598impl wkt::message::Message for HcxActivationKey {
25599    fn typename() -> &'static str {
25600        "type.googleapis.com/google.cloud.vmwareengine.v1.HcxActivationKey"
25601    }
25602}
25603
25604#[doc(hidden)]
25605impl<'de> serde::de::Deserialize<'de> for HcxActivationKey {
25606    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25607    where
25608        D: serde::Deserializer<'de>,
25609    {
25610        #[allow(non_camel_case_types)]
25611        #[doc(hidden)]
25612        #[derive(PartialEq, Eq, Hash)]
25613        enum __FieldTag {
25614            __name,
25615            __create_time,
25616            __state,
25617            __activation_key,
25618            __uid,
25619            Unknown(std::string::String),
25620        }
25621        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
25622            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25623            where
25624                D: serde::Deserializer<'de>,
25625            {
25626                struct Visitor;
25627                impl<'de> serde::de::Visitor<'de> for Visitor {
25628                    type Value = __FieldTag;
25629                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
25630                        formatter.write_str("a field name for HcxActivationKey")
25631                    }
25632                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
25633                    where
25634                        E: serde::de::Error,
25635                    {
25636                        use std::result::Result::Ok;
25637                        use std::string::ToString;
25638                        match value {
25639                            "name" => Ok(__FieldTag::__name),
25640                            "createTime" => Ok(__FieldTag::__create_time),
25641                            "create_time" => Ok(__FieldTag::__create_time),
25642                            "state" => Ok(__FieldTag::__state),
25643                            "activationKey" => Ok(__FieldTag::__activation_key),
25644                            "activation_key" => Ok(__FieldTag::__activation_key),
25645                            "uid" => Ok(__FieldTag::__uid),
25646                            _ => Ok(__FieldTag::Unknown(value.to_string())),
25647                        }
25648                    }
25649                }
25650                deserializer.deserialize_identifier(Visitor)
25651            }
25652        }
25653        struct Visitor;
25654        impl<'de> serde::de::Visitor<'de> for Visitor {
25655            type Value = HcxActivationKey;
25656            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
25657                formatter.write_str("struct HcxActivationKey")
25658            }
25659            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
25660            where
25661                A: serde::de::MapAccess<'de>,
25662            {
25663                #[allow(unused_imports)]
25664                use serde::de::Error;
25665                use std::option::Option::Some;
25666                let mut fields = std::collections::HashSet::new();
25667                let mut result = Self::Value::new();
25668                while let Some(tag) = map.next_key::<__FieldTag>()? {
25669                    #[allow(clippy::match_single_binding)]
25670                    match tag {
25671                        __FieldTag::__name => {
25672                            if !fields.insert(__FieldTag::__name) {
25673                                return std::result::Result::Err(A::Error::duplicate_field(
25674                                    "multiple values for name",
25675                                ));
25676                            }
25677                            result.name = map
25678                                .next_value::<std::option::Option<std::string::String>>()?
25679                                .unwrap_or_default();
25680                        }
25681                        __FieldTag::__create_time => {
25682                            if !fields.insert(__FieldTag::__create_time) {
25683                                return std::result::Result::Err(A::Error::duplicate_field(
25684                                    "multiple values for create_time",
25685                                ));
25686                            }
25687                            result.create_time =
25688                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
25689                        }
25690                        __FieldTag::__state => {
25691                            if !fields.insert(__FieldTag::__state) {
25692                                return std::result::Result::Err(A::Error::duplicate_field(
25693                                    "multiple values for state",
25694                                ));
25695                            }
25696                            result.state = map.next_value::<std::option::Option<crate::model::hcx_activation_key::State>>()?.unwrap_or_default();
25697                        }
25698                        __FieldTag::__activation_key => {
25699                            if !fields.insert(__FieldTag::__activation_key) {
25700                                return std::result::Result::Err(A::Error::duplicate_field(
25701                                    "multiple values for activation_key",
25702                                ));
25703                            }
25704                            result.activation_key = map
25705                                .next_value::<std::option::Option<std::string::String>>()?
25706                                .unwrap_or_default();
25707                        }
25708                        __FieldTag::__uid => {
25709                            if !fields.insert(__FieldTag::__uid) {
25710                                return std::result::Result::Err(A::Error::duplicate_field(
25711                                    "multiple values for uid",
25712                                ));
25713                            }
25714                            result.uid = map
25715                                .next_value::<std::option::Option<std::string::String>>()?
25716                                .unwrap_or_default();
25717                        }
25718                        __FieldTag::Unknown(key) => {
25719                            let value = map.next_value::<serde_json::Value>()?;
25720                            result._unknown_fields.insert(key, value);
25721                        }
25722                    }
25723                }
25724                std::result::Result::Ok(result)
25725            }
25726        }
25727        deserializer.deserialize_any(Visitor)
25728    }
25729}
25730
25731#[doc(hidden)]
25732impl serde::ser::Serialize for HcxActivationKey {
25733    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25734    where
25735        S: serde::ser::Serializer,
25736    {
25737        use serde::ser::SerializeMap;
25738        #[allow(unused_imports)]
25739        use std::option::Option::Some;
25740        let mut state = serializer.serialize_map(std::option::Option::None)?;
25741        if !self.name.is_empty() {
25742            state.serialize_entry("name", &self.name)?;
25743        }
25744        if self.create_time.is_some() {
25745            state.serialize_entry("createTime", &self.create_time)?;
25746        }
25747        if !wkt::internal::is_default(&self.state) {
25748            state.serialize_entry("state", &self.state)?;
25749        }
25750        if !self.activation_key.is_empty() {
25751            state.serialize_entry("activationKey", &self.activation_key)?;
25752        }
25753        if !self.uid.is_empty() {
25754            state.serialize_entry("uid", &self.uid)?;
25755        }
25756        if !self._unknown_fields.is_empty() {
25757            for (key, value) in self._unknown_fields.iter() {
25758                state.serialize_entry(key, &value)?;
25759            }
25760        }
25761        state.end()
25762    }
25763}
25764
25765/// Defines additional types related to [HcxActivationKey].
25766pub mod hcx_activation_key {
25767    #[allow(unused_imports)]
25768    use super::*;
25769
25770    /// State of HCX activation key
25771    ///
25772    /// # Working with unknown values
25773    ///
25774    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
25775    /// additional enum variants at any time. Adding new variants is not considered
25776    /// a breaking change. Applications should write their code in anticipation of:
25777    ///
25778    /// - New values appearing in future releases of the client library, **and**
25779    /// - New values received dynamically, without application changes.
25780    ///
25781    /// Please consult the [Working with enums] section in the user guide for some
25782    /// guidelines.
25783    ///
25784    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
25785    #[derive(Clone, Debug, PartialEq)]
25786    #[non_exhaustive]
25787    pub enum State {
25788        /// Unspecified state.
25789        Unspecified,
25790        /// State of a newly generated activation key.
25791        Available,
25792        /// State of key when it has been used to activate HCX appliance.
25793        Consumed,
25794        /// State of key when it is being created.
25795        Creating,
25796        /// If set, the enum was initialized with an unknown value.
25797        ///
25798        /// Applications can examine the value using [State::value] or
25799        /// [State::name].
25800        UnknownValue(state::UnknownValue),
25801    }
25802
25803    #[doc(hidden)]
25804    pub mod state {
25805        #[allow(unused_imports)]
25806        use super::*;
25807        #[derive(Clone, Debug, PartialEq)]
25808        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
25809    }
25810
25811    impl State {
25812        /// Gets the enum value.
25813        ///
25814        /// Returns `None` if the enum contains an unknown value deserialized from
25815        /// the string representation of enums.
25816        pub fn value(&self) -> std::option::Option<i32> {
25817            match self {
25818                Self::Unspecified => std::option::Option::Some(0),
25819                Self::Available => std::option::Option::Some(1),
25820                Self::Consumed => std::option::Option::Some(2),
25821                Self::Creating => std::option::Option::Some(3),
25822                Self::UnknownValue(u) => u.0.value(),
25823            }
25824        }
25825
25826        /// Gets the enum value as a string.
25827        ///
25828        /// Returns `None` if the enum contains an unknown value deserialized from
25829        /// the integer representation of enums.
25830        pub fn name(&self) -> std::option::Option<&str> {
25831            match self {
25832                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
25833                Self::Available => std::option::Option::Some("AVAILABLE"),
25834                Self::Consumed => std::option::Option::Some("CONSUMED"),
25835                Self::Creating => std::option::Option::Some("CREATING"),
25836                Self::UnknownValue(u) => u.0.name(),
25837            }
25838        }
25839    }
25840
25841    impl std::default::Default for State {
25842        fn default() -> Self {
25843            use std::convert::From;
25844            Self::from(0)
25845        }
25846    }
25847
25848    impl std::fmt::Display for State {
25849        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
25850            wkt::internal::display_enum(f, self.name(), self.value())
25851        }
25852    }
25853
25854    impl std::convert::From<i32> for State {
25855        fn from(value: i32) -> Self {
25856            match value {
25857                0 => Self::Unspecified,
25858                1 => Self::Available,
25859                2 => Self::Consumed,
25860                3 => Self::Creating,
25861                _ => Self::UnknownValue(state::UnknownValue(
25862                    wkt::internal::UnknownEnumValue::Integer(value),
25863                )),
25864            }
25865        }
25866    }
25867
25868    impl std::convert::From<&str> for State {
25869        fn from(value: &str) -> Self {
25870            use std::string::ToString;
25871            match value {
25872                "STATE_UNSPECIFIED" => Self::Unspecified,
25873                "AVAILABLE" => Self::Available,
25874                "CONSUMED" => Self::Consumed,
25875                "CREATING" => Self::Creating,
25876                _ => Self::UnknownValue(state::UnknownValue(
25877                    wkt::internal::UnknownEnumValue::String(value.to_string()),
25878                )),
25879            }
25880        }
25881    }
25882
25883    impl serde::ser::Serialize for State {
25884        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
25885        where
25886            S: serde::Serializer,
25887        {
25888            match self {
25889                Self::Unspecified => serializer.serialize_i32(0),
25890                Self::Available => serializer.serialize_i32(1),
25891                Self::Consumed => serializer.serialize_i32(2),
25892                Self::Creating => serializer.serialize_i32(3),
25893                Self::UnknownValue(u) => u.0.serialize(serializer),
25894            }
25895        }
25896    }
25897
25898    impl<'de> serde::de::Deserialize<'de> for State {
25899        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25900        where
25901            D: serde::Deserializer<'de>,
25902        {
25903            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
25904                ".google.cloud.vmwareengine.v1.HcxActivationKey.State",
25905            ))
25906        }
25907    }
25908}
25909
25910/// Details about a HCX Cloud Manager appliance.
25911#[derive(Clone, Debug, Default, PartialEq)]
25912#[non_exhaustive]
25913pub struct Hcx {
25914    /// Internal IP address of the appliance.
25915    pub internal_ip: std::string::String,
25916
25917    /// Version of the appliance.
25918    pub version: std::string::String,
25919
25920    /// Output only. The state of the appliance.
25921    pub state: crate::model::hcx::State,
25922
25923    /// Fully qualified domain name of the appliance.
25924    pub fqdn: std::string::String,
25925
25926    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
25927}
25928
25929impl Hcx {
25930    pub fn new() -> Self {
25931        std::default::Default::default()
25932    }
25933
25934    /// Sets the value of [internal_ip][crate::model::Hcx::internal_ip].
25935    pub fn set_internal_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25936        self.internal_ip = v.into();
25937        self
25938    }
25939
25940    /// Sets the value of [version][crate::model::Hcx::version].
25941    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25942        self.version = v.into();
25943        self
25944    }
25945
25946    /// Sets the value of [state][crate::model::Hcx::state].
25947    pub fn set_state<T: std::convert::Into<crate::model::hcx::State>>(mut self, v: T) -> Self {
25948        self.state = v.into();
25949        self
25950    }
25951
25952    /// Sets the value of [fqdn][crate::model::Hcx::fqdn].
25953    pub fn set_fqdn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
25954        self.fqdn = v.into();
25955        self
25956    }
25957}
25958
25959impl wkt::message::Message for Hcx {
25960    fn typename() -> &'static str {
25961        "type.googleapis.com/google.cloud.vmwareengine.v1.Hcx"
25962    }
25963}
25964
25965#[doc(hidden)]
25966impl<'de> serde::de::Deserialize<'de> for Hcx {
25967    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25968    where
25969        D: serde::Deserializer<'de>,
25970    {
25971        #[allow(non_camel_case_types)]
25972        #[doc(hidden)]
25973        #[derive(PartialEq, Eq, Hash)]
25974        enum __FieldTag {
25975            __internal_ip,
25976            __version,
25977            __state,
25978            __fqdn,
25979            Unknown(std::string::String),
25980        }
25981        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
25982            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
25983            where
25984                D: serde::Deserializer<'de>,
25985            {
25986                struct Visitor;
25987                impl<'de> serde::de::Visitor<'de> for Visitor {
25988                    type Value = __FieldTag;
25989                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
25990                        formatter.write_str("a field name for Hcx")
25991                    }
25992                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
25993                    where
25994                        E: serde::de::Error,
25995                    {
25996                        use std::result::Result::Ok;
25997                        use std::string::ToString;
25998                        match value {
25999                            "internalIp" => Ok(__FieldTag::__internal_ip),
26000                            "internal_ip" => Ok(__FieldTag::__internal_ip),
26001                            "version" => Ok(__FieldTag::__version),
26002                            "state" => Ok(__FieldTag::__state),
26003                            "fqdn" => Ok(__FieldTag::__fqdn),
26004                            _ => Ok(__FieldTag::Unknown(value.to_string())),
26005                        }
26006                    }
26007                }
26008                deserializer.deserialize_identifier(Visitor)
26009            }
26010        }
26011        struct Visitor;
26012        impl<'de> serde::de::Visitor<'de> for Visitor {
26013            type Value = Hcx;
26014            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
26015                formatter.write_str("struct Hcx")
26016            }
26017            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
26018            where
26019                A: serde::de::MapAccess<'de>,
26020            {
26021                #[allow(unused_imports)]
26022                use serde::de::Error;
26023                use std::option::Option::Some;
26024                let mut fields = std::collections::HashSet::new();
26025                let mut result = Self::Value::new();
26026                while let Some(tag) = map.next_key::<__FieldTag>()? {
26027                    #[allow(clippy::match_single_binding)]
26028                    match tag {
26029                        __FieldTag::__internal_ip => {
26030                            if !fields.insert(__FieldTag::__internal_ip) {
26031                                return std::result::Result::Err(A::Error::duplicate_field(
26032                                    "multiple values for internal_ip",
26033                                ));
26034                            }
26035                            result.internal_ip = map
26036                                .next_value::<std::option::Option<std::string::String>>()?
26037                                .unwrap_or_default();
26038                        }
26039                        __FieldTag::__version => {
26040                            if !fields.insert(__FieldTag::__version) {
26041                                return std::result::Result::Err(A::Error::duplicate_field(
26042                                    "multiple values for version",
26043                                ));
26044                            }
26045                            result.version = map
26046                                .next_value::<std::option::Option<std::string::String>>()?
26047                                .unwrap_or_default();
26048                        }
26049                        __FieldTag::__state => {
26050                            if !fields.insert(__FieldTag::__state) {
26051                                return std::result::Result::Err(A::Error::duplicate_field(
26052                                    "multiple values for state",
26053                                ));
26054                            }
26055                            result.state = map
26056                                .next_value::<std::option::Option<crate::model::hcx::State>>()?
26057                                .unwrap_or_default();
26058                        }
26059                        __FieldTag::__fqdn => {
26060                            if !fields.insert(__FieldTag::__fqdn) {
26061                                return std::result::Result::Err(A::Error::duplicate_field(
26062                                    "multiple values for fqdn",
26063                                ));
26064                            }
26065                            result.fqdn = map
26066                                .next_value::<std::option::Option<std::string::String>>()?
26067                                .unwrap_or_default();
26068                        }
26069                        __FieldTag::Unknown(key) => {
26070                            let value = map.next_value::<serde_json::Value>()?;
26071                            result._unknown_fields.insert(key, value);
26072                        }
26073                    }
26074                }
26075                std::result::Result::Ok(result)
26076            }
26077        }
26078        deserializer.deserialize_any(Visitor)
26079    }
26080}
26081
26082#[doc(hidden)]
26083impl serde::ser::Serialize for Hcx {
26084    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26085    where
26086        S: serde::ser::Serializer,
26087    {
26088        use serde::ser::SerializeMap;
26089        #[allow(unused_imports)]
26090        use std::option::Option::Some;
26091        let mut state = serializer.serialize_map(std::option::Option::None)?;
26092        if !self.internal_ip.is_empty() {
26093            state.serialize_entry("internalIp", &self.internal_ip)?;
26094        }
26095        if !self.version.is_empty() {
26096            state.serialize_entry("version", &self.version)?;
26097        }
26098        if !wkt::internal::is_default(&self.state) {
26099            state.serialize_entry("state", &self.state)?;
26100        }
26101        if !self.fqdn.is_empty() {
26102            state.serialize_entry("fqdn", &self.fqdn)?;
26103        }
26104        if !self._unknown_fields.is_empty() {
26105            for (key, value) in self._unknown_fields.iter() {
26106                state.serialize_entry(key, &value)?;
26107            }
26108        }
26109        state.end()
26110    }
26111}
26112
26113/// Defines additional types related to [Hcx].
26114pub mod hcx {
26115    #[allow(unused_imports)]
26116    use super::*;
26117
26118    /// State of the appliance
26119    ///
26120    /// # Working with unknown values
26121    ///
26122    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
26123    /// additional enum variants at any time. Adding new variants is not considered
26124    /// a breaking change. Applications should write their code in anticipation of:
26125    ///
26126    /// - New values appearing in future releases of the client library, **and**
26127    /// - New values received dynamically, without application changes.
26128    ///
26129    /// Please consult the [Working with enums] section in the user guide for some
26130    /// guidelines.
26131    ///
26132    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
26133    #[derive(Clone, Debug, PartialEq)]
26134    #[non_exhaustive]
26135    pub enum State {
26136        /// Unspecified appliance state. This is the default value.
26137        Unspecified,
26138        /// The appliance is operational and can be used.
26139        Active,
26140        /// The appliance is being deployed.
26141        Creating,
26142        /// The appliance is being activated.
26143        Activating,
26144        /// If set, the enum was initialized with an unknown value.
26145        ///
26146        /// Applications can examine the value using [State::value] or
26147        /// [State::name].
26148        UnknownValue(state::UnknownValue),
26149    }
26150
26151    #[doc(hidden)]
26152    pub mod state {
26153        #[allow(unused_imports)]
26154        use super::*;
26155        #[derive(Clone, Debug, PartialEq)]
26156        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
26157    }
26158
26159    impl State {
26160        /// Gets the enum value.
26161        ///
26162        /// Returns `None` if the enum contains an unknown value deserialized from
26163        /// the string representation of enums.
26164        pub fn value(&self) -> std::option::Option<i32> {
26165            match self {
26166                Self::Unspecified => std::option::Option::Some(0),
26167                Self::Active => std::option::Option::Some(1),
26168                Self::Creating => std::option::Option::Some(2),
26169                Self::Activating => std::option::Option::Some(3),
26170                Self::UnknownValue(u) => u.0.value(),
26171            }
26172        }
26173
26174        /// Gets the enum value as a string.
26175        ///
26176        /// Returns `None` if the enum contains an unknown value deserialized from
26177        /// the integer representation of enums.
26178        pub fn name(&self) -> std::option::Option<&str> {
26179            match self {
26180                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
26181                Self::Active => std::option::Option::Some("ACTIVE"),
26182                Self::Creating => std::option::Option::Some("CREATING"),
26183                Self::Activating => std::option::Option::Some("ACTIVATING"),
26184                Self::UnknownValue(u) => u.0.name(),
26185            }
26186        }
26187    }
26188
26189    impl std::default::Default for State {
26190        fn default() -> Self {
26191            use std::convert::From;
26192            Self::from(0)
26193        }
26194    }
26195
26196    impl std::fmt::Display for State {
26197        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
26198            wkt::internal::display_enum(f, self.name(), self.value())
26199        }
26200    }
26201
26202    impl std::convert::From<i32> for State {
26203        fn from(value: i32) -> Self {
26204            match value {
26205                0 => Self::Unspecified,
26206                1 => Self::Active,
26207                2 => Self::Creating,
26208                3 => Self::Activating,
26209                _ => Self::UnknownValue(state::UnknownValue(
26210                    wkt::internal::UnknownEnumValue::Integer(value),
26211                )),
26212            }
26213        }
26214    }
26215
26216    impl std::convert::From<&str> for State {
26217        fn from(value: &str) -> Self {
26218            use std::string::ToString;
26219            match value {
26220                "STATE_UNSPECIFIED" => Self::Unspecified,
26221                "ACTIVE" => Self::Active,
26222                "CREATING" => Self::Creating,
26223                "ACTIVATING" => Self::Activating,
26224                _ => Self::UnknownValue(state::UnknownValue(
26225                    wkt::internal::UnknownEnumValue::String(value.to_string()),
26226                )),
26227            }
26228        }
26229    }
26230
26231    impl serde::ser::Serialize for State {
26232        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26233        where
26234            S: serde::Serializer,
26235        {
26236            match self {
26237                Self::Unspecified => serializer.serialize_i32(0),
26238                Self::Active => serializer.serialize_i32(1),
26239                Self::Creating => serializer.serialize_i32(2),
26240                Self::Activating => serializer.serialize_i32(3),
26241                Self::UnknownValue(u) => u.0.serialize(serializer),
26242            }
26243        }
26244    }
26245
26246    impl<'de> serde::de::Deserialize<'de> for State {
26247        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26248        where
26249            D: serde::Deserializer<'de>,
26250        {
26251            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
26252                ".google.cloud.vmwareengine.v1.Hcx.State",
26253            ))
26254        }
26255    }
26256}
26257
26258/// Details about a NSX Manager appliance.
26259#[derive(Clone, Debug, Default, PartialEq)]
26260#[non_exhaustive]
26261pub struct Nsx {
26262    /// Internal IP address of the appliance.
26263    pub internal_ip: std::string::String,
26264
26265    /// Version of the appliance.
26266    pub version: std::string::String,
26267
26268    /// Output only. The state of the appliance.
26269    pub state: crate::model::nsx::State,
26270
26271    /// Fully qualified domain name of the appliance.
26272    pub fqdn: std::string::String,
26273
26274    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
26275}
26276
26277impl Nsx {
26278    pub fn new() -> Self {
26279        std::default::Default::default()
26280    }
26281
26282    /// Sets the value of [internal_ip][crate::model::Nsx::internal_ip].
26283    pub fn set_internal_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26284        self.internal_ip = v.into();
26285        self
26286    }
26287
26288    /// Sets the value of [version][crate::model::Nsx::version].
26289    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26290        self.version = v.into();
26291        self
26292    }
26293
26294    /// Sets the value of [state][crate::model::Nsx::state].
26295    pub fn set_state<T: std::convert::Into<crate::model::nsx::State>>(mut self, v: T) -> Self {
26296        self.state = v.into();
26297        self
26298    }
26299
26300    /// Sets the value of [fqdn][crate::model::Nsx::fqdn].
26301    pub fn set_fqdn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26302        self.fqdn = v.into();
26303        self
26304    }
26305}
26306
26307impl wkt::message::Message for Nsx {
26308    fn typename() -> &'static str {
26309        "type.googleapis.com/google.cloud.vmwareengine.v1.Nsx"
26310    }
26311}
26312
26313#[doc(hidden)]
26314impl<'de> serde::de::Deserialize<'de> for Nsx {
26315    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26316    where
26317        D: serde::Deserializer<'de>,
26318    {
26319        #[allow(non_camel_case_types)]
26320        #[doc(hidden)]
26321        #[derive(PartialEq, Eq, Hash)]
26322        enum __FieldTag {
26323            __internal_ip,
26324            __version,
26325            __state,
26326            __fqdn,
26327            Unknown(std::string::String),
26328        }
26329        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
26330            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26331            where
26332                D: serde::Deserializer<'de>,
26333            {
26334                struct Visitor;
26335                impl<'de> serde::de::Visitor<'de> for Visitor {
26336                    type Value = __FieldTag;
26337                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
26338                        formatter.write_str("a field name for Nsx")
26339                    }
26340                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
26341                    where
26342                        E: serde::de::Error,
26343                    {
26344                        use std::result::Result::Ok;
26345                        use std::string::ToString;
26346                        match value {
26347                            "internalIp" => Ok(__FieldTag::__internal_ip),
26348                            "internal_ip" => Ok(__FieldTag::__internal_ip),
26349                            "version" => Ok(__FieldTag::__version),
26350                            "state" => Ok(__FieldTag::__state),
26351                            "fqdn" => Ok(__FieldTag::__fqdn),
26352                            _ => Ok(__FieldTag::Unknown(value.to_string())),
26353                        }
26354                    }
26355                }
26356                deserializer.deserialize_identifier(Visitor)
26357            }
26358        }
26359        struct Visitor;
26360        impl<'de> serde::de::Visitor<'de> for Visitor {
26361            type Value = Nsx;
26362            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
26363                formatter.write_str("struct Nsx")
26364            }
26365            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
26366            where
26367                A: serde::de::MapAccess<'de>,
26368            {
26369                #[allow(unused_imports)]
26370                use serde::de::Error;
26371                use std::option::Option::Some;
26372                let mut fields = std::collections::HashSet::new();
26373                let mut result = Self::Value::new();
26374                while let Some(tag) = map.next_key::<__FieldTag>()? {
26375                    #[allow(clippy::match_single_binding)]
26376                    match tag {
26377                        __FieldTag::__internal_ip => {
26378                            if !fields.insert(__FieldTag::__internal_ip) {
26379                                return std::result::Result::Err(A::Error::duplicate_field(
26380                                    "multiple values for internal_ip",
26381                                ));
26382                            }
26383                            result.internal_ip = map
26384                                .next_value::<std::option::Option<std::string::String>>()?
26385                                .unwrap_or_default();
26386                        }
26387                        __FieldTag::__version => {
26388                            if !fields.insert(__FieldTag::__version) {
26389                                return std::result::Result::Err(A::Error::duplicate_field(
26390                                    "multiple values for version",
26391                                ));
26392                            }
26393                            result.version = map
26394                                .next_value::<std::option::Option<std::string::String>>()?
26395                                .unwrap_or_default();
26396                        }
26397                        __FieldTag::__state => {
26398                            if !fields.insert(__FieldTag::__state) {
26399                                return std::result::Result::Err(A::Error::duplicate_field(
26400                                    "multiple values for state",
26401                                ));
26402                            }
26403                            result.state = map
26404                                .next_value::<std::option::Option<crate::model::nsx::State>>()?
26405                                .unwrap_or_default();
26406                        }
26407                        __FieldTag::__fqdn => {
26408                            if !fields.insert(__FieldTag::__fqdn) {
26409                                return std::result::Result::Err(A::Error::duplicate_field(
26410                                    "multiple values for fqdn",
26411                                ));
26412                            }
26413                            result.fqdn = map
26414                                .next_value::<std::option::Option<std::string::String>>()?
26415                                .unwrap_or_default();
26416                        }
26417                        __FieldTag::Unknown(key) => {
26418                            let value = map.next_value::<serde_json::Value>()?;
26419                            result._unknown_fields.insert(key, value);
26420                        }
26421                    }
26422                }
26423                std::result::Result::Ok(result)
26424            }
26425        }
26426        deserializer.deserialize_any(Visitor)
26427    }
26428}
26429
26430#[doc(hidden)]
26431impl serde::ser::Serialize for Nsx {
26432    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26433    where
26434        S: serde::ser::Serializer,
26435    {
26436        use serde::ser::SerializeMap;
26437        #[allow(unused_imports)]
26438        use std::option::Option::Some;
26439        let mut state = serializer.serialize_map(std::option::Option::None)?;
26440        if !self.internal_ip.is_empty() {
26441            state.serialize_entry("internalIp", &self.internal_ip)?;
26442        }
26443        if !self.version.is_empty() {
26444            state.serialize_entry("version", &self.version)?;
26445        }
26446        if !wkt::internal::is_default(&self.state) {
26447            state.serialize_entry("state", &self.state)?;
26448        }
26449        if !self.fqdn.is_empty() {
26450            state.serialize_entry("fqdn", &self.fqdn)?;
26451        }
26452        if !self._unknown_fields.is_empty() {
26453            for (key, value) in self._unknown_fields.iter() {
26454                state.serialize_entry(key, &value)?;
26455            }
26456        }
26457        state.end()
26458    }
26459}
26460
26461/// Defines additional types related to [Nsx].
26462pub mod nsx {
26463    #[allow(unused_imports)]
26464    use super::*;
26465
26466    /// State of the appliance
26467    ///
26468    /// # Working with unknown values
26469    ///
26470    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
26471    /// additional enum variants at any time. Adding new variants is not considered
26472    /// a breaking change. Applications should write their code in anticipation of:
26473    ///
26474    /// - New values appearing in future releases of the client library, **and**
26475    /// - New values received dynamically, without application changes.
26476    ///
26477    /// Please consult the [Working with enums] section in the user guide for some
26478    /// guidelines.
26479    ///
26480    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
26481    #[derive(Clone, Debug, PartialEq)]
26482    #[non_exhaustive]
26483    pub enum State {
26484        /// Unspecified appliance state. This is the default value.
26485        Unspecified,
26486        /// The appliance is operational and can be used.
26487        Active,
26488        /// The appliance is being deployed.
26489        Creating,
26490        /// If set, the enum was initialized with an unknown value.
26491        ///
26492        /// Applications can examine the value using [State::value] or
26493        /// [State::name].
26494        UnknownValue(state::UnknownValue),
26495    }
26496
26497    #[doc(hidden)]
26498    pub mod state {
26499        #[allow(unused_imports)]
26500        use super::*;
26501        #[derive(Clone, Debug, PartialEq)]
26502        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
26503    }
26504
26505    impl State {
26506        /// Gets the enum value.
26507        ///
26508        /// Returns `None` if the enum contains an unknown value deserialized from
26509        /// the string representation of enums.
26510        pub fn value(&self) -> std::option::Option<i32> {
26511            match self {
26512                Self::Unspecified => std::option::Option::Some(0),
26513                Self::Active => std::option::Option::Some(1),
26514                Self::Creating => std::option::Option::Some(2),
26515                Self::UnknownValue(u) => u.0.value(),
26516            }
26517        }
26518
26519        /// Gets the enum value as a string.
26520        ///
26521        /// Returns `None` if the enum contains an unknown value deserialized from
26522        /// the integer representation of enums.
26523        pub fn name(&self) -> std::option::Option<&str> {
26524            match self {
26525                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
26526                Self::Active => std::option::Option::Some("ACTIVE"),
26527                Self::Creating => std::option::Option::Some("CREATING"),
26528                Self::UnknownValue(u) => u.0.name(),
26529            }
26530        }
26531    }
26532
26533    impl std::default::Default for State {
26534        fn default() -> Self {
26535            use std::convert::From;
26536            Self::from(0)
26537        }
26538    }
26539
26540    impl std::fmt::Display for State {
26541        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
26542            wkt::internal::display_enum(f, self.name(), self.value())
26543        }
26544    }
26545
26546    impl std::convert::From<i32> for State {
26547        fn from(value: i32) -> Self {
26548            match value {
26549                0 => Self::Unspecified,
26550                1 => Self::Active,
26551                2 => Self::Creating,
26552                _ => Self::UnknownValue(state::UnknownValue(
26553                    wkt::internal::UnknownEnumValue::Integer(value),
26554                )),
26555            }
26556        }
26557    }
26558
26559    impl std::convert::From<&str> for State {
26560        fn from(value: &str) -> Self {
26561            use std::string::ToString;
26562            match value {
26563                "STATE_UNSPECIFIED" => Self::Unspecified,
26564                "ACTIVE" => Self::Active,
26565                "CREATING" => Self::Creating,
26566                _ => Self::UnknownValue(state::UnknownValue(
26567                    wkt::internal::UnknownEnumValue::String(value.to_string()),
26568                )),
26569            }
26570        }
26571    }
26572
26573    impl serde::ser::Serialize for State {
26574        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26575        where
26576            S: serde::Serializer,
26577        {
26578            match self {
26579                Self::Unspecified => serializer.serialize_i32(0),
26580                Self::Active => serializer.serialize_i32(1),
26581                Self::Creating => serializer.serialize_i32(2),
26582                Self::UnknownValue(u) => u.0.serialize(serializer),
26583            }
26584        }
26585    }
26586
26587    impl<'de> serde::de::Deserialize<'de> for State {
26588        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26589        where
26590            D: serde::Deserializer<'de>,
26591        {
26592            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
26593                ".google.cloud.vmwareengine.v1.Nsx.State",
26594            ))
26595        }
26596    }
26597}
26598
26599/// Details about a vCenter Server management appliance.
26600#[derive(Clone, Debug, Default, PartialEq)]
26601#[non_exhaustive]
26602pub struct Vcenter {
26603    /// Internal IP address of the appliance.
26604    pub internal_ip: std::string::String,
26605
26606    /// Version of the appliance.
26607    pub version: std::string::String,
26608
26609    /// Output only. The state of the appliance.
26610    pub state: crate::model::vcenter::State,
26611
26612    /// Fully qualified domain name of the appliance.
26613    pub fqdn: std::string::String,
26614
26615    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
26616}
26617
26618impl Vcenter {
26619    pub fn new() -> Self {
26620        std::default::Default::default()
26621    }
26622
26623    /// Sets the value of [internal_ip][crate::model::Vcenter::internal_ip].
26624    pub fn set_internal_ip<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26625        self.internal_ip = v.into();
26626        self
26627    }
26628
26629    /// Sets the value of [version][crate::model::Vcenter::version].
26630    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26631        self.version = v.into();
26632        self
26633    }
26634
26635    /// Sets the value of [state][crate::model::Vcenter::state].
26636    pub fn set_state<T: std::convert::Into<crate::model::vcenter::State>>(mut self, v: T) -> Self {
26637        self.state = v.into();
26638        self
26639    }
26640
26641    /// Sets the value of [fqdn][crate::model::Vcenter::fqdn].
26642    pub fn set_fqdn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
26643        self.fqdn = v.into();
26644        self
26645    }
26646}
26647
26648impl wkt::message::Message for Vcenter {
26649    fn typename() -> &'static str {
26650        "type.googleapis.com/google.cloud.vmwareengine.v1.Vcenter"
26651    }
26652}
26653
26654#[doc(hidden)]
26655impl<'de> serde::de::Deserialize<'de> for Vcenter {
26656    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26657    where
26658        D: serde::Deserializer<'de>,
26659    {
26660        #[allow(non_camel_case_types)]
26661        #[doc(hidden)]
26662        #[derive(PartialEq, Eq, Hash)]
26663        enum __FieldTag {
26664            __internal_ip,
26665            __version,
26666            __state,
26667            __fqdn,
26668            Unknown(std::string::String),
26669        }
26670        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
26671            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26672            where
26673                D: serde::Deserializer<'de>,
26674            {
26675                struct Visitor;
26676                impl<'de> serde::de::Visitor<'de> for Visitor {
26677                    type Value = __FieldTag;
26678                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
26679                        formatter.write_str("a field name for Vcenter")
26680                    }
26681                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
26682                    where
26683                        E: serde::de::Error,
26684                    {
26685                        use std::result::Result::Ok;
26686                        use std::string::ToString;
26687                        match value {
26688                            "internalIp" => Ok(__FieldTag::__internal_ip),
26689                            "internal_ip" => Ok(__FieldTag::__internal_ip),
26690                            "version" => Ok(__FieldTag::__version),
26691                            "state" => Ok(__FieldTag::__state),
26692                            "fqdn" => Ok(__FieldTag::__fqdn),
26693                            _ => Ok(__FieldTag::Unknown(value.to_string())),
26694                        }
26695                    }
26696                }
26697                deserializer.deserialize_identifier(Visitor)
26698            }
26699        }
26700        struct Visitor;
26701        impl<'de> serde::de::Visitor<'de> for Visitor {
26702            type Value = Vcenter;
26703            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
26704                formatter.write_str("struct Vcenter")
26705            }
26706            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
26707            where
26708                A: serde::de::MapAccess<'de>,
26709            {
26710                #[allow(unused_imports)]
26711                use serde::de::Error;
26712                use std::option::Option::Some;
26713                let mut fields = std::collections::HashSet::new();
26714                let mut result = Self::Value::new();
26715                while let Some(tag) = map.next_key::<__FieldTag>()? {
26716                    #[allow(clippy::match_single_binding)]
26717                    match tag {
26718                        __FieldTag::__internal_ip => {
26719                            if !fields.insert(__FieldTag::__internal_ip) {
26720                                return std::result::Result::Err(A::Error::duplicate_field(
26721                                    "multiple values for internal_ip",
26722                                ));
26723                            }
26724                            result.internal_ip = map
26725                                .next_value::<std::option::Option<std::string::String>>()?
26726                                .unwrap_or_default();
26727                        }
26728                        __FieldTag::__version => {
26729                            if !fields.insert(__FieldTag::__version) {
26730                                return std::result::Result::Err(A::Error::duplicate_field(
26731                                    "multiple values for version",
26732                                ));
26733                            }
26734                            result.version = map
26735                                .next_value::<std::option::Option<std::string::String>>()?
26736                                .unwrap_or_default();
26737                        }
26738                        __FieldTag::__state => {
26739                            if !fields.insert(__FieldTag::__state) {
26740                                return std::result::Result::Err(A::Error::duplicate_field(
26741                                    "multiple values for state",
26742                                ));
26743                            }
26744                            result.state = map
26745                                .next_value::<std::option::Option<crate::model::vcenter::State>>()?
26746                                .unwrap_or_default();
26747                        }
26748                        __FieldTag::__fqdn => {
26749                            if !fields.insert(__FieldTag::__fqdn) {
26750                                return std::result::Result::Err(A::Error::duplicate_field(
26751                                    "multiple values for fqdn",
26752                                ));
26753                            }
26754                            result.fqdn = map
26755                                .next_value::<std::option::Option<std::string::String>>()?
26756                                .unwrap_or_default();
26757                        }
26758                        __FieldTag::Unknown(key) => {
26759                            let value = map.next_value::<serde_json::Value>()?;
26760                            result._unknown_fields.insert(key, value);
26761                        }
26762                    }
26763                }
26764                std::result::Result::Ok(result)
26765            }
26766        }
26767        deserializer.deserialize_any(Visitor)
26768    }
26769}
26770
26771#[doc(hidden)]
26772impl serde::ser::Serialize for Vcenter {
26773    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26774    where
26775        S: serde::ser::Serializer,
26776    {
26777        use serde::ser::SerializeMap;
26778        #[allow(unused_imports)]
26779        use std::option::Option::Some;
26780        let mut state = serializer.serialize_map(std::option::Option::None)?;
26781        if !self.internal_ip.is_empty() {
26782            state.serialize_entry("internalIp", &self.internal_ip)?;
26783        }
26784        if !self.version.is_empty() {
26785            state.serialize_entry("version", &self.version)?;
26786        }
26787        if !wkt::internal::is_default(&self.state) {
26788            state.serialize_entry("state", &self.state)?;
26789        }
26790        if !self.fqdn.is_empty() {
26791            state.serialize_entry("fqdn", &self.fqdn)?;
26792        }
26793        if !self._unknown_fields.is_empty() {
26794            for (key, value) in self._unknown_fields.iter() {
26795                state.serialize_entry(key, &value)?;
26796            }
26797        }
26798        state.end()
26799    }
26800}
26801
26802/// Defines additional types related to [Vcenter].
26803pub mod vcenter {
26804    #[allow(unused_imports)]
26805    use super::*;
26806
26807    /// State of the appliance
26808    ///
26809    /// # Working with unknown values
26810    ///
26811    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
26812    /// additional enum variants at any time. Adding new variants is not considered
26813    /// a breaking change. Applications should write their code in anticipation of:
26814    ///
26815    /// - New values appearing in future releases of the client library, **and**
26816    /// - New values received dynamically, without application changes.
26817    ///
26818    /// Please consult the [Working with enums] section in the user guide for some
26819    /// guidelines.
26820    ///
26821    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
26822    #[derive(Clone, Debug, PartialEq)]
26823    #[non_exhaustive]
26824    pub enum State {
26825        /// Unspecified appliance state. This is the default value.
26826        Unspecified,
26827        /// The appliance is operational and can be used.
26828        Active,
26829        /// The appliance is being deployed.
26830        Creating,
26831        /// If set, the enum was initialized with an unknown value.
26832        ///
26833        /// Applications can examine the value using [State::value] or
26834        /// [State::name].
26835        UnknownValue(state::UnknownValue),
26836    }
26837
26838    #[doc(hidden)]
26839    pub mod state {
26840        #[allow(unused_imports)]
26841        use super::*;
26842        #[derive(Clone, Debug, PartialEq)]
26843        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
26844    }
26845
26846    impl State {
26847        /// Gets the enum value.
26848        ///
26849        /// Returns `None` if the enum contains an unknown value deserialized from
26850        /// the string representation of enums.
26851        pub fn value(&self) -> std::option::Option<i32> {
26852            match self {
26853                Self::Unspecified => std::option::Option::Some(0),
26854                Self::Active => std::option::Option::Some(1),
26855                Self::Creating => std::option::Option::Some(2),
26856                Self::UnknownValue(u) => u.0.value(),
26857            }
26858        }
26859
26860        /// Gets the enum value as a string.
26861        ///
26862        /// Returns `None` if the enum contains an unknown value deserialized from
26863        /// the integer representation of enums.
26864        pub fn name(&self) -> std::option::Option<&str> {
26865            match self {
26866                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
26867                Self::Active => std::option::Option::Some("ACTIVE"),
26868                Self::Creating => std::option::Option::Some("CREATING"),
26869                Self::UnknownValue(u) => u.0.name(),
26870            }
26871        }
26872    }
26873
26874    impl std::default::Default for State {
26875        fn default() -> Self {
26876            use std::convert::From;
26877            Self::from(0)
26878        }
26879    }
26880
26881    impl std::fmt::Display for State {
26882        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
26883            wkt::internal::display_enum(f, self.name(), self.value())
26884        }
26885    }
26886
26887    impl std::convert::From<i32> for State {
26888        fn from(value: i32) -> Self {
26889            match value {
26890                0 => Self::Unspecified,
26891                1 => Self::Active,
26892                2 => Self::Creating,
26893                _ => Self::UnknownValue(state::UnknownValue(
26894                    wkt::internal::UnknownEnumValue::Integer(value),
26895                )),
26896            }
26897        }
26898    }
26899
26900    impl std::convert::From<&str> for State {
26901        fn from(value: &str) -> Self {
26902            use std::string::ToString;
26903            match value {
26904                "STATE_UNSPECIFIED" => Self::Unspecified,
26905                "ACTIVE" => Self::Active,
26906                "CREATING" => Self::Creating,
26907                _ => Self::UnknownValue(state::UnknownValue(
26908                    wkt::internal::UnknownEnumValue::String(value.to_string()),
26909                )),
26910            }
26911        }
26912    }
26913
26914    impl serde::ser::Serialize for State {
26915        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
26916        where
26917            S: serde::Serializer,
26918        {
26919            match self {
26920                Self::Unspecified => serializer.serialize_i32(0),
26921                Self::Active => serializer.serialize_i32(1),
26922                Self::Creating => serializer.serialize_i32(2),
26923                Self::UnknownValue(u) => u.0.serialize(serializer),
26924            }
26925        }
26926    }
26927
26928    impl<'de> serde::de::Deserialize<'de> for State {
26929        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
26930        where
26931            D: serde::Deserializer<'de>,
26932        {
26933            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
26934                ".google.cloud.vmwareengine.v1.Vcenter.State",
26935            ))
26936        }
26937    }
26938}
26939
26940/// Autoscaling settings define the rules used by VMware Engine to
26941/// automatically scale-out and scale-in the clusters in a private cloud.
26942#[derive(Clone, Debug, Default, PartialEq)]
26943#[non_exhaustive]
26944pub struct AutoscalingSettings {
26945    /// Required. The map with autoscaling policies applied to the cluster.
26946    /// The key is the identifier of the policy.
26947    /// It must meet the following requirements:
26948    ///
26949    /// * Only contains 1-63 alphanumeric characters and hyphens
26950    /// * Begins with an alphabetical character
26951    /// * Ends with a non-hyphen character
26952    /// * Not formatted as a UUID
26953    /// * Complies with [RFC
26954    ///   1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)
26955    ///
26956    /// Currently there map must contain only one element
26957    /// that describes the autoscaling policy for compute nodes.
26958    pub autoscaling_policies: std::collections::HashMap<
26959        std::string::String,
26960        crate::model::autoscaling_settings::AutoscalingPolicy,
26961    >,
26962
26963    /// Optional. Minimum number of nodes of any type in a cluster.
26964    /// If not specified the default limits apply.
26965    pub min_cluster_node_count: i32,
26966
26967    /// Optional. Maximum number of nodes of any type in a cluster.
26968    /// If not specified the default limits apply.
26969    pub max_cluster_node_count: i32,
26970
26971    /// Optional. The minimum duration between consecutive autoscale operations.
26972    /// It starts once addition or removal of nodes is fully completed.
26973    /// Defaults to 30 minutes if not specified. Cool down period must be in whole
26974    /// minutes (for example, 30, 31, 50, 180 minutes).
26975    pub cool_down_period: std::option::Option<wkt::Duration>,
26976
26977    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
26978}
26979
26980impl AutoscalingSettings {
26981    pub fn new() -> Self {
26982        std::default::Default::default()
26983    }
26984
26985    /// Sets the value of [autoscaling_policies][crate::model::AutoscalingSettings::autoscaling_policies].
26986    pub fn set_autoscaling_policies<T, K, V>(mut self, v: T) -> Self
26987    where
26988        T: std::iter::IntoIterator<Item = (K, V)>,
26989        K: std::convert::Into<std::string::String>,
26990        V: std::convert::Into<crate::model::autoscaling_settings::AutoscalingPolicy>,
26991    {
26992        use std::iter::Iterator;
26993        self.autoscaling_policies = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
26994        self
26995    }
26996
26997    /// Sets the value of [min_cluster_node_count][crate::model::AutoscalingSettings::min_cluster_node_count].
26998    pub fn set_min_cluster_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
26999        self.min_cluster_node_count = v.into();
27000        self
27001    }
27002
27003    /// Sets the value of [max_cluster_node_count][crate::model::AutoscalingSettings::max_cluster_node_count].
27004    pub fn set_max_cluster_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
27005        self.max_cluster_node_count = v.into();
27006        self
27007    }
27008
27009    /// Sets the value of [cool_down_period][crate::model::AutoscalingSettings::cool_down_period].
27010    pub fn set_cool_down_period<T>(mut self, v: T) -> Self
27011    where
27012        T: std::convert::Into<wkt::Duration>,
27013    {
27014        self.cool_down_period = std::option::Option::Some(v.into());
27015        self
27016    }
27017
27018    /// Sets or clears the value of [cool_down_period][crate::model::AutoscalingSettings::cool_down_period].
27019    pub fn set_or_clear_cool_down_period<T>(mut self, v: std::option::Option<T>) -> Self
27020    where
27021        T: std::convert::Into<wkt::Duration>,
27022    {
27023        self.cool_down_period = v.map(|x| x.into());
27024        self
27025    }
27026}
27027
27028impl wkt::message::Message for AutoscalingSettings {
27029    fn typename() -> &'static str {
27030        "type.googleapis.com/google.cloud.vmwareengine.v1.AutoscalingSettings"
27031    }
27032}
27033
27034#[doc(hidden)]
27035impl<'de> serde::de::Deserialize<'de> for AutoscalingSettings {
27036    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27037    where
27038        D: serde::Deserializer<'de>,
27039    {
27040        #[allow(non_camel_case_types)]
27041        #[doc(hidden)]
27042        #[derive(PartialEq, Eq, Hash)]
27043        enum __FieldTag {
27044            __autoscaling_policies,
27045            __min_cluster_node_count,
27046            __max_cluster_node_count,
27047            __cool_down_period,
27048            Unknown(std::string::String),
27049        }
27050        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
27051            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27052            where
27053                D: serde::Deserializer<'de>,
27054            {
27055                struct Visitor;
27056                impl<'de> serde::de::Visitor<'de> for Visitor {
27057                    type Value = __FieldTag;
27058                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27059                        formatter.write_str("a field name for AutoscalingSettings")
27060                    }
27061                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
27062                    where
27063                        E: serde::de::Error,
27064                    {
27065                        use std::result::Result::Ok;
27066                        use std::string::ToString;
27067                        match value {
27068                            "autoscalingPolicies" => Ok(__FieldTag::__autoscaling_policies),
27069                            "autoscaling_policies" => Ok(__FieldTag::__autoscaling_policies),
27070                            "minClusterNodeCount" => Ok(__FieldTag::__min_cluster_node_count),
27071                            "min_cluster_node_count" => Ok(__FieldTag::__min_cluster_node_count),
27072                            "maxClusterNodeCount" => Ok(__FieldTag::__max_cluster_node_count),
27073                            "max_cluster_node_count" => Ok(__FieldTag::__max_cluster_node_count),
27074                            "coolDownPeriod" => Ok(__FieldTag::__cool_down_period),
27075                            "cool_down_period" => Ok(__FieldTag::__cool_down_period),
27076                            _ => Ok(__FieldTag::Unknown(value.to_string())),
27077                        }
27078                    }
27079                }
27080                deserializer.deserialize_identifier(Visitor)
27081            }
27082        }
27083        struct Visitor;
27084        impl<'de> serde::de::Visitor<'de> for Visitor {
27085            type Value = AutoscalingSettings;
27086            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27087                formatter.write_str("struct AutoscalingSettings")
27088            }
27089            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
27090            where
27091                A: serde::de::MapAccess<'de>,
27092            {
27093                #[allow(unused_imports)]
27094                use serde::de::Error;
27095                use std::option::Option::Some;
27096                let mut fields = std::collections::HashSet::new();
27097                let mut result = Self::Value::new();
27098                while let Some(tag) = map.next_key::<__FieldTag>()? {
27099                    #[allow(clippy::match_single_binding)]
27100                    match tag {
27101                        __FieldTag::__autoscaling_policies => {
27102                            if !fields.insert(__FieldTag::__autoscaling_policies) {
27103                                return std::result::Result::Err(A::Error::duplicate_field(
27104                                    "multiple values for autoscaling_policies",
27105                                ));
27106                            }
27107                            result.autoscaling_policies = map
27108                                .next_value::<std::option::Option<
27109                                    std::collections::HashMap<
27110                                        std::string::String,
27111                                        crate::model::autoscaling_settings::AutoscalingPolicy,
27112                                    >,
27113                                >>()?
27114                                .unwrap_or_default();
27115                        }
27116                        __FieldTag::__min_cluster_node_count => {
27117                            if !fields.insert(__FieldTag::__min_cluster_node_count) {
27118                                return std::result::Result::Err(A::Error::duplicate_field(
27119                                    "multiple values for min_cluster_node_count",
27120                                ));
27121                            }
27122                            struct __With(std::option::Option<i32>);
27123                            impl<'de> serde::de::Deserialize<'de> for __With {
27124                                fn deserialize<D>(
27125                                    deserializer: D,
27126                                ) -> std::result::Result<Self, D::Error>
27127                                where
27128                                    D: serde::de::Deserializer<'de>,
27129                                {
27130                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
27131                                }
27132                            }
27133                            result.min_cluster_node_count =
27134                                map.next_value::<__With>()?.0.unwrap_or_default();
27135                        }
27136                        __FieldTag::__max_cluster_node_count => {
27137                            if !fields.insert(__FieldTag::__max_cluster_node_count) {
27138                                return std::result::Result::Err(A::Error::duplicate_field(
27139                                    "multiple values for max_cluster_node_count",
27140                                ));
27141                            }
27142                            struct __With(std::option::Option<i32>);
27143                            impl<'de> serde::de::Deserialize<'de> for __With {
27144                                fn deserialize<D>(
27145                                    deserializer: D,
27146                                ) -> std::result::Result<Self, D::Error>
27147                                where
27148                                    D: serde::de::Deserializer<'de>,
27149                                {
27150                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
27151                                }
27152                            }
27153                            result.max_cluster_node_count =
27154                                map.next_value::<__With>()?.0.unwrap_or_default();
27155                        }
27156                        __FieldTag::__cool_down_period => {
27157                            if !fields.insert(__FieldTag::__cool_down_period) {
27158                                return std::result::Result::Err(A::Error::duplicate_field(
27159                                    "multiple values for cool_down_period",
27160                                ));
27161                            }
27162                            result.cool_down_period =
27163                                map.next_value::<std::option::Option<wkt::Duration>>()?;
27164                        }
27165                        __FieldTag::Unknown(key) => {
27166                            let value = map.next_value::<serde_json::Value>()?;
27167                            result._unknown_fields.insert(key, value);
27168                        }
27169                    }
27170                }
27171                std::result::Result::Ok(result)
27172            }
27173        }
27174        deserializer.deserialize_any(Visitor)
27175    }
27176}
27177
27178#[doc(hidden)]
27179impl serde::ser::Serialize for AutoscalingSettings {
27180    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27181    where
27182        S: serde::ser::Serializer,
27183    {
27184        use serde::ser::SerializeMap;
27185        #[allow(unused_imports)]
27186        use std::option::Option::Some;
27187        let mut state = serializer.serialize_map(std::option::Option::None)?;
27188        if !self.autoscaling_policies.is_empty() {
27189            state.serialize_entry("autoscalingPolicies", &self.autoscaling_policies)?;
27190        }
27191        if !wkt::internal::is_default(&self.min_cluster_node_count) {
27192            struct __With<'a>(&'a i32);
27193            impl<'a> serde::ser::Serialize for __With<'a> {
27194                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27195                where
27196                    S: serde::ser::Serializer,
27197                {
27198                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
27199                }
27200            }
27201            state.serialize_entry("minClusterNodeCount", &__With(&self.min_cluster_node_count))?;
27202        }
27203        if !wkt::internal::is_default(&self.max_cluster_node_count) {
27204            struct __With<'a>(&'a i32);
27205            impl<'a> serde::ser::Serialize for __With<'a> {
27206                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27207                where
27208                    S: serde::ser::Serializer,
27209                {
27210                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
27211                }
27212            }
27213            state.serialize_entry("maxClusterNodeCount", &__With(&self.max_cluster_node_count))?;
27214        }
27215        if self.cool_down_period.is_some() {
27216            state.serialize_entry("coolDownPeriod", &self.cool_down_period)?;
27217        }
27218        if !self._unknown_fields.is_empty() {
27219            for (key, value) in self._unknown_fields.iter() {
27220                state.serialize_entry(key, &value)?;
27221            }
27222        }
27223        state.end()
27224    }
27225}
27226
27227/// Defines additional types related to [AutoscalingSettings].
27228pub mod autoscaling_settings {
27229    #[allow(unused_imports)]
27230    use super::*;
27231
27232    /// Thresholds define the utilization of resources triggering
27233    /// scale-out and scale-in operations.
27234    #[derive(Clone, Debug, Default, PartialEq)]
27235    #[non_exhaustive]
27236    pub struct Thresholds {
27237        /// Required. The utilization triggering the scale-out operation in percent.
27238        pub scale_out: i32,
27239
27240        /// Required. The utilization triggering the scale-in operation in percent.
27241        pub scale_in: i32,
27242
27243        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
27244    }
27245
27246    impl Thresholds {
27247        pub fn new() -> Self {
27248            std::default::Default::default()
27249        }
27250
27251        /// Sets the value of [scale_out][crate::model::autoscaling_settings::Thresholds::scale_out].
27252        pub fn set_scale_out<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
27253            self.scale_out = v.into();
27254            self
27255        }
27256
27257        /// Sets the value of [scale_in][crate::model::autoscaling_settings::Thresholds::scale_in].
27258        pub fn set_scale_in<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
27259            self.scale_in = v.into();
27260            self
27261        }
27262    }
27263
27264    impl wkt::message::Message for Thresholds {
27265        fn typename() -> &'static str {
27266            "type.googleapis.com/google.cloud.vmwareengine.v1.AutoscalingSettings.Thresholds"
27267        }
27268    }
27269
27270    #[doc(hidden)]
27271    impl<'de> serde::de::Deserialize<'de> for Thresholds {
27272        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27273        where
27274            D: serde::Deserializer<'de>,
27275        {
27276            #[allow(non_camel_case_types)]
27277            #[doc(hidden)]
27278            #[derive(PartialEq, Eq, Hash)]
27279            enum __FieldTag {
27280                __scale_out,
27281                __scale_in,
27282                Unknown(std::string::String),
27283            }
27284            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
27285                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27286                where
27287                    D: serde::Deserializer<'de>,
27288                {
27289                    struct Visitor;
27290                    impl<'de> serde::de::Visitor<'de> for Visitor {
27291                        type Value = __FieldTag;
27292                        fn expecting(
27293                            &self,
27294                            formatter: &mut std::fmt::Formatter,
27295                        ) -> std::fmt::Result {
27296                            formatter.write_str("a field name for Thresholds")
27297                        }
27298                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
27299                        where
27300                            E: serde::de::Error,
27301                        {
27302                            use std::result::Result::Ok;
27303                            use std::string::ToString;
27304                            match value {
27305                                "scaleOut" => Ok(__FieldTag::__scale_out),
27306                                "scale_out" => Ok(__FieldTag::__scale_out),
27307                                "scaleIn" => Ok(__FieldTag::__scale_in),
27308                                "scale_in" => Ok(__FieldTag::__scale_in),
27309                                _ => Ok(__FieldTag::Unknown(value.to_string())),
27310                            }
27311                        }
27312                    }
27313                    deserializer.deserialize_identifier(Visitor)
27314                }
27315            }
27316            struct Visitor;
27317            impl<'de> serde::de::Visitor<'de> for Visitor {
27318                type Value = Thresholds;
27319                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27320                    formatter.write_str("struct Thresholds")
27321                }
27322                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
27323                where
27324                    A: serde::de::MapAccess<'de>,
27325                {
27326                    #[allow(unused_imports)]
27327                    use serde::de::Error;
27328                    use std::option::Option::Some;
27329                    let mut fields = std::collections::HashSet::new();
27330                    let mut result = Self::Value::new();
27331                    while let Some(tag) = map.next_key::<__FieldTag>()? {
27332                        #[allow(clippy::match_single_binding)]
27333                        match tag {
27334                            __FieldTag::__scale_out => {
27335                                if !fields.insert(__FieldTag::__scale_out) {
27336                                    return std::result::Result::Err(A::Error::duplicate_field(
27337                                        "multiple values for scale_out",
27338                                    ));
27339                                }
27340                                struct __With(std::option::Option<i32>);
27341                                impl<'de> serde::de::Deserialize<'de> for __With {
27342                                    fn deserialize<D>(
27343                                        deserializer: D,
27344                                    ) -> std::result::Result<Self, D::Error>
27345                                    where
27346                                        D: serde::de::Deserializer<'de>,
27347                                    {
27348                                        serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
27349                                    }
27350                                }
27351                                result.scale_out =
27352                                    map.next_value::<__With>()?.0.unwrap_or_default();
27353                            }
27354                            __FieldTag::__scale_in => {
27355                                if !fields.insert(__FieldTag::__scale_in) {
27356                                    return std::result::Result::Err(A::Error::duplicate_field(
27357                                        "multiple values for scale_in",
27358                                    ));
27359                                }
27360                                struct __With(std::option::Option<i32>);
27361                                impl<'de> serde::de::Deserialize<'de> for __With {
27362                                    fn deserialize<D>(
27363                                        deserializer: D,
27364                                    ) -> std::result::Result<Self, D::Error>
27365                                    where
27366                                        D: serde::de::Deserializer<'de>,
27367                                    {
27368                                        serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
27369                                    }
27370                                }
27371                                result.scale_in = map.next_value::<__With>()?.0.unwrap_or_default();
27372                            }
27373                            __FieldTag::Unknown(key) => {
27374                                let value = map.next_value::<serde_json::Value>()?;
27375                                result._unknown_fields.insert(key, value);
27376                            }
27377                        }
27378                    }
27379                    std::result::Result::Ok(result)
27380                }
27381            }
27382            deserializer.deserialize_any(Visitor)
27383        }
27384    }
27385
27386    #[doc(hidden)]
27387    impl serde::ser::Serialize for Thresholds {
27388        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27389        where
27390            S: serde::ser::Serializer,
27391        {
27392            use serde::ser::SerializeMap;
27393            #[allow(unused_imports)]
27394            use std::option::Option::Some;
27395            let mut state = serializer.serialize_map(std::option::Option::None)?;
27396            if !wkt::internal::is_default(&self.scale_out) {
27397                struct __With<'a>(&'a i32);
27398                impl<'a> serde::ser::Serialize for __With<'a> {
27399                    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27400                    where
27401                        S: serde::ser::Serializer,
27402                    {
27403                        serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
27404                    }
27405                }
27406                state.serialize_entry("scaleOut", &__With(&self.scale_out))?;
27407            }
27408            if !wkt::internal::is_default(&self.scale_in) {
27409                struct __With<'a>(&'a i32);
27410                impl<'a> serde::ser::Serialize for __With<'a> {
27411                    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27412                    where
27413                        S: serde::ser::Serializer,
27414                    {
27415                        serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
27416                    }
27417                }
27418                state.serialize_entry("scaleIn", &__With(&self.scale_in))?;
27419            }
27420            if !self._unknown_fields.is_empty() {
27421                for (key, value) in self._unknown_fields.iter() {
27422                    state.serialize_entry(key, &value)?;
27423                }
27424            }
27425            state.end()
27426        }
27427    }
27428
27429    /// Autoscaling policy describes the behavior of the autoscaling
27430    /// with respect to the resource utilization.
27431    /// The scale-out operation is initiated if the utilization
27432    /// exceeds ANY of the respective thresholds.
27433    /// The scale-in operation is initiated if the utilization
27434    /// is below ALL of the respective thresholds.
27435    #[derive(Clone, Debug, Default, PartialEq)]
27436    #[non_exhaustive]
27437    pub struct AutoscalingPolicy {
27438        /// Required. The canonical identifier of the node type to add or remove.
27439        /// Corresponds to the `NodeType`.
27440        pub node_type_id: std::string::String,
27441
27442        /// Required. Number of nodes to add to a cluster during a scale-out
27443        /// operation. Must be divisible by 2 for stretched clusters. During a
27444        /// scale-in operation only one node (or 2 for stretched clusters) are
27445        /// removed in a single iteration.
27446        pub scale_out_size: i32,
27447
27448        /// Optional. Utilization thresholds pertaining to CPU utilization.
27449        pub cpu_thresholds: std::option::Option<crate::model::autoscaling_settings::Thresholds>,
27450
27451        /// Optional. Utilization thresholds pertaining to amount of granted memory.
27452        pub granted_memory_thresholds:
27453            std::option::Option<crate::model::autoscaling_settings::Thresholds>,
27454
27455        /// Optional. Utilization thresholds pertaining to amount of consumed memory.
27456        pub consumed_memory_thresholds:
27457            std::option::Option<crate::model::autoscaling_settings::Thresholds>,
27458
27459        /// Optional. Utilization thresholds pertaining to amount of consumed
27460        /// storage.
27461        pub storage_thresholds: std::option::Option<crate::model::autoscaling_settings::Thresholds>,
27462
27463        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
27464    }
27465
27466    impl AutoscalingPolicy {
27467        pub fn new() -> Self {
27468            std::default::Default::default()
27469        }
27470
27471        /// Sets the value of [node_type_id][crate::model::autoscaling_settings::AutoscalingPolicy::node_type_id].
27472        pub fn set_node_type_id<T: std::convert::Into<std::string::String>>(
27473            mut self,
27474            v: T,
27475        ) -> Self {
27476            self.node_type_id = v.into();
27477            self
27478        }
27479
27480        /// Sets the value of [scale_out_size][crate::model::autoscaling_settings::AutoscalingPolicy::scale_out_size].
27481        pub fn set_scale_out_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
27482            self.scale_out_size = v.into();
27483            self
27484        }
27485
27486        /// Sets the value of [cpu_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::cpu_thresholds].
27487        pub fn set_cpu_thresholds<T>(mut self, v: T) -> Self
27488        where
27489            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27490        {
27491            self.cpu_thresholds = std::option::Option::Some(v.into());
27492            self
27493        }
27494
27495        /// Sets or clears the value of [cpu_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::cpu_thresholds].
27496        pub fn set_or_clear_cpu_thresholds<T>(mut self, v: std::option::Option<T>) -> Self
27497        where
27498            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27499        {
27500            self.cpu_thresholds = v.map(|x| x.into());
27501            self
27502        }
27503
27504        /// Sets the value of [granted_memory_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::granted_memory_thresholds].
27505        pub fn set_granted_memory_thresholds<T>(mut self, v: T) -> Self
27506        where
27507            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27508        {
27509            self.granted_memory_thresholds = std::option::Option::Some(v.into());
27510            self
27511        }
27512
27513        /// Sets or clears the value of [granted_memory_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::granted_memory_thresholds].
27514        pub fn set_or_clear_granted_memory_thresholds<T>(
27515            mut self,
27516            v: std::option::Option<T>,
27517        ) -> Self
27518        where
27519            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27520        {
27521            self.granted_memory_thresholds = v.map(|x| x.into());
27522            self
27523        }
27524
27525        /// Sets the value of [consumed_memory_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::consumed_memory_thresholds].
27526        pub fn set_consumed_memory_thresholds<T>(mut self, v: T) -> Self
27527        where
27528            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27529        {
27530            self.consumed_memory_thresholds = std::option::Option::Some(v.into());
27531            self
27532        }
27533
27534        /// Sets or clears the value of [consumed_memory_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::consumed_memory_thresholds].
27535        pub fn set_or_clear_consumed_memory_thresholds<T>(
27536            mut self,
27537            v: std::option::Option<T>,
27538        ) -> Self
27539        where
27540            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27541        {
27542            self.consumed_memory_thresholds = v.map(|x| x.into());
27543            self
27544        }
27545
27546        /// Sets the value of [storage_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::storage_thresholds].
27547        pub fn set_storage_thresholds<T>(mut self, v: T) -> Self
27548        where
27549            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27550        {
27551            self.storage_thresholds = std::option::Option::Some(v.into());
27552            self
27553        }
27554
27555        /// Sets or clears the value of [storage_thresholds][crate::model::autoscaling_settings::AutoscalingPolicy::storage_thresholds].
27556        pub fn set_or_clear_storage_thresholds<T>(mut self, v: std::option::Option<T>) -> Self
27557        where
27558            T: std::convert::Into<crate::model::autoscaling_settings::Thresholds>,
27559        {
27560            self.storage_thresholds = v.map(|x| x.into());
27561            self
27562        }
27563    }
27564
27565    impl wkt::message::Message for AutoscalingPolicy {
27566        fn typename() -> &'static str {
27567            "type.googleapis.com/google.cloud.vmwareengine.v1.AutoscalingSettings.AutoscalingPolicy"
27568        }
27569    }
27570
27571    #[doc(hidden)]
27572    impl<'de> serde::de::Deserialize<'de> for AutoscalingPolicy {
27573        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27574        where
27575            D: serde::Deserializer<'de>,
27576        {
27577            #[allow(non_camel_case_types)]
27578            #[doc(hidden)]
27579            #[derive(PartialEq, Eq, Hash)]
27580            enum __FieldTag {
27581                __node_type_id,
27582                __scale_out_size,
27583                __cpu_thresholds,
27584                __granted_memory_thresholds,
27585                __consumed_memory_thresholds,
27586                __storage_thresholds,
27587                Unknown(std::string::String),
27588            }
27589            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
27590                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27591                where
27592                    D: serde::Deserializer<'de>,
27593                {
27594                    struct Visitor;
27595                    impl<'de> serde::de::Visitor<'de> for Visitor {
27596                        type Value = __FieldTag;
27597                        fn expecting(
27598                            &self,
27599                            formatter: &mut std::fmt::Formatter,
27600                        ) -> std::fmt::Result {
27601                            formatter.write_str("a field name for AutoscalingPolicy")
27602                        }
27603                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
27604                        where
27605                            E: serde::de::Error,
27606                        {
27607                            use std::result::Result::Ok;
27608                            use std::string::ToString;
27609                            match value {
27610                                "nodeTypeId" => Ok(__FieldTag::__node_type_id),
27611                                "node_type_id" => Ok(__FieldTag::__node_type_id),
27612                                "scaleOutSize" => Ok(__FieldTag::__scale_out_size),
27613                                "scale_out_size" => Ok(__FieldTag::__scale_out_size),
27614                                "cpuThresholds" => Ok(__FieldTag::__cpu_thresholds),
27615                                "cpu_thresholds" => Ok(__FieldTag::__cpu_thresholds),
27616                                "grantedMemoryThresholds" => {
27617                                    Ok(__FieldTag::__granted_memory_thresholds)
27618                                }
27619                                "granted_memory_thresholds" => {
27620                                    Ok(__FieldTag::__granted_memory_thresholds)
27621                                }
27622                                "consumedMemoryThresholds" => {
27623                                    Ok(__FieldTag::__consumed_memory_thresholds)
27624                                }
27625                                "consumed_memory_thresholds" => {
27626                                    Ok(__FieldTag::__consumed_memory_thresholds)
27627                                }
27628                                "storageThresholds" => Ok(__FieldTag::__storage_thresholds),
27629                                "storage_thresholds" => Ok(__FieldTag::__storage_thresholds),
27630                                _ => Ok(__FieldTag::Unknown(value.to_string())),
27631                            }
27632                        }
27633                    }
27634                    deserializer.deserialize_identifier(Visitor)
27635                }
27636            }
27637            struct Visitor;
27638            impl<'de> serde::de::Visitor<'de> for Visitor {
27639                type Value = AutoscalingPolicy;
27640                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27641                    formatter.write_str("struct AutoscalingPolicy")
27642                }
27643                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
27644                where
27645                    A: serde::de::MapAccess<'de>,
27646                {
27647                    #[allow(unused_imports)]
27648                    use serde::de::Error;
27649                    use std::option::Option::Some;
27650                    let mut fields = std::collections::HashSet::new();
27651                    let mut result = Self::Value::new();
27652                    while let Some(tag) = map.next_key::<__FieldTag>()? {
27653                        #[allow(clippy::match_single_binding)]
27654                        match tag {
27655                            __FieldTag::__node_type_id => {
27656                                if !fields.insert(__FieldTag::__node_type_id) {
27657                                    return std::result::Result::Err(A::Error::duplicate_field(
27658                                        "multiple values for node_type_id",
27659                                    ));
27660                                }
27661                                result.node_type_id = map
27662                                    .next_value::<std::option::Option<std::string::String>>()?
27663                                    .unwrap_or_default();
27664                            }
27665                            __FieldTag::__scale_out_size => {
27666                                if !fields.insert(__FieldTag::__scale_out_size) {
27667                                    return std::result::Result::Err(A::Error::duplicate_field(
27668                                        "multiple values for scale_out_size",
27669                                    ));
27670                                }
27671                                struct __With(std::option::Option<i32>);
27672                                impl<'de> serde::de::Deserialize<'de> for __With {
27673                                    fn deserialize<D>(
27674                                        deserializer: D,
27675                                    ) -> std::result::Result<Self, D::Error>
27676                                    where
27677                                        D: serde::de::Deserializer<'de>,
27678                                    {
27679                                        serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
27680                                    }
27681                                }
27682                                result.scale_out_size =
27683                                    map.next_value::<__With>()?.0.unwrap_or_default();
27684                            }
27685                            __FieldTag::__cpu_thresholds => {
27686                                if !fields.insert(__FieldTag::__cpu_thresholds) {
27687                                    return std::result::Result::Err(A::Error::duplicate_field(
27688                                        "multiple values for cpu_thresholds",
27689                                    ));
27690                                }
27691                                result.cpu_thresholds = map.next_value::<std::option::Option<
27692                                    crate::model::autoscaling_settings::Thresholds,
27693                                >>()?;
27694                            }
27695                            __FieldTag::__granted_memory_thresholds => {
27696                                if !fields.insert(__FieldTag::__granted_memory_thresholds) {
27697                                    return std::result::Result::Err(A::Error::duplicate_field(
27698                                        "multiple values for granted_memory_thresholds",
27699                                    ));
27700                                }
27701                                result.granted_memory_thresholds = map
27702                                    .next_value::<std::option::Option<
27703                                        crate::model::autoscaling_settings::Thresholds,
27704                                    >>()?;
27705                            }
27706                            __FieldTag::__consumed_memory_thresholds => {
27707                                if !fields.insert(__FieldTag::__consumed_memory_thresholds) {
27708                                    return std::result::Result::Err(A::Error::duplicate_field(
27709                                        "multiple values for consumed_memory_thresholds",
27710                                    ));
27711                                }
27712                                result.consumed_memory_thresholds = map
27713                                    .next_value::<std::option::Option<
27714                                        crate::model::autoscaling_settings::Thresholds,
27715                                    >>()?;
27716                            }
27717                            __FieldTag::__storage_thresholds => {
27718                                if !fields.insert(__FieldTag::__storage_thresholds) {
27719                                    return std::result::Result::Err(A::Error::duplicate_field(
27720                                        "multiple values for storage_thresholds",
27721                                    ));
27722                                }
27723                                result.storage_thresholds = map
27724                                    .next_value::<std::option::Option<
27725                                        crate::model::autoscaling_settings::Thresholds,
27726                                    >>()?;
27727                            }
27728                            __FieldTag::Unknown(key) => {
27729                                let value = map.next_value::<serde_json::Value>()?;
27730                                result._unknown_fields.insert(key, value);
27731                            }
27732                        }
27733                    }
27734                    std::result::Result::Ok(result)
27735                }
27736            }
27737            deserializer.deserialize_any(Visitor)
27738        }
27739    }
27740
27741    #[doc(hidden)]
27742    impl serde::ser::Serialize for AutoscalingPolicy {
27743        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27744        where
27745            S: serde::ser::Serializer,
27746        {
27747            use serde::ser::SerializeMap;
27748            #[allow(unused_imports)]
27749            use std::option::Option::Some;
27750            let mut state = serializer.serialize_map(std::option::Option::None)?;
27751            if !self.node_type_id.is_empty() {
27752                state.serialize_entry("nodeTypeId", &self.node_type_id)?;
27753            }
27754            if !wkt::internal::is_default(&self.scale_out_size) {
27755                struct __With<'a>(&'a i32);
27756                impl<'a> serde::ser::Serialize for __With<'a> {
27757                    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
27758                    where
27759                        S: serde::ser::Serializer,
27760                    {
27761                        serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
27762                    }
27763                }
27764                state.serialize_entry("scaleOutSize", &__With(&self.scale_out_size))?;
27765            }
27766            if self.cpu_thresholds.is_some() {
27767                state.serialize_entry("cpuThresholds", &self.cpu_thresholds)?;
27768            }
27769            if self.granted_memory_thresholds.is_some() {
27770                state
27771                    .serialize_entry("grantedMemoryThresholds", &self.granted_memory_thresholds)?;
27772            }
27773            if self.consumed_memory_thresholds.is_some() {
27774                state.serialize_entry(
27775                    "consumedMemoryThresholds",
27776                    &self.consumed_memory_thresholds,
27777                )?;
27778            }
27779            if self.storage_thresholds.is_some() {
27780                state.serialize_entry("storageThresholds", &self.storage_thresholds)?;
27781            }
27782            if !self._unknown_fields.is_empty() {
27783                for (key, value) in self._unknown_fields.iter() {
27784                    state.serialize_entry(key, &value)?;
27785                }
27786            }
27787            state.end()
27788        }
27789    }
27790}
27791
27792/// DNS forwarding config.
27793/// This config defines a list of domain to name server mappings,
27794/// and is attached to the private cloud for custom domain resolution.
27795#[derive(Clone, Debug, Default, PartialEq)]
27796#[non_exhaustive]
27797pub struct DnsForwarding {
27798    /// Output only. The resource name of this DNS profile.
27799    /// Resource names are schemeless URIs that follow the conventions in
27800    /// <https://cloud.google.com/apis/design/resource_names>.
27801    /// For example:
27802    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/dnsForwarding`
27803    pub name: std::string::String,
27804
27805    /// Output only. Creation time of this resource.
27806    pub create_time: std::option::Option<wkt::Timestamp>,
27807
27808    /// Output only. Last update time of this resource.
27809    pub update_time: std::option::Option<wkt::Timestamp>,
27810
27811    /// Required. List of domain mappings to configure
27812    pub forwarding_rules: std::vec::Vec<crate::model::dns_forwarding::ForwardingRule>,
27813
27814    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
27815}
27816
27817impl DnsForwarding {
27818    pub fn new() -> Self {
27819        std::default::Default::default()
27820    }
27821
27822    /// Sets the value of [name][crate::model::DnsForwarding::name].
27823    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
27824        self.name = v.into();
27825        self
27826    }
27827
27828    /// Sets the value of [create_time][crate::model::DnsForwarding::create_time].
27829    pub fn set_create_time<T>(mut self, v: T) -> Self
27830    where
27831        T: std::convert::Into<wkt::Timestamp>,
27832    {
27833        self.create_time = std::option::Option::Some(v.into());
27834        self
27835    }
27836
27837    /// Sets or clears the value of [create_time][crate::model::DnsForwarding::create_time].
27838    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
27839    where
27840        T: std::convert::Into<wkt::Timestamp>,
27841    {
27842        self.create_time = v.map(|x| x.into());
27843        self
27844    }
27845
27846    /// Sets the value of [update_time][crate::model::DnsForwarding::update_time].
27847    pub fn set_update_time<T>(mut self, v: T) -> Self
27848    where
27849        T: std::convert::Into<wkt::Timestamp>,
27850    {
27851        self.update_time = std::option::Option::Some(v.into());
27852        self
27853    }
27854
27855    /// Sets or clears the value of [update_time][crate::model::DnsForwarding::update_time].
27856    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
27857    where
27858        T: std::convert::Into<wkt::Timestamp>,
27859    {
27860        self.update_time = v.map(|x| x.into());
27861        self
27862    }
27863
27864    /// Sets the value of [forwarding_rules][crate::model::DnsForwarding::forwarding_rules].
27865    pub fn set_forwarding_rules<T, V>(mut self, v: T) -> Self
27866    where
27867        T: std::iter::IntoIterator<Item = V>,
27868        V: std::convert::Into<crate::model::dns_forwarding::ForwardingRule>,
27869    {
27870        use std::iter::Iterator;
27871        self.forwarding_rules = v.into_iter().map(|i| i.into()).collect();
27872        self
27873    }
27874}
27875
27876impl wkt::message::Message for DnsForwarding {
27877    fn typename() -> &'static str {
27878        "type.googleapis.com/google.cloud.vmwareengine.v1.DnsForwarding"
27879    }
27880}
27881
27882#[doc(hidden)]
27883impl<'de> serde::de::Deserialize<'de> for DnsForwarding {
27884    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27885    where
27886        D: serde::Deserializer<'de>,
27887    {
27888        #[allow(non_camel_case_types)]
27889        #[doc(hidden)]
27890        #[derive(PartialEq, Eq, Hash)]
27891        enum __FieldTag {
27892            __name,
27893            __create_time,
27894            __update_time,
27895            __forwarding_rules,
27896            Unknown(std::string::String),
27897        }
27898        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
27899            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
27900            where
27901                D: serde::Deserializer<'de>,
27902            {
27903                struct Visitor;
27904                impl<'de> serde::de::Visitor<'de> for Visitor {
27905                    type Value = __FieldTag;
27906                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27907                        formatter.write_str("a field name for DnsForwarding")
27908                    }
27909                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
27910                    where
27911                        E: serde::de::Error,
27912                    {
27913                        use std::result::Result::Ok;
27914                        use std::string::ToString;
27915                        match value {
27916                            "name" => Ok(__FieldTag::__name),
27917                            "createTime" => Ok(__FieldTag::__create_time),
27918                            "create_time" => Ok(__FieldTag::__create_time),
27919                            "updateTime" => Ok(__FieldTag::__update_time),
27920                            "update_time" => Ok(__FieldTag::__update_time),
27921                            "forwardingRules" => Ok(__FieldTag::__forwarding_rules),
27922                            "forwarding_rules" => Ok(__FieldTag::__forwarding_rules),
27923                            _ => Ok(__FieldTag::Unknown(value.to_string())),
27924                        }
27925                    }
27926                }
27927                deserializer.deserialize_identifier(Visitor)
27928            }
27929        }
27930        struct Visitor;
27931        impl<'de> serde::de::Visitor<'de> for Visitor {
27932            type Value = DnsForwarding;
27933            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
27934                formatter.write_str("struct DnsForwarding")
27935            }
27936            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
27937            where
27938                A: serde::de::MapAccess<'de>,
27939            {
27940                #[allow(unused_imports)]
27941                use serde::de::Error;
27942                use std::option::Option::Some;
27943                let mut fields = std::collections::HashSet::new();
27944                let mut result = Self::Value::new();
27945                while let Some(tag) = map.next_key::<__FieldTag>()? {
27946                    #[allow(clippy::match_single_binding)]
27947                    match tag {
27948                        __FieldTag::__name => {
27949                            if !fields.insert(__FieldTag::__name) {
27950                                return std::result::Result::Err(A::Error::duplicate_field(
27951                                    "multiple values for name",
27952                                ));
27953                            }
27954                            result.name = map
27955                                .next_value::<std::option::Option<std::string::String>>()?
27956                                .unwrap_or_default();
27957                        }
27958                        __FieldTag::__create_time => {
27959                            if !fields.insert(__FieldTag::__create_time) {
27960                                return std::result::Result::Err(A::Error::duplicate_field(
27961                                    "multiple values for create_time",
27962                                ));
27963                            }
27964                            result.create_time =
27965                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
27966                        }
27967                        __FieldTag::__update_time => {
27968                            if !fields.insert(__FieldTag::__update_time) {
27969                                return std::result::Result::Err(A::Error::duplicate_field(
27970                                    "multiple values for update_time",
27971                                ));
27972                            }
27973                            result.update_time =
27974                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
27975                        }
27976                        __FieldTag::__forwarding_rules => {
27977                            if !fields.insert(__FieldTag::__forwarding_rules) {
27978                                return std::result::Result::Err(A::Error::duplicate_field(
27979                                    "multiple values for forwarding_rules",
27980                                ));
27981                            }
27982                            result.forwarding_rules = map
27983                                .next_value::<std::option::Option<
27984                                    std::vec::Vec<crate::model::dns_forwarding::ForwardingRule>,
27985                                >>()?
27986                                .unwrap_or_default();
27987                        }
27988                        __FieldTag::Unknown(key) => {
27989                            let value = map.next_value::<serde_json::Value>()?;
27990                            result._unknown_fields.insert(key, value);
27991                        }
27992                    }
27993                }
27994                std::result::Result::Ok(result)
27995            }
27996        }
27997        deserializer.deserialize_any(Visitor)
27998    }
27999}
28000
28001#[doc(hidden)]
28002impl serde::ser::Serialize for DnsForwarding {
28003    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
28004    where
28005        S: serde::ser::Serializer,
28006    {
28007        use serde::ser::SerializeMap;
28008        #[allow(unused_imports)]
28009        use std::option::Option::Some;
28010        let mut state = serializer.serialize_map(std::option::Option::None)?;
28011        if !self.name.is_empty() {
28012            state.serialize_entry("name", &self.name)?;
28013        }
28014        if self.create_time.is_some() {
28015            state.serialize_entry("createTime", &self.create_time)?;
28016        }
28017        if self.update_time.is_some() {
28018            state.serialize_entry("updateTime", &self.update_time)?;
28019        }
28020        if !self.forwarding_rules.is_empty() {
28021            state.serialize_entry("forwardingRules", &self.forwarding_rules)?;
28022        }
28023        if !self._unknown_fields.is_empty() {
28024            for (key, value) in self._unknown_fields.iter() {
28025                state.serialize_entry(key, &value)?;
28026            }
28027        }
28028        state.end()
28029    }
28030}
28031
28032/// Defines additional types related to [DnsForwarding].
28033pub mod dns_forwarding {
28034    #[allow(unused_imports)]
28035    use super::*;
28036
28037    /// A forwarding rule is a mapping of a `domain` to `name_servers`.
28038    /// This mapping allows VMware Engine to resolve domains for attached private
28039    /// clouds by forwarding DNS requests for a given domain to the specified
28040    /// nameservers.
28041    #[derive(Clone, Debug, Default, PartialEq)]
28042    #[non_exhaustive]
28043    pub struct ForwardingRule {
28044        /// Required. Domain used to resolve a `name_servers` list.
28045        pub domain: std::string::String,
28046
28047        /// Required. List of DNS servers to use for domain resolution
28048        pub name_servers: std::vec::Vec<std::string::String>,
28049
28050        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
28051    }
28052
28053    impl ForwardingRule {
28054        pub fn new() -> Self {
28055            std::default::Default::default()
28056        }
28057
28058        /// Sets the value of [domain][crate::model::dns_forwarding::ForwardingRule::domain].
28059        pub fn set_domain<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28060            self.domain = v.into();
28061            self
28062        }
28063
28064        /// Sets the value of [name_servers][crate::model::dns_forwarding::ForwardingRule::name_servers].
28065        pub fn set_name_servers<T, V>(mut self, v: T) -> Self
28066        where
28067            T: std::iter::IntoIterator<Item = V>,
28068            V: std::convert::Into<std::string::String>,
28069        {
28070            use std::iter::Iterator;
28071            self.name_servers = v.into_iter().map(|i| i.into()).collect();
28072            self
28073        }
28074    }
28075
28076    impl wkt::message::Message for ForwardingRule {
28077        fn typename() -> &'static str {
28078            "type.googleapis.com/google.cloud.vmwareengine.v1.DnsForwarding.ForwardingRule"
28079        }
28080    }
28081
28082    #[doc(hidden)]
28083    impl<'de> serde::de::Deserialize<'de> for ForwardingRule {
28084        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
28085        where
28086            D: serde::Deserializer<'de>,
28087        {
28088            #[allow(non_camel_case_types)]
28089            #[doc(hidden)]
28090            #[derive(PartialEq, Eq, Hash)]
28091            enum __FieldTag {
28092                __domain,
28093                __name_servers,
28094                Unknown(std::string::String),
28095            }
28096            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
28097                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
28098                where
28099                    D: serde::Deserializer<'de>,
28100                {
28101                    struct Visitor;
28102                    impl<'de> serde::de::Visitor<'de> for Visitor {
28103                        type Value = __FieldTag;
28104                        fn expecting(
28105                            &self,
28106                            formatter: &mut std::fmt::Formatter,
28107                        ) -> std::fmt::Result {
28108                            formatter.write_str("a field name for ForwardingRule")
28109                        }
28110                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
28111                        where
28112                            E: serde::de::Error,
28113                        {
28114                            use std::result::Result::Ok;
28115                            use std::string::ToString;
28116                            match value {
28117                                "domain" => Ok(__FieldTag::__domain),
28118                                "nameServers" => Ok(__FieldTag::__name_servers),
28119                                "name_servers" => Ok(__FieldTag::__name_servers),
28120                                _ => Ok(__FieldTag::Unknown(value.to_string())),
28121                            }
28122                        }
28123                    }
28124                    deserializer.deserialize_identifier(Visitor)
28125                }
28126            }
28127            struct Visitor;
28128            impl<'de> serde::de::Visitor<'de> for Visitor {
28129                type Value = ForwardingRule;
28130                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
28131                    formatter.write_str("struct ForwardingRule")
28132                }
28133                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
28134                where
28135                    A: serde::de::MapAccess<'de>,
28136                {
28137                    #[allow(unused_imports)]
28138                    use serde::de::Error;
28139                    use std::option::Option::Some;
28140                    let mut fields = std::collections::HashSet::new();
28141                    let mut result = Self::Value::new();
28142                    while let Some(tag) = map.next_key::<__FieldTag>()? {
28143                        #[allow(clippy::match_single_binding)]
28144                        match tag {
28145                            __FieldTag::__domain => {
28146                                if !fields.insert(__FieldTag::__domain) {
28147                                    return std::result::Result::Err(A::Error::duplicate_field(
28148                                        "multiple values for domain",
28149                                    ));
28150                                }
28151                                result.domain = map
28152                                    .next_value::<std::option::Option<std::string::String>>()?
28153                                    .unwrap_or_default();
28154                            }
28155                            __FieldTag::__name_servers => {
28156                                if !fields.insert(__FieldTag::__name_servers) {
28157                                    return std::result::Result::Err(A::Error::duplicate_field(
28158                                        "multiple values for name_servers",
28159                                    ));
28160                                }
28161                                result.name_servers = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
28162                            }
28163                            __FieldTag::Unknown(key) => {
28164                                let value = map.next_value::<serde_json::Value>()?;
28165                                result._unknown_fields.insert(key, value);
28166                            }
28167                        }
28168                    }
28169                    std::result::Result::Ok(result)
28170                }
28171            }
28172            deserializer.deserialize_any(Visitor)
28173        }
28174    }
28175
28176    #[doc(hidden)]
28177    impl serde::ser::Serialize for ForwardingRule {
28178        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
28179        where
28180            S: serde::ser::Serializer,
28181        {
28182            use serde::ser::SerializeMap;
28183            #[allow(unused_imports)]
28184            use std::option::Option::Some;
28185            let mut state = serializer.serialize_map(std::option::Option::None)?;
28186            if !self.domain.is_empty() {
28187                state.serialize_entry("domain", &self.domain)?;
28188            }
28189            if !self.name_servers.is_empty() {
28190                state.serialize_entry("nameServers", &self.name_servers)?;
28191            }
28192            if !self._unknown_fields.is_empty() {
28193                for (key, value) in self._unknown_fields.iter() {
28194                    state.serialize_entry(key, &value)?;
28195                }
28196            }
28197            state.end()
28198        }
28199    }
28200}
28201
28202/// Details of a network peering.
28203#[derive(Clone, Debug, Default, PartialEq)]
28204#[non_exhaustive]
28205pub struct NetworkPeering {
28206    /// Output only. The resource name of the network peering. NetworkPeering is a
28207    /// global resource and location can only be global. Resource names are
28208    /// scheme-less URIs that follow the conventions in
28209    /// <https://cloud.google.com/apis/design/resource_names>.
28210    /// For example:
28211    /// `projects/my-project/locations/global/networkPeerings/my-peering`
28212    pub name: std::string::String,
28213
28214    /// Output only. Creation time of this resource.
28215    pub create_time: std::option::Option<wkt::Timestamp>,
28216
28217    /// Output only. Last update time of this resource.
28218    pub update_time: std::option::Option<wkt::Timestamp>,
28219
28220    /// Required. The relative resource name of the network to peer with
28221    /// a standard VMware Engine network. The provided network can be a
28222    /// consumer VPC network or another standard VMware Engine network. If the
28223    /// `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form:
28224    /// `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
28225    /// Otherwise specify the name in the form:
28226    /// `projects/{project}/global/networks/{network_id}`, where
28227    /// `{project}` can either be a project number or a project ID.
28228    pub peer_network: std::string::String,
28229
28230    /// Optional. True if custom routes are exported to the peered network;
28231    /// false otherwise. The default value is true.
28232    pub export_custom_routes: std::option::Option<bool>,
28233
28234    /// Optional. True if custom routes are imported from the peered network;
28235    /// false otherwise. The default value is true.
28236    pub import_custom_routes: std::option::Option<bool>,
28237
28238    /// Optional. True if full mesh connectivity is created and managed
28239    /// automatically between peered networks; false otherwise. Currently this
28240    /// field is always true because Google Compute Engine automatically creates
28241    /// and manages subnetwork routes between two VPC networks when peering state
28242    /// is 'ACTIVE'.
28243    pub exchange_subnet_routes: std::option::Option<bool>,
28244
28245    /// Optional. True if all subnet routes with a public IP address range are
28246    /// exported; false otherwise. The default value is true. IPv4 special-use
28247    /// ranges (<https://en.wikipedia.org/wiki/IPv4#Special_addresses>) are always
28248    /// exported to peers and are not controlled by this field.
28249    pub export_custom_routes_with_public_ip: std::option::Option<bool>,
28250
28251    /// Optional. True if all subnet routes with public IP address range are
28252    /// imported; false otherwise. The default value is true. IPv4 special-use
28253    /// ranges (<https://en.wikipedia.org/wiki/IPv4#Special_addresses>) are always
28254    /// imported to peers and are not controlled by this field.
28255    pub import_custom_routes_with_public_ip: std::option::Option<bool>,
28256
28257    /// Output only. State of the network peering. This field
28258    /// has a value of 'ACTIVE' when there's a matching configuration in the peer
28259    /// network. New values may be added to this enum when appropriate.
28260    pub state: crate::model::network_peering::State,
28261
28262    /// Output only. Output Only. Details about the current state of the network
28263    /// peering.
28264    pub state_details: std::string::String,
28265
28266    /// Optional. Maximum transmission unit (MTU) in bytes.
28267    /// The default value is `1500`. If a value of `0` is provided for this field,
28268    /// VMware Engine uses the default value instead.
28269    pub peer_mtu: i32,
28270
28271    /// Required. The type of the network to peer with the VMware Engine network.
28272    pub peer_network_type: crate::model::network_peering::PeerNetworkType,
28273
28274    /// Output only. System-generated unique identifier for the resource.
28275    pub uid: std::string::String,
28276
28277    /// Required. The relative resource name of the VMware Engine network.
28278    /// Specify the name in the following form:
28279    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
28280    /// where `{project}` can either be a project number or a project ID.
28281    pub vmware_engine_network: std::string::String,
28282
28283    /// Optional. User-provided description for this network peering.
28284    pub description: std::string::String,
28285
28286    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
28287}
28288
28289impl NetworkPeering {
28290    pub fn new() -> Self {
28291        std::default::Default::default()
28292    }
28293
28294    /// Sets the value of [name][crate::model::NetworkPeering::name].
28295    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28296        self.name = v.into();
28297        self
28298    }
28299
28300    /// Sets the value of [create_time][crate::model::NetworkPeering::create_time].
28301    pub fn set_create_time<T>(mut self, v: T) -> Self
28302    where
28303        T: std::convert::Into<wkt::Timestamp>,
28304    {
28305        self.create_time = std::option::Option::Some(v.into());
28306        self
28307    }
28308
28309    /// Sets or clears the value of [create_time][crate::model::NetworkPeering::create_time].
28310    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
28311    where
28312        T: std::convert::Into<wkt::Timestamp>,
28313    {
28314        self.create_time = v.map(|x| x.into());
28315        self
28316    }
28317
28318    /// Sets the value of [update_time][crate::model::NetworkPeering::update_time].
28319    pub fn set_update_time<T>(mut self, v: T) -> Self
28320    where
28321        T: std::convert::Into<wkt::Timestamp>,
28322    {
28323        self.update_time = std::option::Option::Some(v.into());
28324        self
28325    }
28326
28327    /// Sets or clears the value of [update_time][crate::model::NetworkPeering::update_time].
28328    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
28329    where
28330        T: std::convert::Into<wkt::Timestamp>,
28331    {
28332        self.update_time = v.map(|x| x.into());
28333        self
28334    }
28335
28336    /// Sets the value of [peer_network][crate::model::NetworkPeering::peer_network].
28337    pub fn set_peer_network<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28338        self.peer_network = v.into();
28339        self
28340    }
28341
28342    /// Sets the value of [export_custom_routes][crate::model::NetworkPeering::export_custom_routes].
28343    pub fn set_export_custom_routes<T>(mut self, v: T) -> Self
28344    where
28345        T: std::convert::Into<bool>,
28346    {
28347        self.export_custom_routes = std::option::Option::Some(v.into());
28348        self
28349    }
28350
28351    /// Sets or clears the value of [export_custom_routes][crate::model::NetworkPeering::export_custom_routes].
28352    pub fn set_or_clear_export_custom_routes<T>(mut self, v: std::option::Option<T>) -> Self
28353    where
28354        T: std::convert::Into<bool>,
28355    {
28356        self.export_custom_routes = v.map(|x| x.into());
28357        self
28358    }
28359
28360    /// Sets the value of [import_custom_routes][crate::model::NetworkPeering::import_custom_routes].
28361    pub fn set_import_custom_routes<T>(mut self, v: T) -> Self
28362    where
28363        T: std::convert::Into<bool>,
28364    {
28365        self.import_custom_routes = std::option::Option::Some(v.into());
28366        self
28367    }
28368
28369    /// Sets or clears the value of [import_custom_routes][crate::model::NetworkPeering::import_custom_routes].
28370    pub fn set_or_clear_import_custom_routes<T>(mut self, v: std::option::Option<T>) -> Self
28371    where
28372        T: std::convert::Into<bool>,
28373    {
28374        self.import_custom_routes = v.map(|x| x.into());
28375        self
28376    }
28377
28378    /// Sets the value of [exchange_subnet_routes][crate::model::NetworkPeering::exchange_subnet_routes].
28379    pub fn set_exchange_subnet_routes<T>(mut self, v: T) -> Self
28380    where
28381        T: std::convert::Into<bool>,
28382    {
28383        self.exchange_subnet_routes = std::option::Option::Some(v.into());
28384        self
28385    }
28386
28387    /// Sets or clears the value of [exchange_subnet_routes][crate::model::NetworkPeering::exchange_subnet_routes].
28388    pub fn set_or_clear_exchange_subnet_routes<T>(mut self, v: std::option::Option<T>) -> Self
28389    where
28390        T: std::convert::Into<bool>,
28391    {
28392        self.exchange_subnet_routes = v.map(|x| x.into());
28393        self
28394    }
28395
28396    /// Sets the value of [export_custom_routes_with_public_ip][crate::model::NetworkPeering::export_custom_routes_with_public_ip].
28397    pub fn set_export_custom_routes_with_public_ip<T>(mut self, v: T) -> Self
28398    where
28399        T: std::convert::Into<bool>,
28400    {
28401        self.export_custom_routes_with_public_ip = std::option::Option::Some(v.into());
28402        self
28403    }
28404
28405    /// Sets or clears the value of [export_custom_routes_with_public_ip][crate::model::NetworkPeering::export_custom_routes_with_public_ip].
28406    pub fn set_or_clear_export_custom_routes_with_public_ip<T>(
28407        mut self,
28408        v: std::option::Option<T>,
28409    ) -> Self
28410    where
28411        T: std::convert::Into<bool>,
28412    {
28413        self.export_custom_routes_with_public_ip = v.map(|x| x.into());
28414        self
28415    }
28416
28417    /// Sets the value of [import_custom_routes_with_public_ip][crate::model::NetworkPeering::import_custom_routes_with_public_ip].
28418    pub fn set_import_custom_routes_with_public_ip<T>(mut self, v: T) -> Self
28419    where
28420        T: std::convert::Into<bool>,
28421    {
28422        self.import_custom_routes_with_public_ip = std::option::Option::Some(v.into());
28423        self
28424    }
28425
28426    /// Sets or clears the value of [import_custom_routes_with_public_ip][crate::model::NetworkPeering::import_custom_routes_with_public_ip].
28427    pub fn set_or_clear_import_custom_routes_with_public_ip<T>(
28428        mut self,
28429        v: std::option::Option<T>,
28430    ) -> Self
28431    where
28432        T: std::convert::Into<bool>,
28433    {
28434        self.import_custom_routes_with_public_ip = v.map(|x| x.into());
28435        self
28436    }
28437
28438    /// Sets the value of [state][crate::model::NetworkPeering::state].
28439    pub fn set_state<T: std::convert::Into<crate::model::network_peering::State>>(
28440        mut self,
28441        v: T,
28442    ) -> Self {
28443        self.state = v.into();
28444        self
28445    }
28446
28447    /// Sets the value of [state_details][crate::model::NetworkPeering::state_details].
28448    pub fn set_state_details<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28449        self.state_details = v.into();
28450        self
28451    }
28452
28453    /// Sets the value of [peer_mtu][crate::model::NetworkPeering::peer_mtu].
28454    pub fn set_peer_mtu<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
28455        self.peer_mtu = v.into();
28456        self
28457    }
28458
28459    /// Sets the value of [peer_network_type][crate::model::NetworkPeering::peer_network_type].
28460    pub fn set_peer_network_type<
28461        T: std::convert::Into<crate::model::network_peering::PeerNetworkType>,
28462    >(
28463        mut self,
28464        v: T,
28465    ) -> Self {
28466        self.peer_network_type = v.into();
28467        self
28468    }
28469
28470    /// Sets the value of [uid][crate::model::NetworkPeering::uid].
28471    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28472        self.uid = v.into();
28473        self
28474    }
28475
28476    /// Sets the value of [vmware_engine_network][crate::model::NetworkPeering::vmware_engine_network].
28477    pub fn set_vmware_engine_network<T: std::convert::Into<std::string::String>>(
28478        mut self,
28479        v: T,
28480    ) -> Self {
28481        self.vmware_engine_network = v.into();
28482        self
28483    }
28484
28485    /// Sets the value of [description][crate::model::NetworkPeering::description].
28486    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
28487        self.description = v.into();
28488        self
28489    }
28490}
28491
28492impl wkt::message::Message for NetworkPeering {
28493    fn typename() -> &'static str {
28494        "type.googleapis.com/google.cloud.vmwareengine.v1.NetworkPeering"
28495    }
28496}
28497
28498#[doc(hidden)]
28499impl<'de> serde::de::Deserialize<'de> for NetworkPeering {
28500    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
28501    where
28502        D: serde::Deserializer<'de>,
28503    {
28504        #[allow(non_camel_case_types)]
28505        #[doc(hidden)]
28506        #[derive(PartialEq, Eq, Hash)]
28507        enum __FieldTag {
28508            __name,
28509            __create_time,
28510            __update_time,
28511            __peer_network,
28512            __export_custom_routes,
28513            __import_custom_routes,
28514            __exchange_subnet_routes,
28515            __export_custom_routes_with_public_ip,
28516            __import_custom_routes_with_public_ip,
28517            __state,
28518            __state_details,
28519            __peer_mtu,
28520            __peer_network_type,
28521            __uid,
28522            __vmware_engine_network,
28523            __description,
28524            Unknown(std::string::String),
28525        }
28526        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
28527            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
28528            where
28529                D: serde::Deserializer<'de>,
28530            {
28531                struct Visitor;
28532                impl<'de> serde::de::Visitor<'de> for Visitor {
28533                    type Value = __FieldTag;
28534                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
28535                        formatter.write_str("a field name for NetworkPeering")
28536                    }
28537                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
28538                    where
28539                        E: serde::de::Error,
28540                    {
28541                        use std::result::Result::Ok;
28542                        use std::string::ToString;
28543                        match value {
28544                            "name" => Ok(__FieldTag::__name),
28545                            "createTime" => Ok(__FieldTag::__create_time),
28546                            "create_time" => Ok(__FieldTag::__create_time),
28547                            "updateTime" => Ok(__FieldTag::__update_time),
28548                            "update_time" => Ok(__FieldTag::__update_time),
28549                            "peerNetwork" => Ok(__FieldTag::__peer_network),
28550                            "peer_network" => Ok(__FieldTag::__peer_network),
28551                            "exportCustomRoutes" => Ok(__FieldTag::__export_custom_routes),
28552                            "export_custom_routes" => Ok(__FieldTag::__export_custom_routes),
28553                            "importCustomRoutes" => Ok(__FieldTag::__import_custom_routes),
28554                            "import_custom_routes" => Ok(__FieldTag::__import_custom_routes),
28555                            "exchangeSubnetRoutes" => Ok(__FieldTag::__exchange_subnet_routes),
28556                            "exchange_subnet_routes" => Ok(__FieldTag::__exchange_subnet_routes),
28557                            "exportCustomRoutesWithPublicIp" => {
28558                                Ok(__FieldTag::__export_custom_routes_with_public_ip)
28559                            }
28560                            "export_custom_routes_with_public_ip" => {
28561                                Ok(__FieldTag::__export_custom_routes_with_public_ip)
28562                            }
28563                            "importCustomRoutesWithPublicIp" => {
28564                                Ok(__FieldTag::__import_custom_routes_with_public_ip)
28565                            }
28566                            "import_custom_routes_with_public_ip" => {
28567                                Ok(__FieldTag::__import_custom_routes_with_public_ip)
28568                            }
28569                            "state" => Ok(__FieldTag::__state),
28570                            "stateDetails" => Ok(__FieldTag::__state_details),
28571                            "state_details" => Ok(__FieldTag::__state_details),
28572                            "peerMtu" => Ok(__FieldTag::__peer_mtu),
28573                            "peer_mtu" => Ok(__FieldTag::__peer_mtu),
28574                            "peerNetworkType" => Ok(__FieldTag::__peer_network_type),
28575                            "peer_network_type" => Ok(__FieldTag::__peer_network_type),
28576                            "uid" => Ok(__FieldTag::__uid),
28577                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
28578                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
28579                            "description" => Ok(__FieldTag::__description),
28580                            _ => Ok(__FieldTag::Unknown(value.to_string())),
28581                        }
28582                    }
28583                }
28584                deserializer.deserialize_identifier(Visitor)
28585            }
28586        }
28587        struct Visitor;
28588        impl<'de> serde::de::Visitor<'de> for Visitor {
28589            type Value = NetworkPeering;
28590            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
28591                formatter.write_str("struct NetworkPeering")
28592            }
28593            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
28594            where
28595                A: serde::de::MapAccess<'de>,
28596            {
28597                #[allow(unused_imports)]
28598                use serde::de::Error;
28599                use std::option::Option::Some;
28600                let mut fields = std::collections::HashSet::new();
28601                let mut result = Self::Value::new();
28602                while let Some(tag) = map.next_key::<__FieldTag>()? {
28603                    #[allow(clippy::match_single_binding)]
28604                    match tag {
28605                        __FieldTag::__name => {
28606                            if !fields.insert(__FieldTag::__name) {
28607                                return std::result::Result::Err(A::Error::duplicate_field(
28608                                    "multiple values for name",
28609                                ));
28610                            }
28611                            result.name = map
28612                                .next_value::<std::option::Option<std::string::String>>()?
28613                                .unwrap_or_default();
28614                        }
28615                        __FieldTag::__create_time => {
28616                            if !fields.insert(__FieldTag::__create_time) {
28617                                return std::result::Result::Err(A::Error::duplicate_field(
28618                                    "multiple values for create_time",
28619                                ));
28620                            }
28621                            result.create_time =
28622                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
28623                        }
28624                        __FieldTag::__update_time => {
28625                            if !fields.insert(__FieldTag::__update_time) {
28626                                return std::result::Result::Err(A::Error::duplicate_field(
28627                                    "multiple values for update_time",
28628                                ));
28629                            }
28630                            result.update_time =
28631                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
28632                        }
28633                        __FieldTag::__peer_network => {
28634                            if !fields.insert(__FieldTag::__peer_network) {
28635                                return std::result::Result::Err(A::Error::duplicate_field(
28636                                    "multiple values for peer_network",
28637                                ));
28638                            }
28639                            result.peer_network = map
28640                                .next_value::<std::option::Option<std::string::String>>()?
28641                                .unwrap_or_default();
28642                        }
28643                        __FieldTag::__export_custom_routes => {
28644                            if !fields.insert(__FieldTag::__export_custom_routes) {
28645                                return std::result::Result::Err(A::Error::duplicate_field(
28646                                    "multiple values for export_custom_routes",
28647                                ));
28648                            }
28649                            result.export_custom_routes =
28650                                map.next_value::<std::option::Option<bool>>()?;
28651                        }
28652                        __FieldTag::__import_custom_routes => {
28653                            if !fields.insert(__FieldTag::__import_custom_routes) {
28654                                return std::result::Result::Err(A::Error::duplicate_field(
28655                                    "multiple values for import_custom_routes",
28656                                ));
28657                            }
28658                            result.import_custom_routes =
28659                                map.next_value::<std::option::Option<bool>>()?;
28660                        }
28661                        __FieldTag::__exchange_subnet_routes => {
28662                            if !fields.insert(__FieldTag::__exchange_subnet_routes) {
28663                                return std::result::Result::Err(A::Error::duplicate_field(
28664                                    "multiple values for exchange_subnet_routes",
28665                                ));
28666                            }
28667                            result.exchange_subnet_routes =
28668                                map.next_value::<std::option::Option<bool>>()?;
28669                        }
28670                        __FieldTag::__export_custom_routes_with_public_ip => {
28671                            if !fields.insert(__FieldTag::__export_custom_routes_with_public_ip) {
28672                                return std::result::Result::Err(A::Error::duplicate_field(
28673                                    "multiple values for export_custom_routes_with_public_ip",
28674                                ));
28675                            }
28676                            result.export_custom_routes_with_public_ip =
28677                                map.next_value::<std::option::Option<bool>>()?;
28678                        }
28679                        __FieldTag::__import_custom_routes_with_public_ip => {
28680                            if !fields.insert(__FieldTag::__import_custom_routes_with_public_ip) {
28681                                return std::result::Result::Err(A::Error::duplicate_field(
28682                                    "multiple values for import_custom_routes_with_public_ip",
28683                                ));
28684                            }
28685                            result.import_custom_routes_with_public_ip =
28686                                map.next_value::<std::option::Option<bool>>()?;
28687                        }
28688                        __FieldTag::__state => {
28689                            if !fields.insert(__FieldTag::__state) {
28690                                return std::result::Result::Err(A::Error::duplicate_field(
28691                                    "multiple values for state",
28692                                ));
28693                            }
28694                            result.state = map.next_value::<std::option::Option<crate::model::network_peering::State>>()?.unwrap_or_default();
28695                        }
28696                        __FieldTag::__state_details => {
28697                            if !fields.insert(__FieldTag::__state_details) {
28698                                return std::result::Result::Err(A::Error::duplicate_field(
28699                                    "multiple values for state_details",
28700                                ));
28701                            }
28702                            result.state_details = map
28703                                .next_value::<std::option::Option<std::string::String>>()?
28704                                .unwrap_or_default();
28705                        }
28706                        __FieldTag::__peer_mtu => {
28707                            if !fields.insert(__FieldTag::__peer_mtu) {
28708                                return std::result::Result::Err(A::Error::duplicate_field(
28709                                    "multiple values for peer_mtu",
28710                                ));
28711                            }
28712                            struct __With(std::option::Option<i32>);
28713                            impl<'de> serde::de::Deserialize<'de> for __With {
28714                                fn deserialize<D>(
28715                                    deserializer: D,
28716                                ) -> std::result::Result<Self, D::Error>
28717                                where
28718                                    D: serde::de::Deserializer<'de>,
28719                                {
28720                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
28721                                }
28722                            }
28723                            result.peer_mtu = map.next_value::<__With>()?.0.unwrap_or_default();
28724                        }
28725                        __FieldTag::__peer_network_type => {
28726                            if !fields.insert(__FieldTag::__peer_network_type) {
28727                                return std::result::Result::Err(A::Error::duplicate_field(
28728                                    "multiple values for peer_network_type",
28729                                ));
28730                            }
28731                            result.peer_network_type =
28732                                map.next_value::<std::option::Option<
28733                                    crate::model::network_peering::PeerNetworkType,
28734                                >>()?
28735                                .unwrap_or_default();
28736                        }
28737                        __FieldTag::__uid => {
28738                            if !fields.insert(__FieldTag::__uid) {
28739                                return std::result::Result::Err(A::Error::duplicate_field(
28740                                    "multiple values for uid",
28741                                ));
28742                            }
28743                            result.uid = map
28744                                .next_value::<std::option::Option<std::string::String>>()?
28745                                .unwrap_or_default();
28746                        }
28747                        __FieldTag::__vmware_engine_network => {
28748                            if !fields.insert(__FieldTag::__vmware_engine_network) {
28749                                return std::result::Result::Err(A::Error::duplicate_field(
28750                                    "multiple values for vmware_engine_network",
28751                                ));
28752                            }
28753                            result.vmware_engine_network = map
28754                                .next_value::<std::option::Option<std::string::String>>()?
28755                                .unwrap_or_default();
28756                        }
28757                        __FieldTag::__description => {
28758                            if !fields.insert(__FieldTag::__description) {
28759                                return std::result::Result::Err(A::Error::duplicate_field(
28760                                    "multiple values for description",
28761                                ));
28762                            }
28763                            result.description = map
28764                                .next_value::<std::option::Option<std::string::String>>()?
28765                                .unwrap_or_default();
28766                        }
28767                        __FieldTag::Unknown(key) => {
28768                            let value = map.next_value::<serde_json::Value>()?;
28769                            result._unknown_fields.insert(key, value);
28770                        }
28771                    }
28772                }
28773                std::result::Result::Ok(result)
28774            }
28775        }
28776        deserializer.deserialize_any(Visitor)
28777    }
28778}
28779
28780#[doc(hidden)]
28781impl serde::ser::Serialize for NetworkPeering {
28782    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
28783    where
28784        S: serde::ser::Serializer,
28785    {
28786        use serde::ser::SerializeMap;
28787        #[allow(unused_imports)]
28788        use std::option::Option::Some;
28789        let mut state = serializer.serialize_map(std::option::Option::None)?;
28790        if !self.name.is_empty() {
28791            state.serialize_entry("name", &self.name)?;
28792        }
28793        if self.create_time.is_some() {
28794            state.serialize_entry("createTime", &self.create_time)?;
28795        }
28796        if self.update_time.is_some() {
28797            state.serialize_entry("updateTime", &self.update_time)?;
28798        }
28799        if !self.peer_network.is_empty() {
28800            state.serialize_entry("peerNetwork", &self.peer_network)?;
28801        }
28802        if self.export_custom_routes.is_some() {
28803            state.serialize_entry("exportCustomRoutes", &self.export_custom_routes)?;
28804        }
28805        if self.import_custom_routes.is_some() {
28806            state.serialize_entry("importCustomRoutes", &self.import_custom_routes)?;
28807        }
28808        if self.exchange_subnet_routes.is_some() {
28809            state.serialize_entry("exchangeSubnetRoutes", &self.exchange_subnet_routes)?;
28810        }
28811        if self.export_custom_routes_with_public_ip.is_some() {
28812            state.serialize_entry(
28813                "exportCustomRoutesWithPublicIp",
28814                &self.export_custom_routes_with_public_ip,
28815            )?;
28816        }
28817        if self.import_custom_routes_with_public_ip.is_some() {
28818            state.serialize_entry(
28819                "importCustomRoutesWithPublicIp",
28820                &self.import_custom_routes_with_public_ip,
28821            )?;
28822        }
28823        if !wkt::internal::is_default(&self.state) {
28824            state.serialize_entry("state", &self.state)?;
28825        }
28826        if !self.state_details.is_empty() {
28827            state.serialize_entry("stateDetails", &self.state_details)?;
28828        }
28829        if !wkt::internal::is_default(&self.peer_mtu) {
28830            struct __With<'a>(&'a i32);
28831            impl<'a> serde::ser::Serialize for __With<'a> {
28832                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
28833                where
28834                    S: serde::ser::Serializer,
28835                {
28836                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
28837                }
28838            }
28839            state.serialize_entry("peerMtu", &__With(&self.peer_mtu))?;
28840        }
28841        if !wkt::internal::is_default(&self.peer_network_type) {
28842            state.serialize_entry("peerNetworkType", &self.peer_network_type)?;
28843        }
28844        if !self.uid.is_empty() {
28845            state.serialize_entry("uid", &self.uid)?;
28846        }
28847        if !self.vmware_engine_network.is_empty() {
28848            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
28849        }
28850        if !self.description.is_empty() {
28851            state.serialize_entry("description", &self.description)?;
28852        }
28853        if !self._unknown_fields.is_empty() {
28854            for (key, value) in self._unknown_fields.iter() {
28855                state.serialize_entry(key, &value)?;
28856            }
28857        }
28858        state.end()
28859    }
28860}
28861
28862/// Defines additional types related to [NetworkPeering].
28863pub mod network_peering {
28864    #[allow(unused_imports)]
28865    use super::*;
28866
28867    /// Possible states of a network peering.
28868    ///
28869    /// # Working with unknown values
28870    ///
28871    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
28872    /// additional enum variants at any time. Adding new variants is not considered
28873    /// a breaking change. Applications should write their code in anticipation of:
28874    ///
28875    /// - New values appearing in future releases of the client library, **and**
28876    /// - New values received dynamically, without application changes.
28877    ///
28878    /// Please consult the [Working with enums] section in the user guide for some
28879    /// guidelines.
28880    ///
28881    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
28882    #[derive(Clone, Debug, PartialEq)]
28883    #[non_exhaustive]
28884    pub enum State {
28885        /// Unspecified network peering state. This is the default value.
28886        Unspecified,
28887        /// The peering is not active.
28888        Inactive,
28889        /// The peering is active.
28890        Active,
28891        /// The peering is being created.
28892        Creating,
28893        /// The peering is being deleted.
28894        Deleting,
28895        /// If set, the enum was initialized with an unknown value.
28896        ///
28897        /// Applications can examine the value using [State::value] or
28898        /// [State::name].
28899        UnknownValue(state::UnknownValue),
28900    }
28901
28902    #[doc(hidden)]
28903    pub mod state {
28904        #[allow(unused_imports)]
28905        use super::*;
28906        #[derive(Clone, Debug, PartialEq)]
28907        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
28908    }
28909
28910    impl State {
28911        /// Gets the enum value.
28912        ///
28913        /// Returns `None` if the enum contains an unknown value deserialized from
28914        /// the string representation of enums.
28915        pub fn value(&self) -> std::option::Option<i32> {
28916            match self {
28917                Self::Unspecified => std::option::Option::Some(0),
28918                Self::Inactive => std::option::Option::Some(1),
28919                Self::Active => std::option::Option::Some(2),
28920                Self::Creating => std::option::Option::Some(3),
28921                Self::Deleting => std::option::Option::Some(4),
28922                Self::UnknownValue(u) => u.0.value(),
28923            }
28924        }
28925
28926        /// Gets the enum value as a string.
28927        ///
28928        /// Returns `None` if the enum contains an unknown value deserialized from
28929        /// the integer representation of enums.
28930        pub fn name(&self) -> std::option::Option<&str> {
28931            match self {
28932                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
28933                Self::Inactive => std::option::Option::Some("INACTIVE"),
28934                Self::Active => std::option::Option::Some("ACTIVE"),
28935                Self::Creating => std::option::Option::Some("CREATING"),
28936                Self::Deleting => std::option::Option::Some("DELETING"),
28937                Self::UnknownValue(u) => u.0.name(),
28938            }
28939        }
28940    }
28941
28942    impl std::default::Default for State {
28943        fn default() -> Self {
28944            use std::convert::From;
28945            Self::from(0)
28946        }
28947    }
28948
28949    impl std::fmt::Display for State {
28950        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
28951            wkt::internal::display_enum(f, self.name(), self.value())
28952        }
28953    }
28954
28955    impl std::convert::From<i32> for State {
28956        fn from(value: i32) -> Self {
28957            match value {
28958                0 => Self::Unspecified,
28959                1 => Self::Inactive,
28960                2 => Self::Active,
28961                3 => Self::Creating,
28962                4 => Self::Deleting,
28963                _ => Self::UnknownValue(state::UnknownValue(
28964                    wkt::internal::UnknownEnumValue::Integer(value),
28965                )),
28966            }
28967        }
28968    }
28969
28970    impl std::convert::From<&str> for State {
28971        fn from(value: &str) -> Self {
28972            use std::string::ToString;
28973            match value {
28974                "STATE_UNSPECIFIED" => Self::Unspecified,
28975                "INACTIVE" => Self::Inactive,
28976                "ACTIVE" => Self::Active,
28977                "CREATING" => Self::Creating,
28978                "DELETING" => Self::Deleting,
28979                _ => Self::UnknownValue(state::UnknownValue(
28980                    wkt::internal::UnknownEnumValue::String(value.to_string()),
28981                )),
28982            }
28983        }
28984    }
28985
28986    impl serde::ser::Serialize for State {
28987        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
28988        where
28989            S: serde::Serializer,
28990        {
28991            match self {
28992                Self::Unspecified => serializer.serialize_i32(0),
28993                Self::Inactive => serializer.serialize_i32(1),
28994                Self::Active => serializer.serialize_i32(2),
28995                Self::Creating => serializer.serialize_i32(3),
28996                Self::Deleting => serializer.serialize_i32(4),
28997                Self::UnknownValue(u) => u.0.serialize(serializer),
28998            }
28999        }
29000    }
29001
29002    impl<'de> serde::de::Deserialize<'de> for State {
29003        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29004        where
29005            D: serde::Deserializer<'de>,
29006        {
29007            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
29008                ".google.cloud.vmwareengine.v1.NetworkPeering.State",
29009            ))
29010        }
29011    }
29012
29013    /// Type or purpose of the network peering connection.
29014    ///
29015    /// # Working with unknown values
29016    ///
29017    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
29018    /// additional enum variants at any time. Adding new variants is not considered
29019    /// a breaking change. Applications should write their code in anticipation of:
29020    ///
29021    /// - New values appearing in future releases of the client library, **and**
29022    /// - New values received dynamically, without application changes.
29023    ///
29024    /// Please consult the [Working with enums] section in the user guide for some
29025    /// guidelines.
29026    ///
29027    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
29028    #[derive(Clone, Debug, PartialEq)]
29029    #[non_exhaustive]
29030    pub enum PeerNetworkType {
29031        /// Unspecified
29032        Unspecified,
29033        /// Peering connection used for connecting to another VPC network established
29034        /// by the same user. For example, a peering connection to another VPC
29035        /// network in the same project or to an on-premises network.
29036        Standard,
29037        /// Peering connection used for connecting to another VMware Engine network.
29038        VmwareEngineNetwork,
29039        /// Peering connection used for establishing [private services
29040        /// access](https://cloud.google.com/vpc/docs/private-services-access).
29041        PrivateServicesAccess,
29042        /// Peering connection used for connecting to NetApp Cloud Volumes.
29043        NetappCloudVolumes,
29044        /// Peering connection used for connecting to third-party services. Most
29045        /// third-party services require manual setup of reverse peering on the VPC
29046        /// network associated with the third-party service.
29047        ThirdPartyService,
29048        /// Peering connection used for connecting to Dell PowerScale Filers
29049        DellPowerscale,
29050        /// Peering connection used for connecting to Google Cloud NetApp Volumes.
29051        GoogleCloudNetappVolumes,
29052        /// If set, the enum was initialized with an unknown value.
29053        ///
29054        /// Applications can examine the value using [PeerNetworkType::value] or
29055        /// [PeerNetworkType::name].
29056        UnknownValue(peer_network_type::UnknownValue),
29057    }
29058
29059    #[doc(hidden)]
29060    pub mod peer_network_type {
29061        #[allow(unused_imports)]
29062        use super::*;
29063        #[derive(Clone, Debug, PartialEq)]
29064        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
29065    }
29066
29067    impl PeerNetworkType {
29068        /// Gets the enum value.
29069        ///
29070        /// Returns `None` if the enum contains an unknown value deserialized from
29071        /// the string representation of enums.
29072        pub fn value(&self) -> std::option::Option<i32> {
29073            match self {
29074                Self::Unspecified => std::option::Option::Some(0),
29075                Self::Standard => std::option::Option::Some(1),
29076                Self::VmwareEngineNetwork => std::option::Option::Some(2),
29077                Self::PrivateServicesAccess => std::option::Option::Some(3),
29078                Self::NetappCloudVolumes => std::option::Option::Some(4),
29079                Self::ThirdPartyService => std::option::Option::Some(5),
29080                Self::DellPowerscale => std::option::Option::Some(6),
29081                Self::GoogleCloudNetappVolumes => std::option::Option::Some(7),
29082                Self::UnknownValue(u) => u.0.value(),
29083            }
29084        }
29085
29086        /// Gets the enum value as a string.
29087        ///
29088        /// Returns `None` if the enum contains an unknown value deserialized from
29089        /// the integer representation of enums.
29090        pub fn name(&self) -> std::option::Option<&str> {
29091            match self {
29092                Self::Unspecified => std::option::Option::Some("PEER_NETWORK_TYPE_UNSPECIFIED"),
29093                Self::Standard => std::option::Option::Some("STANDARD"),
29094                Self::VmwareEngineNetwork => std::option::Option::Some("VMWARE_ENGINE_NETWORK"),
29095                Self::PrivateServicesAccess => std::option::Option::Some("PRIVATE_SERVICES_ACCESS"),
29096                Self::NetappCloudVolumes => std::option::Option::Some("NETAPP_CLOUD_VOLUMES"),
29097                Self::ThirdPartyService => std::option::Option::Some("THIRD_PARTY_SERVICE"),
29098                Self::DellPowerscale => std::option::Option::Some("DELL_POWERSCALE"),
29099                Self::GoogleCloudNetappVolumes => {
29100                    std::option::Option::Some("GOOGLE_CLOUD_NETAPP_VOLUMES")
29101                }
29102                Self::UnknownValue(u) => u.0.name(),
29103            }
29104        }
29105    }
29106
29107    impl std::default::Default for PeerNetworkType {
29108        fn default() -> Self {
29109            use std::convert::From;
29110            Self::from(0)
29111        }
29112    }
29113
29114    impl std::fmt::Display for PeerNetworkType {
29115        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
29116            wkt::internal::display_enum(f, self.name(), self.value())
29117        }
29118    }
29119
29120    impl std::convert::From<i32> for PeerNetworkType {
29121        fn from(value: i32) -> Self {
29122            match value {
29123                0 => Self::Unspecified,
29124                1 => Self::Standard,
29125                2 => Self::VmwareEngineNetwork,
29126                3 => Self::PrivateServicesAccess,
29127                4 => Self::NetappCloudVolumes,
29128                5 => Self::ThirdPartyService,
29129                6 => Self::DellPowerscale,
29130                7 => Self::GoogleCloudNetappVolumes,
29131                _ => Self::UnknownValue(peer_network_type::UnknownValue(
29132                    wkt::internal::UnknownEnumValue::Integer(value),
29133                )),
29134            }
29135        }
29136    }
29137
29138    impl std::convert::From<&str> for PeerNetworkType {
29139        fn from(value: &str) -> Self {
29140            use std::string::ToString;
29141            match value {
29142                "PEER_NETWORK_TYPE_UNSPECIFIED" => Self::Unspecified,
29143                "STANDARD" => Self::Standard,
29144                "VMWARE_ENGINE_NETWORK" => Self::VmwareEngineNetwork,
29145                "PRIVATE_SERVICES_ACCESS" => Self::PrivateServicesAccess,
29146                "NETAPP_CLOUD_VOLUMES" => Self::NetappCloudVolumes,
29147                "THIRD_PARTY_SERVICE" => Self::ThirdPartyService,
29148                "DELL_POWERSCALE" => Self::DellPowerscale,
29149                "GOOGLE_CLOUD_NETAPP_VOLUMES" => Self::GoogleCloudNetappVolumes,
29150                _ => Self::UnknownValue(peer_network_type::UnknownValue(
29151                    wkt::internal::UnknownEnumValue::String(value.to_string()),
29152                )),
29153            }
29154        }
29155    }
29156
29157    impl serde::ser::Serialize for PeerNetworkType {
29158        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
29159        where
29160            S: serde::Serializer,
29161        {
29162            match self {
29163                Self::Unspecified => serializer.serialize_i32(0),
29164                Self::Standard => serializer.serialize_i32(1),
29165                Self::VmwareEngineNetwork => serializer.serialize_i32(2),
29166                Self::PrivateServicesAccess => serializer.serialize_i32(3),
29167                Self::NetappCloudVolumes => serializer.serialize_i32(4),
29168                Self::ThirdPartyService => serializer.serialize_i32(5),
29169                Self::DellPowerscale => serializer.serialize_i32(6),
29170                Self::GoogleCloudNetappVolumes => serializer.serialize_i32(7),
29171                Self::UnknownValue(u) => u.0.serialize(serializer),
29172            }
29173        }
29174    }
29175
29176    impl<'de> serde::de::Deserialize<'de> for PeerNetworkType {
29177        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29178        where
29179            D: serde::Deserializer<'de>,
29180        {
29181            deserializer.deserialize_any(wkt::internal::EnumVisitor::<PeerNetworkType>::new(
29182                ".google.cloud.vmwareengine.v1.NetworkPeering.PeerNetworkType",
29183            ))
29184        }
29185    }
29186}
29187
29188/// Exchanged network peering route.
29189#[derive(Clone, Debug, Default, PartialEq)]
29190#[non_exhaustive]
29191pub struct PeeringRoute {
29192    /// Output only. Destination range of the peering route in CIDR notation.
29193    pub dest_range: std::string::String,
29194
29195    /// Output only. Type of the route in the peer VPC network.
29196    pub r#type: crate::model::peering_route::Type,
29197
29198    /// Output only. Region containing the next hop of the peering route. This
29199    /// field only applies to dynamic routes in the peer VPC network.
29200    pub next_hop_region: std::string::String,
29201
29202    /// Output only. The priority of the peering route.
29203    pub priority: i64,
29204
29205    /// Output only. True if the peering route has been imported from a peered
29206    /// VPC network; false otherwise. The import happens if the field
29207    /// `NetworkPeering.importCustomRoutes` is true for this network,
29208    /// `NetworkPeering.exportCustomRoutes` is true for the peer VPC network, and
29209    /// the import does not result in a route conflict.
29210    pub imported: bool,
29211
29212    /// Output only. Direction of the routes exchanged with the peer network, from
29213    /// the VMware Engine network perspective:
29214    ///
29215    /// * Routes of direction `INCOMING` are imported from the peer network.
29216    /// * Routes of direction `OUTGOING` are exported from the intranet VPC network
29217    ///   of the VMware Engine network.
29218    pub direction: crate::model::peering_route::Direction,
29219
29220    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
29221}
29222
29223impl PeeringRoute {
29224    pub fn new() -> Self {
29225        std::default::Default::default()
29226    }
29227
29228    /// Sets the value of [dest_range][crate::model::PeeringRoute::dest_range].
29229    pub fn set_dest_range<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
29230        self.dest_range = v.into();
29231        self
29232    }
29233
29234    /// Sets the value of [r#type][crate::model::PeeringRoute::type].
29235    pub fn set_type<T: std::convert::Into<crate::model::peering_route::Type>>(
29236        mut self,
29237        v: T,
29238    ) -> Self {
29239        self.r#type = v.into();
29240        self
29241    }
29242
29243    /// Sets the value of [next_hop_region][crate::model::PeeringRoute::next_hop_region].
29244    pub fn set_next_hop_region<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
29245        self.next_hop_region = v.into();
29246        self
29247    }
29248
29249    /// Sets the value of [priority][crate::model::PeeringRoute::priority].
29250    pub fn set_priority<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
29251        self.priority = v.into();
29252        self
29253    }
29254
29255    /// Sets the value of [imported][crate::model::PeeringRoute::imported].
29256    pub fn set_imported<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
29257        self.imported = v.into();
29258        self
29259    }
29260
29261    /// Sets the value of [direction][crate::model::PeeringRoute::direction].
29262    pub fn set_direction<T: std::convert::Into<crate::model::peering_route::Direction>>(
29263        mut self,
29264        v: T,
29265    ) -> Self {
29266        self.direction = v.into();
29267        self
29268    }
29269}
29270
29271impl wkt::message::Message for PeeringRoute {
29272    fn typename() -> &'static str {
29273        "type.googleapis.com/google.cloud.vmwareengine.v1.PeeringRoute"
29274    }
29275}
29276
29277#[doc(hidden)]
29278impl<'de> serde::de::Deserialize<'de> for PeeringRoute {
29279    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29280    where
29281        D: serde::Deserializer<'de>,
29282    {
29283        #[allow(non_camel_case_types)]
29284        #[doc(hidden)]
29285        #[derive(PartialEq, Eq, Hash)]
29286        enum __FieldTag {
29287            __dest_range,
29288            __type,
29289            __next_hop_region,
29290            __priority,
29291            __imported,
29292            __direction,
29293            Unknown(std::string::String),
29294        }
29295        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
29296            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29297            where
29298                D: serde::Deserializer<'de>,
29299            {
29300                struct Visitor;
29301                impl<'de> serde::de::Visitor<'de> for Visitor {
29302                    type Value = __FieldTag;
29303                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
29304                        formatter.write_str("a field name for PeeringRoute")
29305                    }
29306                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
29307                    where
29308                        E: serde::de::Error,
29309                    {
29310                        use std::result::Result::Ok;
29311                        use std::string::ToString;
29312                        match value {
29313                            "destRange" => Ok(__FieldTag::__dest_range),
29314                            "dest_range" => Ok(__FieldTag::__dest_range),
29315                            "type" => Ok(__FieldTag::__type),
29316                            "nextHopRegion" => Ok(__FieldTag::__next_hop_region),
29317                            "next_hop_region" => Ok(__FieldTag::__next_hop_region),
29318                            "priority" => Ok(__FieldTag::__priority),
29319                            "imported" => Ok(__FieldTag::__imported),
29320                            "direction" => Ok(__FieldTag::__direction),
29321                            _ => Ok(__FieldTag::Unknown(value.to_string())),
29322                        }
29323                    }
29324                }
29325                deserializer.deserialize_identifier(Visitor)
29326            }
29327        }
29328        struct Visitor;
29329        impl<'de> serde::de::Visitor<'de> for Visitor {
29330            type Value = PeeringRoute;
29331            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
29332                formatter.write_str("struct PeeringRoute")
29333            }
29334            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
29335            where
29336                A: serde::de::MapAccess<'de>,
29337            {
29338                #[allow(unused_imports)]
29339                use serde::de::Error;
29340                use std::option::Option::Some;
29341                let mut fields = std::collections::HashSet::new();
29342                let mut result = Self::Value::new();
29343                while let Some(tag) = map.next_key::<__FieldTag>()? {
29344                    #[allow(clippy::match_single_binding)]
29345                    match tag {
29346                        __FieldTag::__dest_range => {
29347                            if !fields.insert(__FieldTag::__dest_range) {
29348                                return std::result::Result::Err(A::Error::duplicate_field(
29349                                    "multiple values for dest_range",
29350                                ));
29351                            }
29352                            result.dest_range = map
29353                                .next_value::<std::option::Option<std::string::String>>()?
29354                                .unwrap_or_default();
29355                        }
29356                        __FieldTag::__type => {
29357                            if !fields.insert(__FieldTag::__type) {
29358                                return std::result::Result::Err(A::Error::duplicate_field(
29359                                    "multiple values for type",
29360                                ));
29361                            }
29362                            result.r#type = map.next_value::<std::option::Option<crate::model::peering_route::Type>>()?.unwrap_or_default();
29363                        }
29364                        __FieldTag::__next_hop_region => {
29365                            if !fields.insert(__FieldTag::__next_hop_region) {
29366                                return std::result::Result::Err(A::Error::duplicate_field(
29367                                    "multiple values for next_hop_region",
29368                                ));
29369                            }
29370                            result.next_hop_region = map
29371                                .next_value::<std::option::Option<std::string::String>>()?
29372                                .unwrap_or_default();
29373                        }
29374                        __FieldTag::__priority => {
29375                            if !fields.insert(__FieldTag::__priority) {
29376                                return std::result::Result::Err(A::Error::duplicate_field(
29377                                    "multiple values for priority",
29378                                ));
29379                            }
29380                            struct __With(std::option::Option<i64>);
29381                            impl<'de> serde::de::Deserialize<'de> for __With {
29382                                fn deserialize<D>(
29383                                    deserializer: D,
29384                                ) -> std::result::Result<Self, D::Error>
29385                                where
29386                                    D: serde::de::Deserializer<'de>,
29387                                {
29388                                    serde_with::As::< std::option::Option<wkt::internal::I64> >::deserialize(deserializer).map(__With)
29389                                }
29390                            }
29391                            result.priority = map.next_value::<__With>()?.0.unwrap_or_default();
29392                        }
29393                        __FieldTag::__imported => {
29394                            if !fields.insert(__FieldTag::__imported) {
29395                                return std::result::Result::Err(A::Error::duplicate_field(
29396                                    "multiple values for imported",
29397                                ));
29398                            }
29399                            result.imported = map
29400                                .next_value::<std::option::Option<bool>>()?
29401                                .unwrap_or_default();
29402                        }
29403                        __FieldTag::__direction => {
29404                            if !fields.insert(__FieldTag::__direction) {
29405                                return std::result::Result::Err(A::Error::duplicate_field(
29406                                    "multiple values for direction",
29407                                ));
29408                            }
29409                            result.direction = map.next_value::<std::option::Option<crate::model::peering_route::Direction>>()?.unwrap_or_default();
29410                        }
29411                        __FieldTag::Unknown(key) => {
29412                            let value = map.next_value::<serde_json::Value>()?;
29413                            result._unknown_fields.insert(key, value);
29414                        }
29415                    }
29416                }
29417                std::result::Result::Ok(result)
29418            }
29419        }
29420        deserializer.deserialize_any(Visitor)
29421    }
29422}
29423
29424#[doc(hidden)]
29425impl serde::ser::Serialize for PeeringRoute {
29426    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
29427    where
29428        S: serde::ser::Serializer,
29429    {
29430        use serde::ser::SerializeMap;
29431        #[allow(unused_imports)]
29432        use std::option::Option::Some;
29433        let mut state = serializer.serialize_map(std::option::Option::None)?;
29434        if !self.dest_range.is_empty() {
29435            state.serialize_entry("destRange", &self.dest_range)?;
29436        }
29437        if !wkt::internal::is_default(&self.r#type) {
29438            state.serialize_entry("type", &self.r#type)?;
29439        }
29440        if !self.next_hop_region.is_empty() {
29441            state.serialize_entry("nextHopRegion", &self.next_hop_region)?;
29442        }
29443        if !wkt::internal::is_default(&self.priority) {
29444            struct __With<'a>(&'a i64);
29445            impl<'a> serde::ser::Serialize for __With<'a> {
29446                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
29447                where
29448                    S: serde::ser::Serializer,
29449                {
29450                    serde_with::As::<wkt::internal::I64>::serialize(self.0, serializer)
29451                }
29452            }
29453            state.serialize_entry("priority", &__With(&self.priority))?;
29454        }
29455        if !wkt::internal::is_default(&self.imported) {
29456            state.serialize_entry("imported", &self.imported)?;
29457        }
29458        if !wkt::internal::is_default(&self.direction) {
29459            state.serialize_entry("direction", &self.direction)?;
29460        }
29461        if !self._unknown_fields.is_empty() {
29462            for (key, value) in self._unknown_fields.iter() {
29463                state.serialize_entry(key, &value)?;
29464            }
29465        }
29466        state.end()
29467    }
29468}
29469
29470/// Defines additional types related to [PeeringRoute].
29471pub mod peering_route {
29472    #[allow(unused_imports)]
29473    use super::*;
29474
29475    /// The type of the peering route.
29476    ///
29477    /// # Working with unknown values
29478    ///
29479    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
29480    /// additional enum variants at any time. Adding new variants is not considered
29481    /// a breaking change. Applications should write their code in anticipation of:
29482    ///
29483    /// - New values appearing in future releases of the client library, **and**
29484    /// - New values received dynamically, without application changes.
29485    ///
29486    /// Please consult the [Working with enums] section in the user guide for some
29487    /// guidelines.
29488    ///
29489    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
29490    #[derive(Clone, Debug, PartialEq)]
29491    #[non_exhaustive]
29492    pub enum Type {
29493        /// Unspecified peering route type. This is the default value.
29494        Unspecified,
29495        /// Dynamic routes in the peer network.
29496        DynamicPeeringRoute,
29497        /// Static routes in the peer network.
29498        StaticPeeringRoute,
29499        /// Created, updated, and removed automatically by Google Cloud when subnets
29500        /// are created, modified, or deleted in the peer network.
29501        SubnetPeeringRoute,
29502        /// If set, the enum was initialized with an unknown value.
29503        ///
29504        /// Applications can examine the value using [Type::value] or
29505        /// [Type::name].
29506        UnknownValue(r#type::UnknownValue),
29507    }
29508
29509    #[doc(hidden)]
29510    pub mod r#type {
29511        #[allow(unused_imports)]
29512        use super::*;
29513        #[derive(Clone, Debug, PartialEq)]
29514        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
29515    }
29516
29517    impl Type {
29518        /// Gets the enum value.
29519        ///
29520        /// Returns `None` if the enum contains an unknown value deserialized from
29521        /// the string representation of enums.
29522        pub fn value(&self) -> std::option::Option<i32> {
29523            match self {
29524                Self::Unspecified => std::option::Option::Some(0),
29525                Self::DynamicPeeringRoute => std::option::Option::Some(1),
29526                Self::StaticPeeringRoute => std::option::Option::Some(2),
29527                Self::SubnetPeeringRoute => std::option::Option::Some(3),
29528                Self::UnknownValue(u) => u.0.value(),
29529            }
29530        }
29531
29532        /// Gets the enum value as a string.
29533        ///
29534        /// Returns `None` if the enum contains an unknown value deserialized from
29535        /// the integer representation of enums.
29536        pub fn name(&self) -> std::option::Option<&str> {
29537            match self {
29538                Self::Unspecified => std::option::Option::Some("TYPE_UNSPECIFIED"),
29539                Self::DynamicPeeringRoute => std::option::Option::Some("DYNAMIC_PEERING_ROUTE"),
29540                Self::StaticPeeringRoute => std::option::Option::Some("STATIC_PEERING_ROUTE"),
29541                Self::SubnetPeeringRoute => std::option::Option::Some("SUBNET_PEERING_ROUTE"),
29542                Self::UnknownValue(u) => u.0.name(),
29543            }
29544        }
29545    }
29546
29547    impl std::default::Default for Type {
29548        fn default() -> Self {
29549            use std::convert::From;
29550            Self::from(0)
29551        }
29552    }
29553
29554    impl std::fmt::Display for Type {
29555        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
29556            wkt::internal::display_enum(f, self.name(), self.value())
29557        }
29558    }
29559
29560    impl std::convert::From<i32> for Type {
29561        fn from(value: i32) -> Self {
29562            match value {
29563                0 => Self::Unspecified,
29564                1 => Self::DynamicPeeringRoute,
29565                2 => Self::StaticPeeringRoute,
29566                3 => Self::SubnetPeeringRoute,
29567                _ => Self::UnknownValue(r#type::UnknownValue(
29568                    wkt::internal::UnknownEnumValue::Integer(value),
29569                )),
29570            }
29571        }
29572    }
29573
29574    impl std::convert::From<&str> for Type {
29575        fn from(value: &str) -> Self {
29576            use std::string::ToString;
29577            match value {
29578                "TYPE_UNSPECIFIED" => Self::Unspecified,
29579                "DYNAMIC_PEERING_ROUTE" => Self::DynamicPeeringRoute,
29580                "STATIC_PEERING_ROUTE" => Self::StaticPeeringRoute,
29581                "SUBNET_PEERING_ROUTE" => Self::SubnetPeeringRoute,
29582                _ => Self::UnknownValue(r#type::UnknownValue(
29583                    wkt::internal::UnknownEnumValue::String(value.to_string()),
29584                )),
29585            }
29586        }
29587    }
29588
29589    impl serde::ser::Serialize for Type {
29590        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
29591        where
29592            S: serde::Serializer,
29593        {
29594            match self {
29595                Self::Unspecified => serializer.serialize_i32(0),
29596                Self::DynamicPeeringRoute => serializer.serialize_i32(1),
29597                Self::StaticPeeringRoute => serializer.serialize_i32(2),
29598                Self::SubnetPeeringRoute => serializer.serialize_i32(3),
29599                Self::UnknownValue(u) => u.0.serialize(serializer),
29600            }
29601        }
29602    }
29603
29604    impl<'de> serde::de::Deserialize<'de> for Type {
29605        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29606        where
29607            D: serde::Deserializer<'de>,
29608        {
29609            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
29610                ".google.cloud.vmwareengine.v1.PeeringRoute.Type",
29611            ))
29612        }
29613    }
29614
29615    /// The direction of the exchanged routes.
29616    ///
29617    /// # Working with unknown values
29618    ///
29619    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
29620    /// additional enum variants at any time. Adding new variants is not considered
29621    /// a breaking change. Applications should write their code in anticipation of:
29622    ///
29623    /// - New values appearing in future releases of the client library, **and**
29624    /// - New values received dynamically, without application changes.
29625    ///
29626    /// Please consult the [Working with enums] section in the user guide for some
29627    /// guidelines.
29628    ///
29629    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
29630    #[derive(Clone, Debug, PartialEq)]
29631    #[non_exhaustive]
29632    pub enum Direction {
29633        /// Unspecified exchanged routes direction. This is default.
29634        Unspecified,
29635        /// Routes imported from the peer network.
29636        Incoming,
29637        /// Routes exported to the peer network.
29638        Outgoing,
29639        /// If set, the enum was initialized with an unknown value.
29640        ///
29641        /// Applications can examine the value using [Direction::value] or
29642        /// [Direction::name].
29643        UnknownValue(direction::UnknownValue),
29644    }
29645
29646    #[doc(hidden)]
29647    pub mod direction {
29648        #[allow(unused_imports)]
29649        use super::*;
29650        #[derive(Clone, Debug, PartialEq)]
29651        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
29652    }
29653
29654    impl Direction {
29655        /// Gets the enum value.
29656        ///
29657        /// Returns `None` if the enum contains an unknown value deserialized from
29658        /// the string representation of enums.
29659        pub fn value(&self) -> std::option::Option<i32> {
29660            match self {
29661                Self::Unspecified => std::option::Option::Some(0),
29662                Self::Incoming => std::option::Option::Some(1),
29663                Self::Outgoing => std::option::Option::Some(2),
29664                Self::UnknownValue(u) => u.0.value(),
29665            }
29666        }
29667
29668        /// Gets the enum value as a string.
29669        ///
29670        /// Returns `None` if the enum contains an unknown value deserialized from
29671        /// the integer representation of enums.
29672        pub fn name(&self) -> std::option::Option<&str> {
29673            match self {
29674                Self::Unspecified => std::option::Option::Some("DIRECTION_UNSPECIFIED"),
29675                Self::Incoming => std::option::Option::Some("INCOMING"),
29676                Self::Outgoing => std::option::Option::Some("OUTGOING"),
29677                Self::UnknownValue(u) => u.0.name(),
29678            }
29679        }
29680    }
29681
29682    impl std::default::Default for Direction {
29683        fn default() -> Self {
29684            use std::convert::From;
29685            Self::from(0)
29686        }
29687    }
29688
29689    impl std::fmt::Display for Direction {
29690        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
29691            wkt::internal::display_enum(f, self.name(), self.value())
29692        }
29693    }
29694
29695    impl std::convert::From<i32> for Direction {
29696        fn from(value: i32) -> Self {
29697            match value {
29698                0 => Self::Unspecified,
29699                1 => Self::Incoming,
29700                2 => Self::Outgoing,
29701                _ => Self::UnknownValue(direction::UnknownValue(
29702                    wkt::internal::UnknownEnumValue::Integer(value),
29703                )),
29704            }
29705        }
29706    }
29707
29708    impl std::convert::From<&str> for Direction {
29709        fn from(value: &str) -> Self {
29710            use std::string::ToString;
29711            match value {
29712                "DIRECTION_UNSPECIFIED" => Self::Unspecified,
29713                "INCOMING" => Self::Incoming,
29714                "OUTGOING" => Self::Outgoing,
29715                _ => Self::UnknownValue(direction::UnknownValue(
29716                    wkt::internal::UnknownEnumValue::String(value.to_string()),
29717                )),
29718            }
29719        }
29720    }
29721
29722    impl serde::ser::Serialize for Direction {
29723        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
29724        where
29725            S: serde::Serializer,
29726        {
29727            match self {
29728                Self::Unspecified => serializer.serialize_i32(0),
29729                Self::Incoming => serializer.serialize_i32(1),
29730                Self::Outgoing => serializer.serialize_i32(2),
29731                Self::UnknownValue(u) => u.0.serialize(serializer),
29732            }
29733        }
29734    }
29735
29736    impl<'de> serde::de::Deserialize<'de> for Direction {
29737        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29738        where
29739            D: serde::Deserializer<'de>,
29740        {
29741            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Direction>::new(
29742                ".google.cloud.vmwareengine.v1.PeeringRoute.Direction",
29743            ))
29744        }
29745    }
29746}
29747
29748/// Represents a network policy resource. Network policies are regional
29749/// resources. You can use a network policy to enable or disable internet access
29750/// and external IP access. Network policies are associated with a VMware Engine
29751/// network, which might span across regions. For a given region, a network
29752/// policy applies to all private clouds in the VMware Engine network associated
29753/// with the policy.
29754#[derive(Clone, Debug, Default, PartialEq)]
29755#[non_exhaustive]
29756pub struct NetworkPolicy {
29757    /// Output only. The resource name of this network policy.
29758    /// Resource names are schemeless URIs that follow the conventions in
29759    /// <https://cloud.google.com/apis/design/resource_names>.
29760    /// For example:
29761    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
29762    pub name: std::string::String,
29763
29764    /// Output only. Creation time of this resource.
29765    pub create_time: std::option::Option<wkt::Timestamp>,
29766
29767    /// Output only. Last update time of this resource.
29768    pub update_time: std::option::Option<wkt::Timestamp>,
29769
29770    /// Network service that allows VMware workloads to access the internet.
29771    pub internet_access: std::option::Option<crate::model::network_policy::NetworkService>,
29772
29773    /// Network service that allows External IP addresses to be assigned to VMware
29774    /// workloads. This service can only be enabled when `internet_access` is also
29775    /// enabled.
29776    pub external_ip: std::option::Option<crate::model::network_policy::NetworkService>,
29777
29778    /// Required. IP address range in CIDR notation used to create internet access
29779    /// and external IP access. An RFC 1918 CIDR block, with a "/26" prefix, is
29780    /// required. The range cannot overlap with any prefixes either in the consumer
29781    /// VPC network or in use by the private clouds attached to that VPC network.
29782    pub edge_services_cidr: std::string::String,
29783
29784    /// Output only. System-generated unique identifier for the resource.
29785    pub uid: std::string::String,
29786
29787    /// Optional. The relative resource name of the VMware Engine network.
29788    /// Specify the name in the following form:
29789    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
29790    /// where `{project}` can either be a project number or a project ID.
29791    pub vmware_engine_network: std::string::String,
29792
29793    /// Optional. User-provided description for this network policy.
29794    pub description: std::string::String,
29795
29796    /// Output only. The canonical name of the VMware Engine network in the form:
29797    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
29798    pub vmware_engine_network_canonical: std::string::String,
29799
29800    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
29801}
29802
29803impl NetworkPolicy {
29804    pub fn new() -> Self {
29805        std::default::Default::default()
29806    }
29807
29808    /// Sets the value of [name][crate::model::NetworkPolicy::name].
29809    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
29810        self.name = v.into();
29811        self
29812    }
29813
29814    /// Sets the value of [create_time][crate::model::NetworkPolicy::create_time].
29815    pub fn set_create_time<T>(mut self, v: T) -> Self
29816    where
29817        T: std::convert::Into<wkt::Timestamp>,
29818    {
29819        self.create_time = std::option::Option::Some(v.into());
29820        self
29821    }
29822
29823    /// Sets or clears the value of [create_time][crate::model::NetworkPolicy::create_time].
29824    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
29825    where
29826        T: std::convert::Into<wkt::Timestamp>,
29827    {
29828        self.create_time = v.map(|x| x.into());
29829        self
29830    }
29831
29832    /// Sets the value of [update_time][crate::model::NetworkPolicy::update_time].
29833    pub fn set_update_time<T>(mut self, v: T) -> Self
29834    where
29835        T: std::convert::Into<wkt::Timestamp>,
29836    {
29837        self.update_time = std::option::Option::Some(v.into());
29838        self
29839    }
29840
29841    /// Sets or clears the value of [update_time][crate::model::NetworkPolicy::update_time].
29842    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
29843    where
29844        T: std::convert::Into<wkt::Timestamp>,
29845    {
29846        self.update_time = v.map(|x| x.into());
29847        self
29848    }
29849
29850    /// Sets the value of [internet_access][crate::model::NetworkPolicy::internet_access].
29851    pub fn set_internet_access<T>(mut self, v: T) -> Self
29852    where
29853        T: std::convert::Into<crate::model::network_policy::NetworkService>,
29854    {
29855        self.internet_access = std::option::Option::Some(v.into());
29856        self
29857    }
29858
29859    /// Sets or clears the value of [internet_access][crate::model::NetworkPolicy::internet_access].
29860    pub fn set_or_clear_internet_access<T>(mut self, v: std::option::Option<T>) -> Self
29861    where
29862        T: std::convert::Into<crate::model::network_policy::NetworkService>,
29863    {
29864        self.internet_access = v.map(|x| x.into());
29865        self
29866    }
29867
29868    /// Sets the value of [external_ip][crate::model::NetworkPolicy::external_ip].
29869    pub fn set_external_ip<T>(mut self, v: T) -> Self
29870    where
29871        T: std::convert::Into<crate::model::network_policy::NetworkService>,
29872    {
29873        self.external_ip = std::option::Option::Some(v.into());
29874        self
29875    }
29876
29877    /// Sets or clears the value of [external_ip][crate::model::NetworkPolicy::external_ip].
29878    pub fn set_or_clear_external_ip<T>(mut self, v: std::option::Option<T>) -> Self
29879    where
29880        T: std::convert::Into<crate::model::network_policy::NetworkService>,
29881    {
29882        self.external_ip = v.map(|x| x.into());
29883        self
29884    }
29885
29886    /// Sets the value of [edge_services_cidr][crate::model::NetworkPolicy::edge_services_cidr].
29887    pub fn set_edge_services_cidr<T: std::convert::Into<std::string::String>>(
29888        mut self,
29889        v: T,
29890    ) -> Self {
29891        self.edge_services_cidr = v.into();
29892        self
29893    }
29894
29895    /// Sets the value of [uid][crate::model::NetworkPolicy::uid].
29896    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
29897        self.uid = v.into();
29898        self
29899    }
29900
29901    /// Sets the value of [vmware_engine_network][crate::model::NetworkPolicy::vmware_engine_network].
29902    pub fn set_vmware_engine_network<T: std::convert::Into<std::string::String>>(
29903        mut self,
29904        v: T,
29905    ) -> Self {
29906        self.vmware_engine_network = v.into();
29907        self
29908    }
29909
29910    /// Sets the value of [description][crate::model::NetworkPolicy::description].
29911    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
29912        self.description = v.into();
29913        self
29914    }
29915
29916    /// Sets the value of [vmware_engine_network_canonical][crate::model::NetworkPolicy::vmware_engine_network_canonical].
29917    pub fn set_vmware_engine_network_canonical<T: std::convert::Into<std::string::String>>(
29918        mut self,
29919        v: T,
29920    ) -> Self {
29921        self.vmware_engine_network_canonical = v.into();
29922        self
29923    }
29924}
29925
29926impl wkt::message::Message for NetworkPolicy {
29927    fn typename() -> &'static str {
29928        "type.googleapis.com/google.cloud.vmwareengine.v1.NetworkPolicy"
29929    }
29930}
29931
29932#[doc(hidden)]
29933impl<'de> serde::de::Deserialize<'de> for NetworkPolicy {
29934    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29935    where
29936        D: serde::Deserializer<'de>,
29937    {
29938        #[allow(non_camel_case_types)]
29939        #[doc(hidden)]
29940        #[derive(PartialEq, Eq, Hash)]
29941        enum __FieldTag {
29942            __name,
29943            __create_time,
29944            __update_time,
29945            __internet_access,
29946            __external_ip,
29947            __edge_services_cidr,
29948            __uid,
29949            __vmware_engine_network,
29950            __description,
29951            __vmware_engine_network_canonical,
29952            Unknown(std::string::String),
29953        }
29954        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
29955            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
29956            where
29957                D: serde::Deserializer<'de>,
29958            {
29959                struct Visitor;
29960                impl<'de> serde::de::Visitor<'de> for Visitor {
29961                    type Value = __FieldTag;
29962                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
29963                        formatter.write_str("a field name for NetworkPolicy")
29964                    }
29965                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
29966                    where
29967                        E: serde::de::Error,
29968                    {
29969                        use std::result::Result::Ok;
29970                        use std::string::ToString;
29971                        match value {
29972                            "name" => Ok(__FieldTag::__name),
29973                            "createTime" => Ok(__FieldTag::__create_time),
29974                            "create_time" => Ok(__FieldTag::__create_time),
29975                            "updateTime" => Ok(__FieldTag::__update_time),
29976                            "update_time" => Ok(__FieldTag::__update_time),
29977                            "internetAccess" => Ok(__FieldTag::__internet_access),
29978                            "internet_access" => Ok(__FieldTag::__internet_access),
29979                            "externalIp" => Ok(__FieldTag::__external_ip),
29980                            "external_ip" => Ok(__FieldTag::__external_ip),
29981                            "edgeServicesCidr" => Ok(__FieldTag::__edge_services_cidr),
29982                            "edge_services_cidr" => Ok(__FieldTag::__edge_services_cidr),
29983                            "uid" => Ok(__FieldTag::__uid),
29984                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
29985                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
29986                            "description" => Ok(__FieldTag::__description),
29987                            "vmwareEngineNetworkCanonical" => {
29988                                Ok(__FieldTag::__vmware_engine_network_canonical)
29989                            }
29990                            "vmware_engine_network_canonical" => {
29991                                Ok(__FieldTag::__vmware_engine_network_canonical)
29992                            }
29993                            _ => Ok(__FieldTag::Unknown(value.to_string())),
29994                        }
29995                    }
29996                }
29997                deserializer.deserialize_identifier(Visitor)
29998            }
29999        }
30000        struct Visitor;
30001        impl<'de> serde::de::Visitor<'de> for Visitor {
30002            type Value = NetworkPolicy;
30003            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
30004                formatter.write_str("struct NetworkPolicy")
30005            }
30006            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
30007            where
30008                A: serde::de::MapAccess<'de>,
30009            {
30010                #[allow(unused_imports)]
30011                use serde::de::Error;
30012                use std::option::Option::Some;
30013                let mut fields = std::collections::HashSet::new();
30014                let mut result = Self::Value::new();
30015                while let Some(tag) = map.next_key::<__FieldTag>()? {
30016                    #[allow(clippy::match_single_binding)]
30017                    match tag {
30018                        __FieldTag::__name => {
30019                            if !fields.insert(__FieldTag::__name) {
30020                                return std::result::Result::Err(A::Error::duplicate_field(
30021                                    "multiple values for name",
30022                                ));
30023                            }
30024                            result.name = map
30025                                .next_value::<std::option::Option<std::string::String>>()?
30026                                .unwrap_or_default();
30027                        }
30028                        __FieldTag::__create_time => {
30029                            if !fields.insert(__FieldTag::__create_time) {
30030                                return std::result::Result::Err(A::Error::duplicate_field(
30031                                    "multiple values for create_time",
30032                                ));
30033                            }
30034                            result.create_time =
30035                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
30036                        }
30037                        __FieldTag::__update_time => {
30038                            if !fields.insert(__FieldTag::__update_time) {
30039                                return std::result::Result::Err(A::Error::duplicate_field(
30040                                    "multiple values for update_time",
30041                                ));
30042                            }
30043                            result.update_time =
30044                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
30045                        }
30046                        __FieldTag::__internet_access => {
30047                            if !fields.insert(__FieldTag::__internet_access) {
30048                                return std::result::Result::Err(A::Error::duplicate_field(
30049                                    "multiple values for internet_access",
30050                                ));
30051                            }
30052                            result.internet_access =
30053                                map.next_value::<std::option::Option<
30054                                    crate::model::network_policy::NetworkService,
30055                                >>()?;
30056                        }
30057                        __FieldTag::__external_ip => {
30058                            if !fields.insert(__FieldTag::__external_ip) {
30059                                return std::result::Result::Err(A::Error::duplicate_field(
30060                                    "multiple values for external_ip",
30061                                ));
30062                            }
30063                            result.external_ip =
30064                                map.next_value::<std::option::Option<
30065                                    crate::model::network_policy::NetworkService,
30066                                >>()?;
30067                        }
30068                        __FieldTag::__edge_services_cidr => {
30069                            if !fields.insert(__FieldTag::__edge_services_cidr) {
30070                                return std::result::Result::Err(A::Error::duplicate_field(
30071                                    "multiple values for edge_services_cidr",
30072                                ));
30073                            }
30074                            result.edge_services_cidr = map
30075                                .next_value::<std::option::Option<std::string::String>>()?
30076                                .unwrap_or_default();
30077                        }
30078                        __FieldTag::__uid => {
30079                            if !fields.insert(__FieldTag::__uid) {
30080                                return std::result::Result::Err(A::Error::duplicate_field(
30081                                    "multiple values for uid",
30082                                ));
30083                            }
30084                            result.uid = map
30085                                .next_value::<std::option::Option<std::string::String>>()?
30086                                .unwrap_or_default();
30087                        }
30088                        __FieldTag::__vmware_engine_network => {
30089                            if !fields.insert(__FieldTag::__vmware_engine_network) {
30090                                return std::result::Result::Err(A::Error::duplicate_field(
30091                                    "multiple values for vmware_engine_network",
30092                                ));
30093                            }
30094                            result.vmware_engine_network = map
30095                                .next_value::<std::option::Option<std::string::String>>()?
30096                                .unwrap_or_default();
30097                        }
30098                        __FieldTag::__description => {
30099                            if !fields.insert(__FieldTag::__description) {
30100                                return std::result::Result::Err(A::Error::duplicate_field(
30101                                    "multiple values for description",
30102                                ));
30103                            }
30104                            result.description = map
30105                                .next_value::<std::option::Option<std::string::String>>()?
30106                                .unwrap_or_default();
30107                        }
30108                        __FieldTag::__vmware_engine_network_canonical => {
30109                            if !fields.insert(__FieldTag::__vmware_engine_network_canonical) {
30110                                return std::result::Result::Err(A::Error::duplicate_field(
30111                                    "multiple values for vmware_engine_network_canonical",
30112                                ));
30113                            }
30114                            result.vmware_engine_network_canonical = map
30115                                .next_value::<std::option::Option<std::string::String>>()?
30116                                .unwrap_or_default();
30117                        }
30118                        __FieldTag::Unknown(key) => {
30119                            let value = map.next_value::<serde_json::Value>()?;
30120                            result._unknown_fields.insert(key, value);
30121                        }
30122                    }
30123                }
30124                std::result::Result::Ok(result)
30125            }
30126        }
30127        deserializer.deserialize_any(Visitor)
30128    }
30129}
30130
30131#[doc(hidden)]
30132impl serde::ser::Serialize for NetworkPolicy {
30133    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
30134    where
30135        S: serde::ser::Serializer,
30136    {
30137        use serde::ser::SerializeMap;
30138        #[allow(unused_imports)]
30139        use std::option::Option::Some;
30140        let mut state = serializer.serialize_map(std::option::Option::None)?;
30141        if !self.name.is_empty() {
30142            state.serialize_entry("name", &self.name)?;
30143        }
30144        if self.create_time.is_some() {
30145            state.serialize_entry("createTime", &self.create_time)?;
30146        }
30147        if self.update_time.is_some() {
30148            state.serialize_entry("updateTime", &self.update_time)?;
30149        }
30150        if self.internet_access.is_some() {
30151            state.serialize_entry("internetAccess", &self.internet_access)?;
30152        }
30153        if self.external_ip.is_some() {
30154            state.serialize_entry("externalIp", &self.external_ip)?;
30155        }
30156        if !self.edge_services_cidr.is_empty() {
30157            state.serialize_entry("edgeServicesCidr", &self.edge_services_cidr)?;
30158        }
30159        if !self.uid.is_empty() {
30160            state.serialize_entry("uid", &self.uid)?;
30161        }
30162        if !self.vmware_engine_network.is_empty() {
30163            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
30164        }
30165        if !self.description.is_empty() {
30166            state.serialize_entry("description", &self.description)?;
30167        }
30168        if !self.vmware_engine_network_canonical.is_empty() {
30169            state.serialize_entry(
30170                "vmwareEngineNetworkCanonical",
30171                &self.vmware_engine_network_canonical,
30172            )?;
30173        }
30174        if !self._unknown_fields.is_empty() {
30175            for (key, value) in self._unknown_fields.iter() {
30176                state.serialize_entry(key, &value)?;
30177            }
30178        }
30179        state.end()
30180    }
30181}
30182
30183/// Defines additional types related to [NetworkPolicy].
30184pub mod network_policy {
30185    #[allow(unused_imports)]
30186    use super::*;
30187
30188    /// Represents a network service that is managed by a `NetworkPolicy` resource.
30189    /// A network service provides a way to control an aspect of external access to
30190    /// VMware workloads. For example, whether the VMware workloads in the
30191    /// private clouds governed by a network policy can access or be accessed from
30192    /// the internet.
30193    #[derive(Clone, Debug, Default, PartialEq)]
30194    #[non_exhaustive]
30195    pub struct NetworkService {
30196        /// True if the service is enabled; false otherwise.
30197        pub enabled: bool,
30198
30199        /// Output only. State of the service. New values may be added to this enum
30200        /// when appropriate.
30201        pub state: crate::model::network_policy::network_service::State,
30202
30203        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
30204    }
30205
30206    impl NetworkService {
30207        pub fn new() -> Self {
30208            std::default::Default::default()
30209        }
30210
30211        /// Sets the value of [enabled][crate::model::network_policy::NetworkService::enabled].
30212        pub fn set_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
30213            self.enabled = v.into();
30214            self
30215        }
30216
30217        /// Sets the value of [state][crate::model::network_policy::NetworkService::state].
30218        pub fn set_state<
30219            T: std::convert::Into<crate::model::network_policy::network_service::State>,
30220        >(
30221            mut self,
30222            v: T,
30223        ) -> Self {
30224            self.state = v.into();
30225            self
30226        }
30227    }
30228
30229    impl wkt::message::Message for NetworkService {
30230        fn typename() -> &'static str {
30231            "type.googleapis.com/google.cloud.vmwareengine.v1.NetworkPolicy.NetworkService"
30232        }
30233    }
30234
30235    #[doc(hidden)]
30236    impl<'de> serde::de::Deserialize<'de> for NetworkService {
30237        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
30238        where
30239            D: serde::Deserializer<'de>,
30240        {
30241            #[allow(non_camel_case_types)]
30242            #[doc(hidden)]
30243            #[derive(PartialEq, Eq, Hash)]
30244            enum __FieldTag {
30245                __enabled,
30246                __state,
30247                Unknown(std::string::String),
30248            }
30249            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
30250                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
30251                where
30252                    D: serde::Deserializer<'de>,
30253                {
30254                    struct Visitor;
30255                    impl<'de> serde::de::Visitor<'de> for Visitor {
30256                        type Value = __FieldTag;
30257                        fn expecting(
30258                            &self,
30259                            formatter: &mut std::fmt::Formatter,
30260                        ) -> std::fmt::Result {
30261                            formatter.write_str("a field name for NetworkService")
30262                        }
30263                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
30264                        where
30265                            E: serde::de::Error,
30266                        {
30267                            use std::result::Result::Ok;
30268                            use std::string::ToString;
30269                            match value {
30270                                "enabled" => Ok(__FieldTag::__enabled),
30271                                "state" => Ok(__FieldTag::__state),
30272                                _ => Ok(__FieldTag::Unknown(value.to_string())),
30273                            }
30274                        }
30275                    }
30276                    deserializer.deserialize_identifier(Visitor)
30277                }
30278            }
30279            struct Visitor;
30280            impl<'de> serde::de::Visitor<'de> for Visitor {
30281                type Value = NetworkService;
30282                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
30283                    formatter.write_str("struct NetworkService")
30284                }
30285                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
30286                where
30287                    A: serde::de::MapAccess<'de>,
30288                {
30289                    #[allow(unused_imports)]
30290                    use serde::de::Error;
30291                    use std::option::Option::Some;
30292                    let mut fields = std::collections::HashSet::new();
30293                    let mut result = Self::Value::new();
30294                    while let Some(tag) = map.next_key::<__FieldTag>()? {
30295                        #[allow(clippy::match_single_binding)]
30296                        match tag {
30297                            __FieldTag::__enabled => {
30298                                if !fields.insert(__FieldTag::__enabled) {
30299                                    return std::result::Result::Err(A::Error::duplicate_field(
30300                                        "multiple values for enabled",
30301                                    ));
30302                                }
30303                                result.enabled = map
30304                                    .next_value::<std::option::Option<bool>>()?
30305                                    .unwrap_or_default();
30306                            }
30307                            __FieldTag::__state => {
30308                                if !fields.insert(__FieldTag::__state) {
30309                                    return std::result::Result::Err(A::Error::duplicate_field(
30310                                        "multiple values for state",
30311                                    ));
30312                                }
30313                                result.state = map
30314                                    .next_value::<std::option::Option<
30315                                        crate::model::network_policy::network_service::State,
30316                                    >>()?
30317                                    .unwrap_or_default();
30318                            }
30319                            __FieldTag::Unknown(key) => {
30320                                let value = map.next_value::<serde_json::Value>()?;
30321                                result._unknown_fields.insert(key, value);
30322                            }
30323                        }
30324                    }
30325                    std::result::Result::Ok(result)
30326                }
30327            }
30328            deserializer.deserialize_any(Visitor)
30329        }
30330    }
30331
30332    #[doc(hidden)]
30333    impl serde::ser::Serialize for NetworkService {
30334        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
30335        where
30336            S: serde::ser::Serializer,
30337        {
30338            use serde::ser::SerializeMap;
30339            #[allow(unused_imports)]
30340            use std::option::Option::Some;
30341            let mut state = serializer.serialize_map(std::option::Option::None)?;
30342            if !wkt::internal::is_default(&self.enabled) {
30343                state.serialize_entry("enabled", &self.enabled)?;
30344            }
30345            if !wkt::internal::is_default(&self.state) {
30346                state.serialize_entry("state", &self.state)?;
30347            }
30348            if !self._unknown_fields.is_empty() {
30349                for (key, value) in self._unknown_fields.iter() {
30350                    state.serialize_entry(key, &value)?;
30351                }
30352            }
30353            state.end()
30354        }
30355    }
30356
30357    /// Defines additional types related to [NetworkService].
30358    pub mod network_service {
30359        #[allow(unused_imports)]
30360        use super::*;
30361
30362        /// Enum State defines possible states of a network policy controlled
30363        /// service.
30364        ///
30365        /// # Working with unknown values
30366        ///
30367        /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
30368        /// additional enum variants at any time. Adding new variants is not considered
30369        /// a breaking change. Applications should write their code in anticipation of:
30370        ///
30371        /// - New values appearing in future releases of the client library, **and**
30372        /// - New values received dynamically, without application changes.
30373        ///
30374        /// Please consult the [Working with enums] section in the user guide for some
30375        /// guidelines.
30376        ///
30377        /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
30378        #[derive(Clone, Debug, PartialEq)]
30379        #[non_exhaustive]
30380        pub enum State {
30381            /// Unspecified service state. This is the default value.
30382            Unspecified,
30383            /// Service is not provisioned.
30384            Unprovisioned,
30385            /// Service is in the process of being provisioned/deprovisioned.
30386            Reconciling,
30387            /// Service is active.
30388            Active,
30389            /// If set, the enum was initialized with an unknown value.
30390            ///
30391            /// Applications can examine the value using [State::value] or
30392            /// [State::name].
30393            UnknownValue(state::UnknownValue),
30394        }
30395
30396        #[doc(hidden)]
30397        pub mod state {
30398            #[allow(unused_imports)]
30399            use super::*;
30400            #[derive(Clone, Debug, PartialEq)]
30401            pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
30402        }
30403
30404        impl State {
30405            /// Gets the enum value.
30406            ///
30407            /// Returns `None` if the enum contains an unknown value deserialized from
30408            /// the string representation of enums.
30409            pub fn value(&self) -> std::option::Option<i32> {
30410                match self {
30411                    Self::Unspecified => std::option::Option::Some(0),
30412                    Self::Unprovisioned => std::option::Option::Some(1),
30413                    Self::Reconciling => std::option::Option::Some(2),
30414                    Self::Active => std::option::Option::Some(3),
30415                    Self::UnknownValue(u) => u.0.value(),
30416                }
30417            }
30418
30419            /// Gets the enum value as a string.
30420            ///
30421            /// Returns `None` if the enum contains an unknown value deserialized from
30422            /// the integer representation of enums.
30423            pub fn name(&self) -> std::option::Option<&str> {
30424                match self {
30425                    Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
30426                    Self::Unprovisioned => std::option::Option::Some("UNPROVISIONED"),
30427                    Self::Reconciling => std::option::Option::Some("RECONCILING"),
30428                    Self::Active => std::option::Option::Some("ACTIVE"),
30429                    Self::UnknownValue(u) => u.0.name(),
30430                }
30431            }
30432        }
30433
30434        impl std::default::Default for State {
30435            fn default() -> Self {
30436                use std::convert::From;
30437                Self::from(0)
30438            }
30439        }
30440
30441        impl std::fmt::Display for State {
30442            fn fmt(
30443                &self,
30444                f: &mut std::fmt::Formatter<'_>,
30445            ) -> std::result::Result<(), std::fmt::Error> {
30446                wkt::internal::display_enum(f, self.name(), self.value())
30447            }
30448        }
30449
30450        impl std::convert::From<i32> for State {
30451            fn from(value: i32) -> Self {
30452                match value {
30453                    0 => Self::Unspecified,
30454                    1 => Self::Unprovisioned,
30455                    2 => Self::Reconciling,
30456                    3 => Self::Active,
30457                    _ => Self::UnknownValue(state::UnknownValue(
30458                        wkt::internal::UnknownEnumValue::Integer(value),
30459                    )),
30460                }
30461            }
30462        }
30463
30464        impl std::convert::From<&str> for State {
30465            fn from(value: &str) -> Self {
30466                use std::string::ToString;
30467                match value {
30468                    "STATE_UNSPECIFIED" => Self::Unspecified,
30469                    "UNPROVISIONED" => Self::Unprovisioned,
30470                    "RECONCILING" => Self::Reconciling,
30471                    "ACTIVE" => Self::Active,
30472                    _ => Self::UnknownValue(state::UnknownValue(
30473                        wkt::internal::UnknownEnumValue::String(value.to_string()),
30474                    )),
30475                }
30476            }
30477        }
30478
30479        impl serde::ser::Serialize for State {
30480            fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
30481            where
30482                S: serde::Serializer,
30483            {
30484                match self {
30485                    Self::Unspecified => serializer.serialize_i32(0),
30486                    Self::Unprovisioned => serializer.serialize_i32(1),
30487                    Self::Reconciling => serializer.serialize_i32(2),
30488                    Self::Active => serializer.serialize_i32(3),
30489                    Self::UnknownValue(u) => u.0.serialize(serializer),
30490                }
30491            }
30492        }
30493
30494        impl<'de> serde::de::Deserialize<'de> for State {
30495            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
30496            where
30497                D: serde::Deserializer<'de>,
30498            {
30499                deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
30500                    ".google.cloud.vmwareengine.v1.NetworkPolicy.NetworkService.State",
30501                ))
30502            }
30503        }
30504    }
30505}
30506
30507/// Represents a binding between a network and the management DNS zone.
30508/// A management DNS zone is the Cloud DNS cross-project binding zone that
30509/// VMware Engine creates for each private cloud. It contains FQDNs and
30510/// corresponding IP addresses for the private cloud's ESXi hosts and management
30511/// VM appliances like vCenter and NSX Manager.
30512#[derive(Clone, Debug, Default, PartialEq)]
30513#[non_exhaustive]
30514pub struct ManagementDnsZoneBinding {
30515    /// Output only. The resource name of this binding.
30516    /// Resource names are schemeless URIs that follow the conventions in
30517    /// <https://cloud.google.com/apis/design/resource_names>.
30518    /// For example:
30519    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
30520    pub name: std::string::String,
30521
30522    /// Output only. Creation time of this resource.
30523    pub create_time: std::option::Option<wkt::Timestamp>,
30524
30525    /// Output only. Last update time of this resource.
30526    pub update_time: std::option::Option<wkt::Timestamp>,
30527
30528    /// Output only. The state of the resource.
30529    pub state: crate::model::management_dns_zone_binding::State,
30530
30531    /// User-provided description for this resource.
30532    pub description: std::string::String,
30533
30534    /// Output only. System-generated unique identifier for the resource.
30535    pub uid: std::string::String,
30536
30537    /// Required. The relative resource name of the network to bind to the
30538    /// management DNS zone. This network can be a consumer VPC network or a
30539    /// VMware engine network.
30540    pub bind_network: std::option::Option<crate::model::management_dns_zone_binding::BindNetwork>,
30541
30542    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
30543}
30544
30545impl ManagementDnsZoneBinding {
30546    pub fn new() -> Self {
30547        std::default::Default::default()
30548    }
30549
30550    /// Sets the value of [name][crate::model::ManagementDnsZoneBinding::name].
30551    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
30552        self.name = v.into();
30553        self
30554    }
30555
30556    /// Sets the value of [create_time][crate::model::ManagementDnsZoneBinding::create_time].
30557    pub fn set_create_time<T>(mut self, v: T) -> Self
30558    where
30559        T: std::convert::Into<wkt::Timestamp>,
30560    {
30561        self.create_time = std::option::Option::Some(v.into());
30562        self
30563    }
30564
30565    /// Sets or clears the value of [create_time][crate::model::ManagementDnsZoneBinding::create_time].
30566    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
30567    where
30568        T: std::convert::Into<wkt::Timestamp>,
30569    {
30570        self.create_time = v.map(|x| x.into());
30571        self
30572    }
30573
30574    /// Sets the value of [update_time][crate::model::ManagementDnsZoneBinding::update_time].
30575    pub fn set_update_time<T>(mut self, v: T) -> Self
30576    where
30577        T: std::convert::Into<wkt::Timestamp>,
30578    {
30579        self.update_time = std::option::Option::Some(v.into());
30580        self
30581    }
30582
30583    /// Sets or clears the value of [update_time][crate::model::ManagementDnsZoneBinding::update_time].
30584    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
30585    where
30586        T: std::convert::Into<wkt::Timestamp>,
30587    {
30588        self.update_time = v.map(|x| x.into());
30589        self
30590    }
30591
30592    /// Sets the value of [state][crate::model::ManagementDnsZoneBinding::state].
30593    pub fn set_state<T: std::convert::Into<crate::model::management_dns_zone_binding::State>>(
30594        mut self,
30595        v: T,
30596    ) -> Self {
30597        self.state = v.into();
30598        self
30599    }
30600
30601    /// Sets the value of [description][crate::model::ManagementDnsZoneBinding::description].
30602    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
30603        self.description = v.into();
30604        self
30605    }
30606
30607    /// Sets the value of [uid][crate::model::ManagementDnsZoneBinding::uid].
30608    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
30609        self.uid = v.into();
30610        self
30611    }
30612
30613    /// Sets the value of [bind_network][crate::model::ManagementDnsZoneBinding::bind_network].
30614    ///
30615    /// Note that all the setters affecting `bind_network` are mutually
30616    /// exclusive.
30617    pub fn set_bind_network<
30618        T: std::convert::Into<
30619                std::option::Option<crate::model::management_dns_zone_binding::BindNetwork>,
30620            >,
30621    >(
30622        mut self,
30623        v: T,
30624    ) -> Self {
30625        self.bind_network = v.into();
30626        self
30627    }
30628
30629    /// The value of [bind_network][crate::model::ManagementDnsZoneBinding::bind_network]
30630    /// if it holds a `VpcNetwork`, `None` if the field is not set or
30631    /// holds a different branch.
30632    pub fn vpc_network(&self) -> std::option::Option<&std::string::String> {
30633        #[allow(unreachable_patterns)]
30634        self.bind_network.as_ref().and_then(|v| match v {
30635            crate::model::management_dns_zone_binding::BindNetwork::VpcNetwork(v) => {
30636                std::option::Option::Some(v)
30637            }
30638            _ => std::option::Option::None,
30639        })
30640    }
30641
30642    /// Sets the value of [bind_network][crate::model::ManagementDnsZoneBinding::bind_network]
30643    /// to hold a `VpcNetwork`.
30644    ///
30645    /// Note that all the setters affecting `bind_network` are
30646    /// mutually exclusive.
30647    pub fn set_vpc_network<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
30648        self.bind_network = std::option::Option::Some(
30649            crate::model::management_dns_zone_binding::BindNetwork::VpcNetwork(v.into()),
30650        );
30651        self
30652    }
30653
30654    /// The value of [bind_network][crate::model::ManagementDnsZoneBinding::bind_network]
30655    /// if it holds a `VmwareEngineNetwork`, `None` if the field is not set or
30656    /// holds a different branch.
30657    pub fn vmware_engine_network(&self) -> std::option::Option<&std::string::String> {
30658        #[allow(unreachable_patterns)]
30659        self.bind_network.as_ref().and_then(|v| match v {
30660            crate::model::management_dns_zone_binding::BindNetwork::VmwareEngineNetwork(v) => {
30661                std::option::Option::Some(v)
30662            }
30663            _ => std::option::Option::None,
30664        })
30665    }
30666
30667    /// Sets the value of [bind_network][crate::model::ManagementDnsZoneBinding::bind_network]
30668    /// to hold a `VmwareEngineNetwork`.
30669    ///
30670    /// Note that all the setters affecting `bind_network` are
30671    /// mutually exclusive.
30672    pub fn set_vmware_engine_network<T: std::convert::Into<std::string::String>>(
30673        mut self,
30674        v: T,
30675    ) -> Self {
30676        self.bind_network = std::option::Option::Some(
30677            crate::model::management_dns_zone_binding::BindNetwork::VmwareEngineNetwork(v.into()),
30678        );
30679        self
30680    }
30681}
30682
30683impl wkt::message::Message for ManagementDnsZoneBinding {
30684    fn typename() -> &'static str {
30685        "type.googleapis.com/google.cloud.vmwareengine.v1.ManagementDnsZoneBinding"
30686    }
30687}
30688
30689#[doc(hidden)]
30690impl<'de> serde::de::Deserialize<'de> for ManagementDnsZoneBinding {
30691    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
30692    where
30693        D: serde::Deserializer<'de>,
30694    {
30695        #[allow(non_camel_case_types)]
30696        #[doc(hidden)]
30697        #[derive(PartialEq, Eq, Hash)]
30698        enum __FieldTag {
30699            __name,
30700            __create_time,
30701            __update_time,
30702            __state,
30703            __description,
30704            __vpc_network,
30705            __vmware_engine_network,
30706            __uid,
30707            Unknown(std::string::String),
30708        }
30709        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
30710            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
30711            where
30712                D: serde::Deserializer<'de>,
30713            {
30714                struct Visitor;
30715                impl<'de> serde::de::Visitor<'de> for Visitor {
30716                    type Value = __FieldTag;
30717                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
30718                        formatter.write_str("a field name for ManagementDnsZoneBinding")
30719                    }
30720                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
30721                    where
30722                        E: serde::de::Error,
30723                    {
30724                        use std::result::Result::Ok;
30725                        use std::string::ToString;
30726                        match value {
30727                            "name" => Ok(__FieldTag::__name),
30728                            "createTime" => Ok(__FieldTag::__create_time),
30729                            "create_time" => Ok(__FieldTag::__create_time),
30730                            "updateTime" => Ok(__FieldTag::__update_time),
30731                            "update_time" => Ok(__FieldTag::__update_time),
30732                            "state" => Ok(__FieldTag::__state),
30733                            "description" => Ok(__FieldTag::__description),
30734                            "vpcNetwork" => Ok(__FieldTag::__vpc_network),
30735                            "vpc_network" => Ok(__FieldTag::__vpc_network),
30736                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
30737                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
30738                            "uid" => Ok(__FieldTag::__uid),
30739                            _ => Ok(__FieldTag::Unknown(value.to_string())),
30740                        }
30741                    }
30742                }
30743                deserializer.deserialize_identifier(Visitor)
30744            }
30745        }
30746        struct Visitor;
30747        impl<'de> serde::de::Visitor<'de> for Visitor {
30748            type Value = ManagementDnsZoneBinding;
30749            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
30750                formatter.write_str("struct ManagementDnsZoneBinding")
30751            }
30752            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
30753            where
30754                A: serde::de::MapAccess<'de>,
30755            {
30756                #[allow(unused_imports)]
30757                use serde::de::Error;
30758                use std::option::Option::Some;
30759                let mut fields = std::collections::HashSet::new();
30760                let mut result = Self::Value::new();
30761                while let Some(tag) = map.next_key::<__FieldTag>()? {
30762                    #[allow(clippy::match_single_binding)]
30763                    match tag {
30764                        __FieldTag::__name => {
30765                            if !fields.insert(__FieldTag::__name) {
30766                                return std::result::Result::Err(A::Error::duplicate_field(
30767                                    "multiple values for name",
30768                                ));
30769                            }
30770                            result.name = map
30771                                .next_value::<std::option::Option<std::string::String>>()?
30772                                .unwrap_or_default();
30773                        }
30774                        __FieldTag::__create_time => {
30775                            if !fields.insert(__FieldTag::__create_time) {
30776                                return std::result::Result::Err(A::Error::duplicate_field(
30777                                    "multiple values for create_time",
30778                                ));
30779                            }
30780                            result.create_time =
30781                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
30782                        }
30783                        __FieldTag::__update_time => {
30784                            if !fields.insert(__FieldTag::__update_time) {
30785                                return std::result::Result::Err(A::Error::duplicate_field(
30786                                    "multiple values for update_time",
30787                                ));
30788                            }
30789                            result.update_time =
30790                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
30791                        }
30792                        __FieldTag::__state => {
30793                            if !fields.insert(__FieldTag::__state) {
30794                                return std::result::Result::Err(A::Error::duplicate_field(
30795                                    "multiple values for state",
30796                                ));
30797                            }
30798                            result.state = map
30799                                .next_value::<std::option::Option<
30800                                    crate::model::management_dns_zone_binding::State,
30801                                >>()?
30802                                .unwrap_or_default();
30803                        }
30804                        __FieldTag::__description => {
30805                            if !fields.insert(__FieldTag::__description) {
30806                                return std::result::Result::Err(A::Error::duplicate_field(
30807                                    "multiple values for description",
30808                                ));
30809                            }
30810                            result.description = map
30811                                .next_value::<std::option::Option<std::string::String>>()?
30812                                .unwrap_or_default();
30813                        }
30814                        __FieldTag::__vpc_network => {
30815                            if !fields.insert(__FieldTag::__vpc_network) {
30816                                return std::result::Result::Err(A::Error::duplicate_field(
30817                                    "multiple values for vpc_network",
30818                                ));
30819                            }
30820                            if result.bind_network.is_some() {
30821                                return std::result::Result::Err(A::Error::duplicate_field(
30822                                    "multiple values for `bind_network`, a oneof with full ID .google.cloud.vmwareengine.v1.ManagementDnsZoneBinding.vpc_network, latest field was vpcNetwork",
30823                                ));
30824                            }
30825                            result.bind_network = std::option::Option::Some(
30826                                crate::model::management_dns_zone_binding::BindNetwork::VpcNetwork(
30827                                    map.next_value::<std::option::Option<std::string::String>>()?
30828                                        .unwrap_or_default(),
30829                                ),
30830                            );
30831                        }
30832                        __FieldTag::__vmware_engine_network => {
30833                            if !fields.insert(__FieldTag::__vmware_engine_network) {
30834                                return std::result::Result::Err(A::Error::duplicate_field(
30835                                    "multiple values for vmware_engine_network",
30836                                ));
30837                            }
30838                            if result.bind_network.is_some() {
30839                                return std::result::Result::Err(A::Error::duplicate_field(
30840                                    "multiple values for `bind_network`, a oneof with full ID .google.cloud.vmwareengine.v1.ManagementDnsZoneBinding.vmware_engine_network, latest field was vmwareEngineNetwork",
30841                                ));
30842                            }
30843                            result.bind_network = std::option::Option::Some(
30844                                crate::model::management_dns_zone_binding::BindNetwork::VmwareEngineNetwork(
30845                                    map.next_value::<std::option::Option<std::string::String>>()?.unwrap_or_default()
30846                                ),
30847                            );
30848                        }
30849                        __FieldTag::__uid => {
30850                            if !fields.insert(__FieldTag::__uid) {
30851                                return std::result::Result::Err(A::Error::duplicate_field(
30852                                    "multiple values for uid",
30853                                ));
30854                            }
30855                            result.uid = map
30856                                .next_value::<std::option::Option<std::string::String>>()?
30857                                .unwrap_or_default();
30858                        }
30859                        __FieldTag::Unknown(key) => {
30860                            let value = map.next_value::<serde_json::Value>()?;
30861                            result._unknown_fields.insert(key, value);
30862                        }
30863                    }
30864                }
30865                std::result::Result::Ok(result)
30866            }
30867        }
30868        deserializer.deserialize_any(Visitor)
30869    }
30870}
30871
30872#[doc(hidden)]
30873impl serde::ser::Serialize for ManagementDnsZoneBinding {
30874    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
30875    where
30876        S: serde::ser::Serializer,
30877    {
30878        use serde::ser::SerializeMap;
30879        #[allow(unused_imports)]
30880        use std::option::Option::Some;
30881        let mut state = serializer.serialize_map(std::option::Option::None)?;
30882        if !self.name.is_empty() {
30883            state.serialize_entry("name", &self.name)?;
30884        }
30885        if self.create_time.is_some() {
30886            state.serialize_entry("createTime", &self.create_time)?;
30887        }
30888        if self.update_time.is_some() {
30889            state.serialize_entry("updateTime", &self.update_time)?;
30890        }
30891        if !wkt::internal::is_default(&self.state) {
30892            state.serialize_entry("state", &self.state)?;
30893        }
30894        if !self.description.is_empty() {
30895            state.serialize_entry("description", &self.description)?;
30896        }
30897        if let Some(value) = self.vpc_network() {
30898            state.serialize_entry("vpcNetwork", value)?;
30899        }
30900        if let Some(value) = self.vmware_engine_network() {
30901            state.serialize_entry("vmwareEngineNetwork", value)?;
30902        }
30903        if !self.uid.is_empty() {
30904            state.serialize_entry("uid", &self.uid)?;
30905        }
30906        if !self._unknown_fields.is_empty() {
30907            for (key, value) in self._unknown_fields.iter() {
30908                state.serialize_entry(key, &value)?;
30909            }
30910        }
30911        state.end()
30912    }
30913}
30914
30915/// Defines additional types related to [ManagementDnsZoneBinding].
30916pub mod management_dns_zone_binding {
30917    #[allow(unused_imports)]
30918    use super::*;
30919
30920    /// Enum State defines possible states of binding between the consumer VPC
30921    /// network and the management DNS zone.
30922    ///
30923    /// # Working with unknown values
30924    ///
30925    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
30926    /// additional enum variants at any time. Adding new variants is not considered
30927    /// a breaking change. Applications should write their code in anticipation of:
30928    ///
30929    /// - New values appearing in future releases of the client library, **and**
30930    /// - New values received dynamically, without application changes.
30931    ///
30932    /// Please consult the [Working with enums] section in the user guide for some
30933    /// guidelines.
30934    ///
30935    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
30936    #[derive(Clone, Debug, PartialEq)]
30937    #[non_exhaustive]
30938    pub enum State {
30939        /// The default value. This value should never be used.
30940        Unspecified,
30941        /// The binding is ready.
30942        Active,
30943        /// The binding is being created.
30944        Creating,
30945        /// The binding is being updated.
30946        Updating,
30947        /// The binding is being deleted.
30948        Deleting,
30949        /// The binding has failed.
30950        Failed,
30951        /// If set, the enum was initialized with an unknown value.
30952        ///
30953        /// Applications can examine the value using [State::value] or
30954        /// [State::name].
30955        UnknownValue(state::UnknownValue),
30956    }
30957
30958    #[doc(hidden)]
30959    pub mod state {
30960        #[allow(unused_imports)]
30961        use super::*;
30962        #[derive(Clone, Debug, PartialEq)]
30963        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
30964    }
30965
30966    impl State {
30967        /// Gets the enum value.
30968        ///
30969        /// Returns `None` if the enum contains an unknown value deserialized from
30970        /// the string representation of enums.
30971        pub fn value(&self) -> std::option::Option<i32> {
30972            match self {
30973                Self::Unspecified => std::option::Option::Some(0),
30974                Self::Active => std::option::Option::Some(1),
30975                Self::Creating => std::option::Option::Some(2),
30976                Self::Updating => std::option::Option::Some(3),
30977                Self::Deleting => std::option::Option::Some(4),
30978                Self::Failed => std::option::Option::Some(5),
30979                Self::UnknownValue(u) => u.0.value(),
30980            }
30981        }
30982
30983        /// Gets the enum value as a string.
30984        ///
30985        /// Returns `None` if the enum contains an unknown value deserialized from
30986        /// the integer representation of enums.
30987        pub fn name(&self) -> std::option::Option<&str> {
30988            match self {
30989                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
30990                Self::Active => std::option::Option::Some("ACTIVE"),
30991                Self::Creating => std::option::Option::Some("CREATING"),
30992                Self::Updating => std::option::Option::Some("UPDATING"),
30993                Self::Deleting => std::option::Option::Some("DELETING"),
30994                Self::Failed => std::option::Option::Some("FAILED"),
30995                Self::UnknownValue(u) => u.0.name(),
30996            }
30997        }
30998    }
30999
31000    impl std::default::Default for State {
31001        fn default() -> Self {
31002            use std::convert::From;
31003            Self::from(0)
31004        }
31005    }
31006
31007    impl std::fmt::Display for State {
31008        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
31009            wkt::internal::display_enum(f, self.name(), self.value())
31010        }
31011    }
31012
31013    impl std::convert::From<i32> for State {
31014        fn from(value: i32) -> Self {
31015            match value {
31016                0 => Self::Unspecified,
31017                1 => Self::Active,
31018                2 => Self::Creating,
31019                3 => Self::Updating,
31020                4 => Self::Deleting,
31021                5 => Self::Failed,
31022                _ => Self::UnknownValue(state::UnknownValue(
31023                    wkt::internal::UnknownEnumValue::Integer(value),
31024                )),
31025            }
31026        }
31027    }
31028
31029    impl std::convert::From<&str> for State {
31030        fn from(value: &str) -> Self {
31031            use std::string::ToString;
31032            match value {
31033                "STATE_UNSPECIFIED" => Self::Unspecified,
31034                "ACTIVE" => Self::Active,
31035                "CREATING" => Self::Creating,
31036                "UPDATING" => Self::Updating,
31037                "DELETING" => Self::Deleting,
31038                "FAILED" => Self::Failed,
31039                _ => Self::UnknownValue(state::UnknownValue(
31040                    wkt::internal::UnknownEnumValue::String(value.to_string()),
31041                )),
31042            }
31043        }
31044    }
31045
31046    impl serde::ser::Serialize for State {
31047        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
31048        where
31049            S: serde::Serializer,
31050        {
31051            match self {
31052                Self::Unspecified => serializer.serialize_i32(0),
31053                Self::Active => serializer.serialize_i32(1),
31054                Self::Creating => serializer.serialize_i32(2),
31055                Self::Updating => serializer.serialize_i32(3),
31056                Self::Deleting => serializer.serialize_i32(4),
31057                Self::Failed => serializer.serialize_i32(5),
31058                Self::UnknownValue(u) => u.0.serialize(serializer),
31059            }
31060        }
31061    }
31062
31063    impl<'de> serde::de::Deserialize<'de> for State {
31064        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31065        where
31066            D: serde::Deserializer<'de>,
31067        {
31068            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
31069                ".google.cloud.vmwareengine.v1.ManagementDnsZoneBinding.State",
31070            ))
31071        }
31072    }
31073
31074    /// Required. The relative resource name of the network to bind to the
31075    /// management DNS zone. This network can be a consumer VPC network or a
31076    /// VMware engine network.
31077    #[derive(Clone, Debug, PartialEq)]
31078    #[non_exhaustive]
31079    pub enum BindNetwork {
31080        /// Network to bind is a standard consumer VPC.
31081        /// Specify the name in the following form for consumer
31082        /// VPC network: `projects/{project}/global/networks/{network_id}`.
31083        /// `{project}` can either be a project number or a project ID.
31084        VpcNetwork(std::string::String),
31085        /// Network to bind is a VMware Engine network.
31086        /// Specify the name in the following form for VMware engine network:
31087        /// `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
31088        /// `{project}` can either be a project number or a project ID.
31089        VmwareEngineNetwork(std::string::String),
31090    }
31091}
31092
31093/// VMware Engine network resource that provides connectivity for VMware Engine
31094/// private clouds.
31095#[derive(Clone, Debug, Default, PartialEq)]
31096#[non_exhaustive]
31097pub struct VmwareEngineNetwork {
31098    /// Output only. The resource name of the VMware Engine network.
31099    /// Resource names are schemeless URIs that follow the conventions in
31100    /// <https://cloud.google.com/apis/design/resource_names>.
31101    /// For example:
31102    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
31103    pub name: std::string::String,
31104
31105    /// Output only. Creation time of this resource.
31106    pub create_time: std::option::Option<wkt::Timestamp>,
31107
31108    /// Output only. Last update time of this resource.
31109    pub update_time: std::option::Option<wkt::Timestamp>,
31110
31111    /// User-provided description for this VMware Engine network.
31112    pub description: std::string::String,
31113
31114    /// Output only. VMware Engine service VPC networks that provide connectivity
31115    /// from a private cloud to customer projects, the internet, and other Google
31116    /// Cloud services.
31117    pub vpc_networks: std::vec::Vec<crate::model::vmware_engine_network::VpcNetwork>,
31118
31119    /// Output only. State of the VMware Engine network.
31120    pub state: crate::model::vmware_engine_network::State,
31121
31122    /// Required. VMware Engine network type.
31123    pub r#type: crate::model::vmware_engine_network::Type,
31124
31125    /// Output only. System-generated unique identifier for the resource.
31126    pub uid: std::string::String,
31127
31128    /// Checksum that may be sent on update and delete requests to ensure that the
31129    /// user-provided value is up to date before the server processes a request.
31130    /// The server computes checksums based on the value of other fields in the
31131    /// request.
31132    pub etag: std::string::String,
31133
31134    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
31135}
31136
31137impl VmwareEngineNetwork {
31138    pub fn new() -> Self {
31139        std::default::Default::default()
31140    }
31141
31142    /// Sets the value of [name][crate::model::VmwareEngineNetwork::name].
31143    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
31144        self.name = v.into();
31145        self
31146    }
31147
31148    /// Sets the value of [create_time][crate::model::VmwareEngineNetwork::create_time].
31149    pub fn set_create_time<T>(mut self, v: T) -> Self
31150    where
31151        T: std::convert::Into<wkt::Timestamp>,
31152    {
31153        self.create_time = std::option::Option::Some(v.into());
31154        self
31155    }
31156
31157    /// Sets or clears the value of [create_time][crate::model::VmwareEngineNetwork::create_time].
31158    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
31159    where
31160        T: std::convert::Into<wkt::Timestamp>,
31161    {
31162        self.create_time = v.map(|x| x.into());
31163        self
31164    }
31165
31166    /// Sets the value of [update_time][crate::model::VmwareEngineNetwork::update_time].
31167    pub fn set_update_time<T>(mut self, v: T) -> Self
31168    where
31169        T: std::convert::Into<wkt::Timestamp>,
31170    {
31171        self.update_time = std::option::Option::Some(v.into());
31172        self
31173    }
31174
31175    /// Sets or clears the value of [update_time][crate::model::VmwareEngineNetwork::update_time].
31176    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
31177    where
31178        T: std::convert::Into<wkt::Timestamp>,
31179    {
31180        self.update_time = v.map(|x| x.into());
31181        self
31182    }
31183
31184    /// Sets the value of [description][crate::model::VmwareEngineNetwork::description].
31185    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
31186        self.description = v.into();
31187        self
31188    }
31189
31190    /// Sets the value of [vpc_networks][crate::model::VmwareEngineNetwork::vpc_networks].
31191    pub fn set_vpc_networks<T, V>(mut self, v: T) -> Self
31192    where
31193        T: std::iter::IntoIterator<Item = V>,
31194        V: std::convert::Into<crate::model::vmware_engine_network::VpcNetwork>,
31195    {
31196        use std::iter::Iterator;
31197        self.vpc_networks = v.into_iter().map(|i| i.into()).collect();
31198        self
31199    }
31200
31201    /// Sets the value of [state][crate::model::VmwareEngineNetwork::state].
31202    pub fn set_state<T: std::convert::Into<crate::model::vmware_engine_network::State>>(
31203        mut self,
31204        v: T,
31205    ) -> Self {
31206        self.state = v.into();
31207        self
31208    }
31209
31210    /// Sets the value of [r#type][crate::model::VmwareEngineNetwork::type].
31211    pub fn set_type<T: std::convert::Into<crate::model::vmware_engine_network::Type>>(
31212        mut self,
31213        v: T,
31214    ) -> Self {
31215        self.r#type = v.into();
31216        self
31217    }
31218
31219    /// Sets the value of [uid][crate::model::VmwareEngineNetwork::uid].
31220    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
31221        self.uid = v.into();
31222        self
31223    }
31224
31225    /// Sets the value of [etag][crate::model::VmwareEngineNetwork::etag].
31226    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
31227        self.etag = v.into();
31228        self
31229    }
31230}
31231
31232impl wkt::message::Message for VmwareEngineNetwork {
31233    fn typename() -> &'static str {
31234        "type.googleapis.com/google.cloud.vmwareengine.v1.VmwareEngineNetwork"
31235    }
31236}
31237
31238#[doc(hidden)]
31239impl<'de> serde::de::Deserialize<'de> for VmwareEngineNetwork {
31240    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31241    where
31242        D: serde::Deserializer<'de>,
31243    {
31244        #[allow(non_camel_case_types)]
31245        #[doc(hidden)]
31246        #[derive(PartialEq, Eq, Hash)]
31247        enum __FieldTag {
31248            __name,
31249            __create_time,
31250            __update_time,
31251            __description,
31252            __vpc_networks,
31253            __state,
31254            __type,
31255            __uid,
31256            __etag,
31257            Unknown(std::string::String),
31258        }
31259        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
31260            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31261            where
31262                D: serde::Deserializer<'de>,
31263            {
31264                struct Visitor;
31265                impl<'de> serde::de::Visitor<'de> for Visitor {
31266                    type Value = __FieldTag;
31267                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
31268                        formatter.write_str("a field name for VmwareEngineNetwork")
31269                    }
31270                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
31271                    where
31272                        E: serde::de::Error,
31273                    {
31274                        use std::result::Result::Ok;
31275                        use std::string::ToString;
31276                        match value {
31277                            "name" => Ok(__FieldTag::__name),
31278                            "createTime" => Ok(__FieldTag::__create_time),
31279                            "create_time" => Ok(__FieldTag::__create_time),
31280                            "updateTime" => Ok(__FieldTag::__update_time),
31281                            "update_time" => Ok(__FieldTag::__update_time),
31282                            "description" => Ok(__FieldTag::__description),
31283                            "vpcNetworks" => Ok(__FieldTag::__vpc_networks),
31284                            "vpc_networks" => Ok(__FieldTag::__vpc_networks),
31285                            "state" => Ok(__FieldTag::__state),
31286                            "type" => Ok(__FieldTag::__type),
31287                            "uid" => Ok(__FieldTag::__uid),
31288                            "etag" => Ok(__FieldTag::__etag),
31289                            _ => Ok(__FieldTag::Unknown(value.to_string())),
31290                        }
31291                    }
31292                }
31293                deserializer.deserialize_identifier(Visitor)
31294            }
31295        }
31296        struct Visitor;
31297        impl<'de> serde::de::Visitor<'de> for Visitor {
31298            type Value = VmwareEngineNetwork;
31299            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
31300                formatter.write_str("struct VmwareEngineNetwork")
31301            }
31302            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
31303            where
31304                A: serde::de::MapAccess<'de>,
31305            {
31306                #[allow(unused_imports)]
31307                use serde::de::Error;
31308                use std::option::Option::Some;
31309                let mut fields = std::collections::HashSet::new();
31310                let mut result = Self::Value::new();
31311                while let Some(tag) = map.next_key::<__FieldTag>()? {
31312                    #[allow(clippy::match_single_binding)]
31313                    match tag {
31314                        __FieldTag::__name => {
31315                            if !fields.insert(__FieldTag::__name) {
31316                                return std::result::Result::Err(A::Error::duplicate_field(
31317                                    "multiple values for name",
31318                                ));
31319                            }
31320                            result.name = map
31321                                .next_value::<std::option::Option<std::string::String>>()?
31322                                .unwrap_or_default();
31323                        }
31324                        __FieldTag::__create_time => {
31325                            if !fields.insert(__FieldTag::__create_time) {
31326                                return std::result::Result::Err(A::Error::duplicate_field(
31327                                    "multiple values for create_time",
31328                                ));
31329                            }
31330                            result.create_time =
31331                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
31332                        }
31333                        __FieldTag::__update_time => {
31334                            if !fields.insert(__FieldTag::__update_time) {
31335                                return std::result::Result::Err(A::Error::duplicate_field(
31336                                    "multiple values for update_time",
31337                                ));
31338                            }
31339                            result.update_time =
31340                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
31341                        }
31342                        __FieldTag::__description => {
31343                            if !fields.insert(__FieldTag::__description) {
31344                                return std::result::Result::Err(A::Error::duplicate_field(
31345                                    "multiple values for description",
31346                                ));
31347                            }
31348                            result.description = map
31349                                .next_value::<std::option::Option<std::string::String>>()?
31350                                .unwrap_or_default();
31351                        }
31352                        __FieldTag::__vpc_networks => {
31353                            if !fields.insert(__FieldTag::__vpc_networks) {
31354                                return std::result::Result::Err(A::Error::duplicate_field(
31355                                    "multiple values for vpc_networks",
31356                                ));
31357                            }
31358                            result.vpc_networks = map
31359                                .next_value::<std::option::Option<
31360                                    std::vec::Vec<crate::model::vmware_engine_network::VpcNetwork>,
31361                                >>()?
31362                                .unwrap_or_default();
31363                        }
31364                        __FieldTag::__state => {
31365                            if !fields.insert(__FieldTag::__state) {
31366                                return std::result::Result::Err(A::Error::duplicate_field(
31367                                    "multiple values for state",
31368                                ));
31369                            }
31370                            result.state = map.next_value::<std::option::Option<crate::model::vmware_engine_network::State>>()?.unwrap_or_default();
31371                        }
31372                        __FieldTag::__type => {
31373                            if !fields.insert(__FieldTag::__type) {
31374                                return std::result::Result::Err(A::Error::duplicate_field(
31375                                    "multiple values for type",
31376                                ));
31377                            }
31378                            result.r#type = map.next_value::<std::option::Option<crate::model::vmware_engine_network::Type>>()?.unwrap_or_default();
31379                        }
31380                        __FieldTag::__uid => {
31381                            if !fields.insert(__FieldTag::__uid) {
31382                                return std::result::Result::Err(A::Error::duplicate_field(
31383                                    "multiple values for uid",
31384                                ));
31385                            }
31386                            result.uid = map
31387                                .next_value::<std::option::Option<std::string::String>>()?
31388                                .unwrap_or_default();
31389                        }
31390                        __FieldTag::__etag => {
31391                            if !fields.insert(__FieldTag::__etag) {
31392                                return std::result::Result::Err(A::Error::duplicate_field(
31393                                    "multiple values for etag",
31394                                ));
31395                            }
31396                            result.etag = map
31397                                .next_value::<std::option::Option<std::string::String>>()?
31398                                .unwrap_or_default();
31399                        }
31400                        __FieldTag::Unknown(key) => {
31401                            let value = map.next_value::<serde_json::Value>()?;
31402                            result._unknown_fields.insert(key, value);
31403                        }
31404                    }
31405                }
31406                std::result::Result::Ok(result)
31407            }
31408        }
31409        deserializer.deserialize_any(Visitor)
31410    }
31411}
31412
31413#[doc(hidden)]
31414impl serde::ser::Serialize for VmwareEngineNetwork {
31415    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
31416    where
31417        S: serde::ser::Serializer,
31418    {
31419        use serde::ser::SerializeMap;
31420        #[allow(unused_imports)]
31421        use std::option::Option::Some;
31422        let mut state = serializer.serialize_map(std::option::Option::None)?;
31423        if !self.name.is_empty() {
31424            state.serialize_entry("name", &self.name)?;
31425        }
31426        if self.create_time.is_some() {
31427            state.serialize_entry("createTime", &self.create_time)?;
31428        }
31429        if self.update_time.is_some() {
31430            state.serialize_entry("updateTime", &self.update_time)?;
31431        }
31432        if !self.description.is_empty() {
31433            state.serialize_entry("description", &self.description)?;
31434        }
31435        if !self.vpc_networks.is_empty() {
31436            state.serialize_entry("vpcNetworks", &self.vpc_networks)?;
31437        }
31438        if !wkt::internal::is_default(&self.state) {
31439            state.serialize_entry("state", &self.state)?;
31440        }
31441        if !wkt::internal::is_default(&self.r#type) {
31442            state.serialize_entry("type", &self.r#type)?;
31443        }
31444        if !self.uid.is_empty() {
31445            state.serialize_entry("uid", &self.uid)?;
31446        }
31447        if !self.etag.is_empty() {
31448            state.serialize_entry("etag", &self.etag)?;
31449        }
31450        if !self._unknown_fields.is_empty() {
31451            for (key, value) in self._unknown_fields.iter() {
31452                state.serialize_entry(key, &value)?;
31453            }
31454        }
31455        state.end()
31456    }
31457}
31458
31459/// Defines additional types related to [VmwareEngineNetwork].
31460pub mod vmware_engine_network {
31461    #[allow(unused_imports)]
31462    use super::*;
31463
31464    /// Represents a VMware Engine VPC network that is managed by a
31465    /// VMware Engine network resource.
31466    #[derive(Clone, Debug, Default, PartialEq)]
31467    #[non_exhaustive]
31468    pub struct VpcNetwork {
31469        /// Output only. Type of VPC network (INTRANET, INTERNET, or
31470        /// GOOGLE_CLOUD)
31471        pub r#type: crate::model::vmware_engine_network::vpc_network::Type,
31472
31473        /// Output only. The relative resource name of the service VPC network this
31474        /// VMware Engine network is attached to. For example:
31475        /// `projects/123123/global/networks/my-network`
31476        pub network: std::string::String,
31477
31478        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
31479    }
31480
31481    impl VpcNetwork {
31482        pub fn new() -> Self {
31483            std::default::Default::default()
31484        }
31485
31486        /// Sets the value of [r#type][crate::model::vmware_engine_network::VpcNetwork::type].
31487        pub fn set_type<
31488            T: std::convert::Into<crate::model::vmware_engine_network::vpc_network::Type>,
31489        >(
31490            mut self,
31491            v: T,
31492        ) -> Self {
31493            self.r#type = v.into();
31494            self
31495        }
31496
31497        /// Sets the value of [network][crate::model::vmware_engine_network::VpcNetwork::network].
31498        pub fn set_network<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
31499            self.network = v.into();
31500            self
31501        }
31502    }
31503
31504    impl wkt::message::Message for VpcNetwork {
31505        fn typename() -> &'static str {
31506            "type.googleapis.com/google.cloud.vmwareengine.v1.VmwareEngineNetwork.VpcNetwork"
31507        }
31508    }
31509
31510    #[doc(hidden)]
31511    impl<'de> serde::de::Deserialize<'de> for VpcNetwork {
31512        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31513        where
31514            D: serde::Deserializer<'de>,
31515        {
31516            #[allow(non_camel_case_types)]
31517            #[doc(hidden)]
31518            #[derive(PartialEq, Eq, Hash)]
31519            enum __FieldTag {
31520                __type,
31521                __network,
31522                Unknown(std::string::String),
31523            }
31524            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
31525                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31526                where
31527                    D: serde::Deserializer<'de>,
31528                {
31529                    struct Visitor;
31530                    impl<'de> serde::de::Visitor<'de> for Visitor {
31531                        type Value = __FieldTag;
31532                        fn expecting(
31533                            &self,
31534                            formatter: &mut std::fmt::Formatter,
31535                        ) -> std::fmt::Result {
31536                            formatter.write_str("a field name for VpcNetwork")
31537                        }
31538                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
31539                        where
31540                            E: serde::de::Error,
31541                        {
31542                            use std::result::Result::Ok;
31543                            use std::string::ToString;
31544                            match value {
31545                                "type" => Ok(__FieldTag::__type),
31546                                "network" => Ok(__FieldTag::__network),
31547                                _ => Ok(__FieldTag::Unknown(value.to_string())),
31548                            }
31549                        }
31550                    }
31551                    deserializer.deserialize_identifier(Visitor)
31552                }
31553            }
31554            struct Visitor;
31555            impl<'de> serde::de::Visitor<'de> for Visitor {
31556                type Value = VpcNetwork;
31557                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
31558                    formatter.write_str("struct VpcNetwork")
31559                }
31560                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
31561                where
31562                    A: serde::de::MapAccess<'de>,
31563                {
31564                    #[allow(unused_imports)]
31565                    use serde::de::Error;
31566                    use std::option::Option::Some;
31567                    let mut fields = std::collections::HashSet::new();
31568                    let mut result = Self::Value::new();
31569                    while let Some(tag) = map.next_key::<__FieldTag>()? {
31570                        #[allow(clippy::match_single_binding)]
31571                        match tag {
31572                            __FieldTag::__type => {
31573                                if !fields.insert(__FieldTag::__type) {
31574                                    return std::result::Result::Err(A::Error::duplicate_field(
31575                                        "multiple values for type",
31576                                    ));
31577                                }
31578                                result.r#type = map
31579                                    .next_value::<std::option::Option<
31580                                        crate::model::vmware_engine_network::vpc_network::Type,
31581                                    >>()?
31582                                    .unwrap_or_default();
31583                            }
31584                            __FieldTag::__network => {
31585                                if !fields.insert(__FieldTag::__network) {
31586                                    return std::result::Result::Err(A::Error::duplicate_field(
31587                                        "multiple values for network",
31588                                    ));
31589                                }
31590                                result.network = map
31591                                    .next_value::<std::option::Option<std::string::String>>()?
31592                                    .unwrap_or_default();
31593                            }
31594                            __FieldTag::Unknown(key) => {
31595                                let value = map.next_value::<serde_json::Value>()?;
31596                                result._unknown_fields.insert(key, value);
31597                            }
31598                        }
31599                    }
31600                    std::result::Result::Ok(result)
31601                }
31602            }
31603            deserializer.deserialize_any(Visitor)
31604        }
31605    }
31606
31607    #[doc(hidden)]
31608    impl serde::ser::Serialize for VpcNetwork {
31609        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
31610        where
31611            S: serde::ser::Serializer,
31612        {
31613            use serde::ser::SerializeMap;
31614            #[allow(unused_imports)]
31615            use std::option::Option::Some;
31616            let mut state = serializer.serialize_map(std::option::Option::None)?;
31617            if !wkt::internal::is_default(&self.r#type) {
31618                state.serialize_entry("type", &self.r#type)?;
31619            }
31620            if !self.network.is_empty() {
31621                state.serialize_entry("network", &self.network)?;
31622            }
31623            if !self._unknown_fields.is_empty() {
31624                for (key, value) in self._unknown_fields.iter() {
31625                    state.serialize_entry(key, &value)?;
31626                }
31627            }
31628            state.end()
31629        }
31630    }
31631
31632    /// Defines additional types related to [VpcNetwork].
31633    pub mod vpc_network {
31634        #[allow(unused_imports)]
31635        use super::*;
31636
31637        /// Enum Type defines possible types of a VMware Engine network controlled
31638        /// service.
31639        ///
31640        /// # Working with unknown values
31641        ///
31642        /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
31643        /// additional enum variants at any time. Adding new variants is not considered
31644        /// a breaking change. Applications should write their code in anticipation of:
31645        ///
31646        /// - New values appearing in future releases of the client library, **and**
31647        /// - New values received dynamically, without application changes.
31648        ///
31649        /// Please consult the [Working with enums] section in the user guide for some
31650        /// guidelines.
31651        ///
31652        /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
31653        #[derive(Clone, Debug, PartialEq)]
31654        #[non_exhaustive]
31655        pub enum Type {
31656            /// The default value. This value should never be used.
31657            Unspecified,
31658            /// VPC network that will be peered with a consumer VPC network or the
31659            /// intranet VPC of another VMware Engine network. Access a private cloud
31660            /// through Compute Engine VMs on a peered VPC network or an on-premises
31661            /// resource connected to a peered consumer VPC network.
31662            Intranet,
31663            /// VPC network used for internet access to and from a private cloud.
31664            Internet,
31665            /// VPC network used for access to Google Cloud services like
31666            /// Cloud Storage.
31667            GoogleCloud,
31668            /// If set, the enum was initialized with an unknown value.
31669            ///
31670            /// Applications can examine the value using [Type::value] or
31671            /// [Type::name].
31672            UnknownValue(r#type::UnknownValue),
31673        }
31674
31675        #[doc(hidden)]
31676        pub mod r#type {
31677            #[allow(unused_imports)]
31678            use super::*;
31679            #[derive(Clone, Debug, PartialEq)]
31680            pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
31681        }
31682
31683        impl Type {
31684            /// Gets the enum value.
31685            ///
31686            /// Returns `None` if the enum contains an unknown value deserialized from
31687            /// the string representation of enums.
31688            pub fn value(&self) -> std::option::Option<i32> {
31689                match self {
31690                    Self::Unspecified => std::option::Option::Some(0),
31691                    Self::Intranet => std::option::Option::Some(1),
31692                    Self::Internet => std::option::Option::Some(2),
31693                    Self::GoogleCloud => std::option::Option::Some(3),
31694                    Self::UnknownValue(u) => u.0.value(),
31695                }
31696            }
31697
31698            /// Gets the enum value as a string.
31699            ///
31700            /// Returns `None` if the enum contains an unknown value deserialized from
31701            /// the integer representation of enums.
31702            pub fn name(&self) -> std::option::Option<&str> {
31703                match self {
31704                    Self::Unspecified => std::option::Option::Some("TYPE_UNSPECIFIED"),
31705                    Self::Intranet => std::option::Option::Some("INTRANET"),
31706                    Self::Internet => std::option::Option::Some("INTERNET"),
31707                    Self::GoogleCloud => std::option::Option::Some("GOOGLE_CLOUD"),
31708                    Self::UnknownValue(u) => u.0.name(),
31709                }
31710            }
31711        }
31712
31713        impl std::default::Default for Type {
31714            fn default() -> Self {
31715                use std::convert::From;
31716                Self::from(0)
31717            }
31718        }
31719
31720        impl std::fmt::Display for Type {
31721            fn fmt(
31722                &self,
31723                f: &mut std::fmt::Formatter<'_>,
31724            ) -> std::result::Result<(), std::fmt::Error> {
31725                wkt::internal::display_enum(f, self.name(), self.value())
31726            }
31727        }
31728
31729        impl std::convert::From<i32> for Type {
31730            fn from(value: i32) -> Self {
31731                match value {
31732                    0 => Self::Unspecified,
31733                    1 => Self::Intranet,
31734                    2 => Self::Internet,
31735                    3 => Self::GoogleCloud,
31736                    _ => Self::UnknownValue(r#type::UnknownValue(
31737                        wkt::internal::UnknownEnumValue::Integer(value),
31738                    )),
31739                }
31740            }
31741        }
31742
31743        impl std::convert::From<&str> for Type {
31744            fn from(value: &str) -> Self {
31745                use std::string::ToString;
31746                match value {
31747                    "TYPE_UNSPECIFIED" => Self::Unspecified,
31748                    "INTRANET" => Self::Intranet,
31749                    "INTERNET" => Self::Internet,
31750                    "GOOGLE_CLOUD" => Self::GoogleCloud,
31751                    _ => Self::UnknownValue(r#type::UnknownValue(
31752                        wkt::internal::UnknownEnumValue::String(value.to_string()),
31753                    )),
31754                }
31755            }
31756        }
31757
31758        impl serde::ser::Serialize for Type {
31759            fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
31760            where
31761                S: serde::Serializer,
31762            {
31763                match self {
31764                    Self::Unspecified => serializer.serialize_i32(0),
31765                    Self::Intranet => serializer.serialize_i32(1),
31766                    Self::Internet => serializer.serialize_i32(2),
31767                    Self::GoogleCloud => serializer.serialize_i32(3),
31768                    Self::UnknownValue(u) => u.0.serialize(serializer),
31769                }
31770            }
31771        }
31772
31773        impl<'de> serde::de::Deserialize<'de> for Type {
31774            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31775            where
31776                D: serde::Deserializer<'de>,
31777            {
31778                deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
31779                    ".google.cloud.vmwareengine.v1.VmwareEngineNetwork.VpcNetwork.Type",
31780                ))
31781            }
31782        }
31783    }
31784
31785    /// Enum State defines possible states of VMware Engine network.
31786    ///
31787    /// # Working with unknown values
31788    ///
31789    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
31790    /// additional enum variants at any time. Adding new variants is not considered
31791    /// a breaking change. Applications should write their code in anticipation of:
31792    ///
31793    /// - New values appearing in future releases of the client library, **and**
31794    /// - New values received dynamically, without application changes.
31795    ///
31796    /// Please consult the [Working with enums] section in the user guide for some
31797    /// guidelines.
31798    ///
31799    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
31800    #[derive(Clone, Debug, PartialEq)]
31801    #[non_exhaustive]
31802    pub enum State {
31803        /// The default value. This value is used if the state is omitted.
31804        Unspecified,
31805        /// The VMware Engine network is being created.
31806        Creating,
31807        /// The VMware Engine network is ready.
31808        Active,
31809        /// The VMware Engine network is being updated.
31810        Updating,
31811        /// The VMware Engine network is being deleted.
31812        Deleting,
31813        /// If set, the enum was initialized with an unknown value.
31814        ///
31815        /// Applications can examine the value using [State::value] or
31816        /// [State::name].
31817        UnknownValue(state::UnknownValue),
31818    }
31819
31820    #[doc(hidden)]
31821    pub mod state {
31822        #[allow(unused_imports)]
31823        use super::*;
31824        #[derive(Clone, Debug, PartialEq)]
31825        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
31826    }
31827
31828    impl State {
31829        /// Gets the enum value.
31830        ///
31831        /// Returns `None` if the enum contains an unknown value deserialized from
31832        /// the string representation of enums.
31833        pub fn value(&self) -> std::option::Option<i32> {
31834            match self {
31835                Self::Unspecified => std::option::Option::Some(0),
31836                Self::Creating => std::option::Option::Some(1),
31837                Self::Active => std::option::Option::Some(2),
31838                Self::Updating => std::option::Option::Some(3),
31839                Self::Deleting => std::option::Option::Some(4),
31840                Self::UnknownValue(u) => u.0.value(),
31841            }
31842        }
31843
31844        /// Gets the enum value as a string.
31845        ///
31846        /// Returns `None` if the enum contains an unknown value deserialized from
31847        /// the integer representation of enums.
31848        pub fn name(&self) -> std::option::Option<&str> {
31849            match self {
31850                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
31851                Self::Creating => std::option::Option::Some("CREATING"),
31852                Self::Active => std::option::Option::Some("ACTIVE"),
31853                Self::Updating => std::option::Option::Some("UPDATING"),
31854                Self::Deleting => std::option::Option::Some("DELETING"),
31855                Self::UnknownValue(u) => u.0.name(),
31856            }
31857        }
31858    }
31859
31860    impl std::default::Default for State {
31861        fn default() -> Self {
31862            use std::convert::From;
31863            Self::from(0)
31864        }
31865    }
31866
31867    impl std::fmt::Display for State {
31868        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
31869            wkt::internal::display_enum(f, self.name(), self.value())
31870        }
31871    }
31872
31873    impl std::convert::From<i32> for State {
31874        fn from(value: i32) -> Self {
31875            match value {
31876                0 => Self::Unspecified,
31877                1 => Self::Creating,
31878                2 => Self::Active,
31879                3 => Self::Updating,
31880                4 => Self::Deleting,
31881                _ => Self::UnknownValue(state::UnknownValue(
31882                    wkt::internal::UnknownEnumValue::Integer(value),
31883                )),
31884            }
31885        }
31886    }
31887
31888    impl std::convert::From<&str> for State {
31889        fn from(value: &str) -> Self {
31890            use std::string::ToString;
31891            match value {
31892                "STATE_UNSPECIFIED" => Self::Unspecified,
31893                "CREATING" => Self::Creating,
31894                "ACTIVE" => Self::Active,
31895                "UPDATING" => Self::Updating,
31896                "DELETING" => Self::Deleting,
31897                _ => Self::UnknownValue(state::UnknownValue(
31898                    wkt::internal::UnknownEnumValue::String(value.to_string()),
31899                )),
31900            }
31901        }
31902    }
31903
31904    impl serde::ser::Serialize for State {
31905        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
31906        where
31907            S: serde::Serializer,
31908        {
31909            match self {
31910                Self::Unspecified => serializer.serialize_i32(0),
31911                Self::Creating => serializer.serialize_i32(1),
31912                Self::Active => serializer.serialize_i32(2),
31913                Self::Updating => serializer.serialize_i32(3),
31914                Self::Deleting => serializer.serialize_i32(4),
31915                Self::UnknownValue(u) => u.0.serialize(serializer),
31916            }
31917        }
31918    }
31919
31920    impl<'de> serde::de::Deserialize<'de> for State {
31921        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
31922        where
31923            D: serde::Deserializer<'de>,
31924        {
31925            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
31926                ".google.cloud.vmwareengine.v1.VmwareEngineNetwork.State",
31927            ))
31928        }
31929    }
31930
31931    /// Enum Type defines possible types of VMware Engine network.
31932    ///
31933    /// # Working with unknown values
31934    ///
31935    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
31936    /// additional enum variants at any time. Adding new variants is not considered
31937    /// a breaking change. Applications should write their code in anticipation of:
31938    ///
31939    /// - New values appearing in future releases of the client library, **and**
31940    /// - New values received dynamically, without application changes.
31941    ///
31942    /// Please consult the [Working with enums] section in the user guide for some
31943    /// guidelines.
31944    ///
31945    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
31946    #[derive(Clone, Debug, PartialEq)]
31947    #[non_exhaustive]
31948    pub enum Type {
31949        /// The default value. This value should never be used.
31950        Unspecified,
31951        /// Network type used by private clouds created in projects without a network
31952        /// of type `STANDARD`. This network type is no longer used for new VMware
31953        /// Engine private cloud deployments.
31954        Legacy,
31955        /// Standard network type used for private cloud connectivity.
31956        Standard,
31957        /// If set, the enum was initialized with an unknown value.
31958        ///
31959        /// Applications can examine the value using [Type::value] or
31960        /// [Type::name].
31961        UnknownValue(r#type::UnknownValue),
31962    }
31963
31964    #[doc(hidden)]
31965    pub mod r#type {
31966        #[allow(unused_imports)]
31967        use super::*;
31968        #[derive(Clone, Debug, PartialEq)]
31969        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
31970    }
31971
31972    impl Type {
31973        /// Gets the enum value.
31974        ///
31975        /// Returns `None` if the enum contains an unknown value deserialized from
31976        /// the string representation of enums.
31977        pub fn value(&self) -> std::option::Option<i32> {
31978            match self {
31979                Self::Unspecified => std::option::Option::Some(0),
31980                Self::Legacy => std::option::Option::Some(1),
31981                Self::Standard => std::option::Option::Some(2),
31982                Self::UnknownValue(u) => u.0.value(),
31983            }
31984        }
31985
31986        /// Gets the enum value as a string.
31987        ///
31988        /// Returns `None` if the enum contains an unknown value deserialized from
31989        /// the integer representation of enums.
31990        pub fn name(&self) -> std::option::Option<&str> {
31991            match self {
31992                Self::Unspecified => std::option::Option::Some("TYPE_UNSPECIFIED"),
31993                Self::Legacy => std::option::Option::Some("LEGACY"),
31994                Self::Standard => std::option::Option::Some("STANDARD"),
31995                Self::UnknownValue(u) => u.0.name(),
31996            }
31997        }
31998    }
31999
32000    impl std::default::Default for Type {
32001        fn default() -> Self {
32002            use std::convert::From;
32003            Self::from(0)
32004        }
32005    }
32006
32007    impl std::fmt::Display for Type {
32008        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
32009            wkt::internal::display_enum(f, self.name(), self.value())
32010        }
32011    }
32012
32013    impl std::convert::From<i32> for Type {
32014        fn from(value: i32) -> Self {
32015            match value {
32016                0 => Self::Unspecified,
32017                1 => Self::Legacy,
32018                2 => Self::Standard,
32019                _ => Self::UnknownValue(r#type::UnknownValue(
32020                    wkt::internal::UnknownEnumValue::Integer(value),
32021                )),
32022            }
32023        }
32024    }
32025
32026    impl std::convert::From<&str> for Type {
32027        fn from(value: &str) -> Self {
32028            use std::string::ToString;
32029            match value {
32030                "TYPE_UNSPECIFIED" => Self::Unspecified,
32031                "LEGACY" => Self::Legacy,
32032                "STANDARD" => Self::Standard,
32033                _ => Self::UnknownValue(r#type::UnknownValue(
32034                    wkt::internal::UnknownEnumValue::String(value.to_string()),
32035                )),
32036            }
32037        }
32038    }
32039
32040    impl serde::ser::Serialize for Type {
32041        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
32042        where
32043            S: serde::Serializer,
32044        {
32045            match self {
32046                Self::Unspecified => serializer.serialize_i32(0),
32047                Self::Legacy => serializer.serialize_i32(1),
32048                Self::Standard => serializer.serialize_i32(2),
32049                Self::UnknownValue(u) => u.0.serialize(serializer),
32050            }
32051        }
32052    }
32053
32054    impl<'de> serde::de::Deserialize<'de> for Type {
32055        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
32056        where
32057            D: serde::Deserializer<'de>,
32058        {
32059            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
32060                ".google.cloud.vmwareengine.v1.VmwareEngineNetwork.Type",
32061            ))
32062        }
32063    }
32064}
32065
32066/// Private connection resource that provides connectivity for VMware Engine
32067/// private clouds.
32068#[derive(Clone, Debug, Default, PartialEq)]
32069#[non_exhaustive]
32070pub struct PrivateConnection {
32071    /// Output only. The resource name of the private connection.
32072    /// Resource names are schemeless URIs that follow the conventions in
32073    /// <https://cloud.google.com/apis/design/resource_names>.
32074    /// For example:
32075    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
32076    pub name: std::string::String,
32077
32078    /// Output only. Creation time of this resource.
32079    pub create_time: std::option::Option<wkt::Timestamp>,
32080
32081    /// Output only. Last update time of this resource.
32082    pub update_time: std::option::Option<wkt::Timestamp>,
32083
32084    /// Optional. User-provided description for this private connection.
32085    pub description: std::string::String,
32086
32087    /// Output only. State of the private connection.
32088    pub state: crate::model::private_connection::State,
32089
32090    /// Required. The relative resource name of Legacy VMware Engine network.
32091    /// Specify the name in the following form:
32092    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
32093    /// where `{project}`, `{location}` will be same as specified in private
32094    /// connection resource name and `{vmware_engine_network_id}` will be in the
32095    /// form of `{location}`-default e.g.
32096    /// projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default.
32097    pub vmware_engine_network: std::string::String,
32098
32099    /// Output only. The canonical name of the VMware Engine network in the form:
32100    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
32101    pub vmware_engine_network_canonical: std::string::String,
32102
32103    /// Required. Private connection type.
32104    pub r#type: crate::model::private_connection::Type,
32105
32106    /// Output only. VPC network peering id between given network VPC and
32107    /// VMwareEngineNetwork.
32108    pub peering_id: std::string::String,
32109
32110    /// Optional. Routing Mode.
32111    /// Default value is set to GLOBAL.
32112    /// For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or
32113    /// REGIONAL, for other types only GLOBAL is supported.
32114    pub routing_mode: crate::model::private_connection::RoutingMode,
32115
32116    /// Output only. System-generated unique identifier for the resource.
32117    pub uid: std::string::String,
32118
32119    /// Required. Service network to create private connection.
32120    /// Specify the name in the following form:
32121    /// `projects/{project}/global/networks/{network_id}`
32122    /// For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking
32123    /// VPC, e.g. projects/project-tp/global/networks/servicenetworking.
32124    /// For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC,
32125    /// e.g. projects/project-tp/global/networks/netapp-tenant-vpc.
32126    /// For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g.
32127    /// projects/project-tp/global/networks/dell-tenant-vpc.
32128    /// For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or
32129    /// any other producer VPC to which the VMware Engine Network needs to be
32130    /// connected, e.g. projects/project/global/networks/vpc.
32131    pub service_network: std::string::String,
32132
32133    /// Output only. Peering state between service network and VMware Engine
32134    /// network.
32135    pub peering_state: crate::model::private_connection::PeeringState,
32136
32137    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
32138}
32139
32140impl PrivateConnection {
32141    pub fn new() -> Self {
32142        std::default::Default::default()
32143    }
32144
32145    /// Sets the value of [name][crate::model::PrivateConnection::name].
32146    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
32147        self.name = v.into();
32148        self
32149    }
32150
32151    /// Sets the value of [create_time][crate::model::PrivateConnection::create_time].
32152    pub fn set_create_time<T>(mut self, v: T) -> Self
32153    where
32154        T: std::convert::Into<wkt::Timestamp>,
32155    {
32156        self.create_time = std::option::Option::Some(v.into());
32157        self
32158    }
32159
32160    /// Sets or clears the value of [create_time][crate::model::PrivateConnection::create_time].
32161    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
32162    where
32163        T: std::convert::Into<wkt::Timestamp>,
32164    {
32165        self.create_time = v.map(|x| x.into());
32166        self
32167    }
32168
32169    /// Sets the value of [update_time][crate::model::PrivateConnection::update_time].
32170    pub fn set_update_time<T>(mut self, v: T) -> Self
32171    where
32172        T: std::convert::Into<wkt::Timestamp>,
32173    {
32174        self.update_time = std::option::Option::Some(v.into());
32175        self
32176    }
32177
32178    /// Sets or clears the value of [update_time][crate::model::PrivateConnection::update_time].
32179    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
32180    where
32181        T: std::convert::Into<wkt::Timestamp>,
32182    {
32183        self.update_time = v.map(|x| x.into());
32184        self
32185    }
32186
32187    /// Sets the value of [description][crate::model::PrivateConnection::description].
32188    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
32189        self.description = v.into();
32190        self
32191    }
32192
32193    /// Sets the value of [state][crate::model::PrivateConnection::state].
32194    pub fn set_state<T: std::convert::Into<crate::model::private_connection::State>>(
32195        mut self,
32196        v: T,
32197    ) -> Self {
32198        self.state = v.into();
32199        self
32200    }
32201
32202    /// Sets the value of [vmware_engine_network][crate::model::PrivateConnection::vmware_engine_network].
32203    pub fn set_vmware_engine_network<T: std::convert::Into<std::string::String>>(
32204        mut self,
32205        v: T,
32206    ) -> Self {
32207        self.vmware_engine_network = v.into();
32208        self
32209    }
32210
32211    /// Sets the value of [vmware_engine_network_canonical][crate::model::PrivateConnection::vmware_engine_network_canonical].
32212    pub fn set_vmware_engine_network_canonical<T: std::convert::Into<std::string::String>>(
32213        mut self,
32214        v: T,
32215    ) -> Self {
32216        self.vmware_engine_network_canonical = v.into();
32217        self
32218    }
32219
32220    /// Sets the value of [r#type][crate::model::PrivateConnection::type].
32221    pub fn set_type<T: std::convert::Into<crate::model::private_connection::Type>>(
32222        mut self,
32223        v: T,
32224    ) -> Self {
32225        self.r#type = v.into();
32226        self
32227    }
32228
32229    /// Sets the value of [peering_id][crate::model::PrivateConnection::peering_id].
32230    pub fn set_peering_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
32231        self.peering_id = v.into();
32232        self
32233    }
32234
32235    /// Sets the value of [routing_mode][crate::model::PrivateConnection::routing_mode].
32236    pub fn set_routing_mode<
32237        T: std::convert::Into<crate::model::private_connection::RoutingMode>,
32238    >(
32239        mut self,
32240        v: T,
32241    ) -> Self {
32242        self.routing_mode = v.into();
32243        self
32244    }
32245
32246    /// Sets the value of [uid][crate::model::PrivateConnection::uid].
32247    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
32248        self.uid = v.into();
32249        self
32250    }
32251
32252    /// Sets the value of [service_network][crate::model::PrivateConnection::service_network].
32253    pub fn set_service_network<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
32254        self.service_network = v.into();
32255        self
32256    }
32257
32258    /// Sets the value of [peering_state][crate::model::PrivateConnection::peering_state].
32259    pub fn set_peering_state<
32260        T: std::convert::Into<crate::model::private_connection::PeeringState>,
32261    >(
32262        mut self,
32263        v: T,
32264    ) -> Self {
32265        self.peering_state = v.into();
32266        self
32267    }
32268}
32269
32270impl wkt::message::Message for PrivateConnection {
32271    fn typename() -> &'static str {
32272        "type.googleapis.com/google.cloud.vmwareengine.v1.PrivateConnection"
32273    }
32274}
32275
32276#[doc(hidden)]
32277impl<'de> serde::de::Deserialize<'de> for PrivateConnection {
32278    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
32279    where
32280        D: serde::Deserializer<'de>,
32281    {
32282        #[allow(non_camel_case_types)]
32283        #[doc(hidden)]
32284        #[derive(PartialEq, Eq, Hash)]
32285        enum __FieldTag {
32286            __name,
32287            __create_time,
32288            __update_time,
32289            __description,
32290            __state,
32291            __vmware_engine_network,
32292            __vmware_engine_network_canonical,
32293            __type,
32294            __peering_id,
32295            __routing_mode,
32296            __uid,
32297            __service_network,
32298            __peering_state,
32299            Unknown(std::string::String),
32300        }
32301        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
32302            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
32303            where
32304                D: serde::Deserializer<'de>,
32305            {
32306                struct Visitor;
32307                impl<'de> serde::de::Visitor<'de> for Visitor {
32308                    type Value = __FieldTag;
32309                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
32310                        formatter.write_str("a field name for PrivateConnection")
32311                    }
32312                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
32313                    where
32314                        E: serde::de::Error,
32315                    {
32316                        use std::result::Result::Ok;
32317                        use std::string::ToString;
32318                        match value {
32319                            "name" => Ok(__FieldTag::__name),
32320                            "createTime" => Ok(__FieldTag::__create_time),
32321                            "create_time" => Ok(__FieldTag::__create_time),
32322                            "updateTime" => Ok(__FieldTag::__update_time),
32323                            "update_time" => Ok(__FieldTag::__update_time),
32324                            "description" => Ok(__FieldTag::__description),
32325                            "state" => Ok(__FieldTag::__state),
32326                            "vmwareEngineNetwork" => Ok(__FieldTag::__vmware_engine_network),
32327                            "vmware_engine_network" => Ok(__FieldTag::__vmware_engine_network),
32328                            "vmwareEngineNetworkCanonical" => {
32329                                Ok(__FieldTag::__vmware_engine_network_canonical)
32330                            }
32331                            "vmware_engine_network_canonical" => {
32332                                Ok(__FieldTag::__vmware_engine_network_canonical)
32333                            }
32334                            "type" => Ok(__FieldTag::__type),
32335                            "peeringId" => Ok(__FieldTag::__peering_id),
32336                            "peering_id" => Ok(__FieldTag::__peering_id),
32337                            "routingMode" => Ok(__FieldTag::__routing_mode),
32338                            "routing_mode" => Ok(__FieldTag::__routing_mode),
32339                            "uid" => Ok(__FieldTag::__uid),
32340                            "serviceNetwork" => Ok(__FieldTag::__service_network),
32341                            "service_network" => Ok(__FieldTag::__service_network),
32342                            "peeringState" => Ok(__FieldTag::__peering_state),
32343                            "peering_state" => Ok(__FieldTag::__peering_state),
32344                            _ => Ok(__FieldTag::Unknown(value.to_string())),
32345                        }
32346                    }
32347                }
32348                deserializer.deserialize_identifier(Visitor)
32349            }
32350        }
32351        struct Visitor;
32352        impl<'de> serde::de::Visitor<'de> for Visitor {
32353            type Value = PrivateConnection;
32354            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
32355                formatter.write_str("struct PrivateConnection")
32356            }
32357            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
32358            where
32359                A: serde::de::MapAccess<'de>,
32360            {
32361                #[allow(unused_imports)]
32362                use serde::de::Error;
32363                use std::option::Option::Some;
32364                let mut fields = std::collections::HashSet::new();
32365                let mut result = Self::Value::new();
32366                while let Some(tag) = map.next_key::<__FieldTag>()? {
32367                    #[allow(clippy::match_single_binding)]
32368                    match tag {
32369                        __FieldTag::__name => {
32370                            if !fields.insert(__FieldTag::__name) {
32371                                return std::result::Result::Err(A::Error::duplicate_field(
32372                                    "multiple values for name",
32373                                ));
32374                            }
32375                            result.name = map
32376                                .next_value::<std::option::Option<std::string::String>>()?
32377                                .unwrap_or_default();
32378                        }
32379                        __FieldTag::__create_time => {
32380                            if !fields.insert(__FieldTag::__create_time) {
32381                                return std::result::Result::Err(A::Error::duplicate_field(
32382                                    "multiple values for create_time",
32383                                ));
32384                            }
32385                            result.create_time =
32386                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
32387                        }
32388                        __FieldTag::__update_time => {
32389                            if !fields.insert(__FieldTag::__update_time) {
32390                                return std::result::Result::Err(A::Error::duplicate_field(
32391                                    "multiple values for update_time",
32392                                ));
32393                            }
32394                            result.update_time =
32395                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
32396                        }
32397                        __FieldTag::__description => {
32398                            if !fields.insert(__FieldTag::__description) {
32399                                return std::result::Result::Err(A::Error::duplicate_field(
32400                                    "multiple values for description",
32401                                ));
32402                            }
32403                            result.description = map
32404                                .next_value::<std::option::Option<std::string::String>>()?
32405                                .unwrap_or_default();
32406                        }
32407                        __FieldTag::__state => {
32408                            if !fields.insert(__FieldTag::__state) {
32409                                return std::result::Result::Err(A::Error::duplicate_field(
32410                                    "multiple values for state",
32411                                ));
32412                            }
32413                            result.state = map.next_value::<std::option::Option<crate::model::private_connection::State>>()?.unwrap_or_default();
32414                        }
32415                        __FieldTag::__vmware_engine_network => {
32416                            if !fields.insert(__FieldTag::__vmware_engine_network) {
32417                                return std::result::Result::Err(A::Error::duplicate_field(
32418                                    "multiple values for vmware_engine_network",
32419                                ));
32420                            }
32421                            result.vmware_engine_network = map
32422                                .next_value::<std::option::Option<std::string::String>>()?
32423                                .unwrap_or_default();
32424                        }
32425                        __FieldTag::__vmware_engine_network_canonical => {
32426                            if !fields.insert(__FieldTag::__vmware_engine_network_canonical) {
32427                                return std::result::Result::Err(A::Error::duplicate_field(
32428                                    "multiple values for vmware_engine_network_canonical",
32429                                ));
32430                            }
32431                            result.vmware_engine_network_canonical = map
32432                                .next_value::<std::option::Option<std::string::String>>()?
32433                                .unwrap_or_default();
32434                        }
32435                        __FieldTag::__type => {
32436                            if !fields.insert(__FieldTag::__type) {
32437                                return std::result::Result::Err(A::Error::duplicate_field(
32438                                    "multiple values for type",
32439                                ));
32440                            }
32441                            result.r#type = map.next_value::<std::option::Option<crate::model::private_connection::Type>>()?.unwrap_or_default();
32442                        }
32443                        __FieldTag::__peering_id => {
32444                            if !fields.insert(__FieldTag::__peering_id) {
32445                                return std::result::Result::Err(A::Error::duplicate_field(
32446                                    "multiple values for peering_id",
32447                                ));
32448                            }
32449                            result.peering_id = map
32450                                .next_value::<std::option::Option<std::string::String>>()?
32451                                .unwrap_or_default();
32452                        }
32453                        __FieldTag::__routing_mode => {
32454                            if !fields.insert(__FieldTag::__routing_mode) {
32455                                return std::result::Result::Err(A::Error::duplicate_field(
32456                                    "multiple values for routing_mode",
32457                                ));
32458                            }
32459                            result.routing_mode =
32460                                map.next_value::<std::option::Option<
32461                                    crate::model::private_connection::RoutingMode,
32462                                >>()?
32463                                .unwrap_or_default();
32464                        }
32465                        __FieldTag::__uid => {
32466                            if !fields.insert(__FieldTag::__uid) {
32467                                return std::result::Result::Err(A::Error::duplicate_field(
32468                                    "multiple values for uid",
32469                                ));
32470                            }
32471                            result.uid = map
32472                                .next_value::<std::option::Option<std::string::String>>()?
32473                                .unwrap_or_default();
32474                        }
32475                        __FieldTag::__service_network => {
32476                            if !fields.insert(__FieldTag::__service_network) {
32477                                return std::result::Result::Err(A::Error::duplicate_field(
32478                                    "multiple values for service_network",
32479                                ));
32480                            }
32481                            result.service_network = map
32482                                .next_value::<std::option::Option<std::string::String>>()?
32483                                .unwrap_or_default();
32484                        }
32485                        __FieldTag::__peering_state => {
32486                            if !fields.insert(__FieldTag::__peering_state) {
32487                                return std::result::Result::Err(A::Error::duplicate_field(
32488                                    "multiple values for peering_state",
32489                                ));
32490                            }
32491                            result.peering_state =
32492                                map.next_value::<std::option::Option<
32493                                    crate::model::private_connection::PeeringState,
32494                                >>()?
32495                                .unwrap_or_default();
32496                        }
32497                        __FieldTag::Unknown(key) => {
32498                            let value = map.next_value::<serde_json::Value>()?;
32499                            result._unknown_fields.insert(key, value);
32500                        }
32501                    }
32502                }
32503                std::result::Result::Ok(result)
32504            }
32505        }
32506        deserializer.deserialize_any(Visitor)
32507    }
32508}
32509
32510#[doc(hidden)]
32511impl serde::ser::Serialize for PrivateConnection {
32512    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
32513    where
32514        S: serde::ser::Serializer,
32515    {
32516        use serde::ser::SerializeMap;
32517        #[allow(unused_imports)]
32518        use std::option::Option::Some;
32519        let mut state = serializer.serialize_map(std::option::Option::None)?;
32520        if !self.name.is_empty() {
32521            state.serialize_entry("name", &self.name)?;
32522        }
32523        if self.create_time.is_some() {
32524            state.serialize_entry("createTime", &self.create_time)?;
32525        }
32526        if self.update_time.is_some() {
32527            state.serialize_entry("updateTime", &self.update_time)?;
32528        }
32529        if !self.description.is_empty() {
32530            state.serialize_entry("description", &self.description)?;
32531        }
32532        if !wkt::internal::is_default(&self.state) {
32533            state.serialize_entry("state", &self.state)?;
32534        }
32535        if !self.vmware_engine_network.is_empty() {
32536            state.serialize_entry("vmwareEngineNetwork", &self.vmware_engine_network)?;
32537        }
32538        if !self.vmware_engine_network_canonical.is_empty() {
32539            state.serialize_entry(
32540                "vmwareEngineNetworkCanonical",
32541                &self.vmware_engine_network_canonical,
32542            )?;
32543        }
32544        if !wkt::internal::is_default(&self.r#type) {
32545            state.serialize_entry("type", &self.r#type)?;
32546        }
32547        if !self.peering_id.is_empty() {
32548            state.serialize_entry("peeringId", &self.peering_id)?;
32549        }
32550        if !wkt::internal::is_default(&self.routing_mode) {
32551            state.serialize_entry("routingMode", &self.routing_mode)?;
32552        }
32553        if !self.uid.is_empty() {
32554            state.serialize_entry("uid", &self.uid)?;
32555        }
32556        if !self.service_network.is_empty() {
32557            state.serialize_entry("serviceNetwork", &self.service_network)?;
32558        }
32559        if !wkt::internal::is_default(&self.peering_state) {
32560            state.serialize_entry("peeringState", &self.peering_state)?;
32561        }
32562        if !self._unknown_fields.is_empty() {
32563            for (key, value) in self._unknown_fields.iter() {
32564                state.serialize_entry(key, &value)?;
32565            }
32566        }
32567        state.end()
32568    }
32569}
32570
32571/// Defines additional types related to [PrivateConnection].
32572pub mod private_connection {
32573    #[allow(unused_imports)]
32574    use super::*;
32575
32576    /// Enum State defines possible states of private connection.
32577    ///
32578    /// # Working with unknown values
32579    ///
32580    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
32581    /// additional enum variants at any time. Adding new variants is not considered
32582    /// a breaking change. Applications should write their code in anticipation of:
32583    ///
32584    /// - New values appearing in future releases of the client library, **and**
32585    /// - New values received dynamically, without application changes.
32586    ///
32587    /// Please consult the [Working with enums] section in the user guide for some
32588    /// guidelines.
32589    ///
32590    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
32591    #[derive(Clone, Debug, PartialEq)]
32592    #[non_exhaustive]
32593    pub enum State {
32594        /// The default value. This value is used if the state is omitted.
32595        Unspecified,
32596        /// The private connection is being created.
32597        Creating,
32598        /// The private connection is ready.
32599        Active,
32600        /// The private connection is being updated.
32601        Updating,
32602        /// The private connection is being deleted.
32603        Deleting,
32604        /// The private connection is not provisioned, since no private cloud is
32605        /// present for which this private connection is needed.
32606        Unprovisioned,
32607        /// The private connection is in failed state.
32608        Failed,
32609        /// If set, the enum was initialized with an unknown value.
32610        ///
32611        /// Applications can examine the value using [State::value] or
32612        /// [State::name].
32613        UnknownValue(state::UnknownValue),
32614    }
32615
32616    #[doc(hidden)]
32617    pub mod state {
32618        #[allow(unused_imports)]
32619        use super::*;
32620        #[derive(Clone, Debug, PartialEq)]
32621        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
32622    }
32623
32624    impl State {
32625        /// Gets the enum value.
32626        ///
32627        /// Returns `None` if the enum contains an unknown value deserialized from
32628        /// the string representation of enums.
32629        pub fn value(&self) -> std::option::Option<i32> {
32630            match self {
32631                Self::Unspecified => std::option::Option::Some(0),
32632                Self::Creating => std::option::Option::Some(1),
32633                Self::Active => std::option::Option::Some(2),
32634                Self::Updating => std::option::Option::Some(3),
32635                Self::Deleting => std::option::Option::Some(4),
32636                Self::Unprovisioned => std::option::Option::Some(5),
32637                Self::Failed => std::option::Option::Some(6),
32638                Self::UnknownValue(u) => u.0.value(),
32639            }
32640        }
32641
32642        /// Gets the enum value as a string.
32643        ///
32644        /// Returns `None` if the enum contains an unknown value deserialized from
32645        /// the integer representation of enums.
32646        pub fn name(&self) -> std::option::Option<&str> {
32647            match self {
32648                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
32649                Self::Creating => std::option::Option::Some("CREATING"),
32650                Self::Active => std::option::Option::Some("ACTIVE"),
32651                Self::Updating => std::option::Option::Some("UPDATING"),
32652                Self::Deleting => std::option::Option::Some("DELETING"),
32653                Self::Unprovisioned => std::option::Option::Some("UNPROVISIONED"),
32654                Self::Failed => std::option::Option::Some("FAILED"),
32655                Self::UnknownValue(u) => u.0.name(),
32656            }
32657        }
32658    }
32659
32660    impl std::default::Default for State {
32661        fn default() -> Self {
32662            use std::convert::From;
32663            Self::from(0)
32664        }
32665    }
32666
32667    impl std::fmt::Display for State {
32668        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
32669            wkt::internal::display_enum(f, self.name(), self.value())
32670        }
32671    }
32672
32673    impl std::convert::From<i32> for State {
32674        fn from(value: i32) -> Self {
32675            match value {
32676                0 => Self::Unspecified,
32677                1 => Self::Creating,
32678                2 => Self::Active,
32679                3 => Self::Updating,
32680                4 => Self::Deleting,
32681                5 => Self::Unprovisioned,
32682                6 => Self::Failed,
32683                _ => Self::UnknownValue(state::UnknownValue(
32684                    wkt::internal::UnknownEnumValue::Integer(value),
32685                )),
32686            }
32687        }
32688    }
32689
32690    impl std::convert::From<&str> for State {
32691        fn from(value: &str) -> Self {
32692            use std::string::ToString;
32693            match value {
32694                "STATE_UNSPECIFIED" => Self::Unspecified,
32695                "CREATING" => Self::Creating,
32696                "ACTIVE" => Self::Active,
32697                "UPDATING" => Self::Updating,
32698                "DELETING" => Self::Deleting,
32699                "UNPROVISIONED" => Self::Unprovisioned,
32700                "FAILED" => Self::Failed,
32701                _ => Self::UnknownValue(state::UnknownValue(
32702                    wkt::internal::UnknownEnumValue::String(value.to_string()),
32703                )),
32704            }
32705        }
32706    }
32707
32708    impl serde::ser::Serialize for State {
32709        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
32710        where
32711            S: serde::Serializer,
32712        {
32713            match self {
32714                Self::Unspecified => serializer.serialize_i32(0),
32715                Self::Creating => serializer.serialize_i32(1),
32716                Self::Active => serializer.serialize_i32(2),
32717                Self::Updating => serializer.serialize_i32(3),
32718                Self::Deleting => serializer.serialize_i32(4),
32719                Self::Unprovisioned => serializer.serialize_i32(5),
32720                Self::Failed => serializer.serialize_i32(6),
32721                Self::UnknownValue(u) => u.0.serialize(serializer),
32722            }
32723        }
32724    }
32725
32726    impl<'de> serde::de::Deserialize<'de> for State {
32727        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
32728        where
32729            D: serde::Deserializer<'de>,
32730        {
32731            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
32732                ".google.cloud.vmwareengine.v1.PrivateConnection.State",
32733            ))
32734        }
32735    }
32736
32737    /// Enum Type defines possible types of private connection.
32738    ///
32739    /// # Working with unknown values
32740    ///
32741    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
32742    /// additional enum variants at any time. Adding new variants is not considered
32743    /// a breaking change. Applications should write their code in anticipation of:
32744    ///
32745    /// - New values appearing in future releases of the client library, **and**
32746    /// - New values received dynamically, without application changes.
32747    ///
32748    /// Please consult the [Working with enums] section in the user guide for some
32749    /// guidelines.
32750    ///
32751    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
32752    #[derive(Clone, Debug, PartialEq)]
32753    #[non_exhaustive]
32754    pub enum Type {
32755        /// The default value. This value should never be used.
32756        Unspecified,
32757        /// Connection used for establishing [private services
32758        /// access](https://cloud.google.com/vpc/docs/private-services-access).
32759        PrivateServiceAccess,
32760        /// Connection used for connecting to NetApp Cloud Volumes.
32761        NetappCloudVolumes,
32762        /// Connection used for connecting to Dell PowerScale.
32763        DellPowerscale,
32764        /// Connection used for connecting to third-party services.
32765        ThirdPartyService,
32766        /// If set, the enum was initialized with an unknown value.
32767        ///
32768        /// Applications can examine the value using [Type::value] or
32769        /// [Type::name].
32770        UnknownValue(r#type::UnknownValue),
32771    }
32772
32773    #[doc(hidden)]
32774    pub mod r#type {
32775        #[allow(unused_imports)]
32776        use super::*;
32777        #[derive(Clone, Debug, PartialEq)]
32778        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
32779    }
32780
32781    impl Type {
32782        /// Gets the enum value.
32783        ///
32784        /// Returns `None` if the enum contains an unknown value deserialized from
32785        /// the string representation of enums.
32786        pub fn value(&self) -> std::option::Option<i32> {
32787            match self {
32788                Self::Unspecified => std::option::Option::Some(0),
32789                Self::PrivateServiceAccess => std::option::Option::Some(1),
32790                Self::NetappCloudVolumes => std::option::Option::Some(2),
32791                Self::DellPowerscale => std::option::Option::Some(3),
32792                Self::ThirdPartyService => std::option::Option::Some(4),
32793                Self::UnknownValue(u) => u.0.value(),
32794            }
32795        }
32796
32797        /// Gets the enum value as a string.
32798        ///
32799        /// Returns `None` if the enum contains an unknown value deserialized from
32800        /// the integer representation of enums.
32801        pub fn name(&self) -> std::option::Option<&str> {
32802            match self {
32803                Self::Unspecified => std::option::Option::Some("TYPE_UNSPECIFIED"),
32804                Self::PrivateServiceAccess => std::option::Option::Some("PRIVATE_SERVICE_ACCESS"),
32805                Self::NetappCloudVolumes => std::option::Option::Some("NETAPP_CLOUD_VOLUMES"),
32806                Self::DellPowerscale => std::option::Option::Some("DELL_POWERSCALE"),
32807                Self::ThirdPartyService => std::option::Option::Some("THIRD_PARTY_SERVICE"),
32808                Self::UnknownValue(u) => u.0.name(),
32809            }
32810        }
32811    }
32812
32813    impl std::default::Default for Type {
32814        fn default() -> Self {
32815            use std::convert::From;
32816            Self::from(0)
32817        }
32818    }
32819
32820    impl std::fmt::Display for Type {
32821        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
32822            wkt::internal::display_enum(f, self.name(), self.value())
32823        }
32824    }
32825
32826    impl std::convert::From<i32> for Type {
32827        fn from(value: i32) -> Self {
32828            match value {
32829                0 => Self::Unspecified,
32830                1 => Self::PrivateServiceAccess,
32831                2 => Self::NetappCloudVolumes,
32832                3 => Self::DellPowerscale,
32833                4 => Self::ThirdPartyService,
32834                _ => Self::UnknownValue(r#type::UnknownValue(
32835                    wkt::internal::UnknownEnumValue::Integer(value),
32836                )),
32837            }
32838        }
32839    }
32840
32841    impl std::convert::From<&str> for Type {
32842        fn from(value: &str) -> Self {
32843            use std::string::ToString;
32844            match value {
32845                "TYPE_UNSPECIFIED" => Self::Unspecified,
32846                "PRIVATE_SERVICE_ACCESS" => Self::PrivateServiceAccess,
32847                "NETAPP_CLOUD_VOLUMES" => Self::NetappCloudVolumes,
32848                "DELL_POWERSCALE" => Self::DellPowerscale,
32849                "THIRD_PARTY_SERVICE" => Self::ThirdPartyService,
32850                _ => Self::UnknownValue(r#type::UnknownValue(
32851                    wkt::internal::UnknownEnumValue::String(value.to_string()),
32852                )),
32853            }
32854        }
32855    }
32856
32857    impl serde::ser::Serialize for Type {
32858        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
32859        where
32860            S: serde::Serializer,
32861        {
32862            match self {
32863                Self::Unspecified => serializer.serialize_i32(0),
32864                Self::PrivateServiceAccess => serializer.serialize_i32(1),
32865                Self::NetappCloudVolumes => serializer.serialize_i32(2),
32866                Self::DellPowerscale => serializer.serialize_i32(3),
32867                Self::ThirdPartyService => serializer.serialize_i32(4),
32868                Self::UnknownValue(u) => u.0.serialize(serializer),
32869            }
32870        }
32871    }
32872
32873    impl<'de> serde::de::Deserialize<'de> for Type {
32874        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
32875        where
32876            D: serde::Deserializer<'de>,
32877        {
32878            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
32879                ".google.cloud.vmwareengine.v1.PrivateConnection.Type",
32880            ))
32881        }
32882    }
32883
32884    /// Possible types for RoutingMode
32885    ///
32886    /// # Working with unknown values
32887    ///
32888    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
32889    /// additional enum variants at any time. Adding new variants is not considered
32890    /// a breaking change. Applications should write their code in anticipation of:
32891    ///
32892    /// - New values appearing in future releases of the client library, **and**
32893    /// - New values received dynamically, without application changes.
32894    ///
32895    /// Please consult the [Working with enums] section in the user guide for some
32896    /// guidelines.
32897    ///
32898    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
32899    #[derive(Clone, Debug, PartialEq)]
32900    #[non_exhaustive]
32901    pub enum RoutingMode {
32902        /// The default value. This value should never be used.
32903        Unspecified,
32904        /// Global Routing Mode
32905        Global,
32906        /// Regional Routing Mode
32907        Regional,
32908        /// If set, the enum was initialized with an unknown value.
32909        ///
32910        /// Applications can examine the value using [RoutingMode::value] or
32911        /// [RoutingMode::name].
32912        UnknownValue(routing_mode::UnknownValue),
32913    }
32914
32915    #[doc(hidden)]
32916    pub mod routing_mode {
32917        #[allow(unused_imports)]
32918        use super::*;
32919        #[derive(Clone, Debug, PartialEq)]
32920        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
32921    }
32922
32923    impl RoutingMode {
32924        /// Gets the enum value.
32925        ///
32926        /// Returns `None` if the enum contains an unknown value deserialized from
32927        /// the string representation of enums.
32928        pub fn value(&self) -> std::option::Option<i32> {
32929            match self {
32930                Self::Unspecified => std::option::Option::Some(0),
32931                Self::Global => std::option::Option::Some(1),
32932                Self::Regional => std::option::Option::Some(2),
32933                Self::UnknownValue(u) => u.0.value(),
32934            }
32935        }
32936
32937        /// Gets the enum value as a string.
32938        ///
32939        /// Returns `None` if the enum contains an unknown value deserialized from
32940        /// the integer representation of enums.
32941        pub fn name(&self) -> std::option::Option<&str> {
32942            match self {
32943                Self::Unspecified => std::option::Option::Some("ROUTING_MODE_UNSPECIFIED"),
32944                Self::Global => std::option::Option::Some("GLOBAL"),
32945                Self::Regional => std::option::Option::Some("REGIONAL"),
32946                Self::UnknownValue(u) => u.0.name(),
32947            }
32948        }
32949    }
32950
32951    impl std::default::Default for RoutingMode {
32952        fn default() -> Self {
32953            use std::convert::From;
32954            Self::from(0)
32955        }
32956    }
32957
32958    impl std::fmt::Display for RoutingMode {
32959        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
32960            wkt::internal::display_enum(f, self.name(), self.value())
32961        }
32962    }
32963
32964    impl std::convert::From<i32> for RoutingMode {
32965        fn from(value: i32) -> Self {
32966            match value {
32967                0 => Self::Unspecified,
32968                1 => Self::Global,
32969                2 => Self::Regional,
32970                _ => Self::UnknownValue(routing_mode::UnknownValue(
32971                    wkt::internal::UnknownEnumValue::Integer(value),
32972                )),
32973            }
32974        }
32975    }
32976
32977    impl std::convert::From<&str> for RoutingMode {
32978        fn from(value: &str) -> Self {
32979            use std::string::ToString;
32980            match value {
32981                "ROUTING_MODE_UNSPECIFIED" => Self::Unspecified,
32982                "GLOBAL" => Self::Global,
32983                "REGIONAL" => Self::Regional,
32984                _ => Self::UnknownValue(routing_mode::UnknownValue(
32985                    wkt::internal::UnknownEnumValue::String(value.to_string()),
32986                )),
32987            }
32988        }
32989    }
32990
32991    impl serde::ser::Serialize for RoutingMode {
32992        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
32993        where
32994            S: serde::Serializer,
32995        {
32996            match self {
32997                Self::Unspecified => serializer.serialize_i32(0),
32998                Self::Global => serializer.serialize_i32(1),
32999                Self::Regional => serializer.serialize_i32(2),
33000                Self::UnknownValue(u) => u.0.serialize(serializer),
33001            }
33002        }
33003    }
33004
33005    impl<'de> serde::de::Deserialize<'de> for RoutingMode {
33006        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33007        where
33008            D: serde::Deserializer<'de>,
33009        {
33010            deserializer.deserialize_any(wkt::internal::EnumVisitor::<RoutingMode>::new(
33011                ".google.cloud.vmwareengine.v1.PrivateConnection.RoutingMode",
33012            ))
33013        }
33014    }
33015
33016    /// Enum PeeringState defines the possible states of peering between service
33017    /// network and the vpc network peered to service network
33018    ///
33019    /// # Working with unknown values
33020    ///
33021    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
33022    /// additional enum variants at any time. Adding new variants is not considered
33023    /// a breaking change. Applications should write their code in anticipation of:
33024    ///
33025    /// - New values appearing in future releases of the client library, **and**
33026    /// - New values received dynamically, without application changes.
33027    ///
33028    /// Please consult the [Working with enums] section in the user guide for some
33029    /// guidelines.
33030    ///
33031    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
33032    #[derive(Clone, Debug, PartialEq)]
33033    #[non_exhaustive]
33034    pub enum PeeringState {
33035        /// The default value. This value is used if the peering state is omitted or
33036        /// unknown.
33037        Unspecified,
33038        /// The peering is in active state.
33039        PeeringActive,
33040        /// The peering is in inactive state.
33041        PeeringInactive,
33042        /// If set, the enum was initialized with an unknown value.
33043        ///
33044        /// Applications can examine the value using [PeeringState::value] or
33045        /// [PeeringState::name].
33046        UnknownValue(peering_state::UnknownValue),
33047    }
33048
33049    #[doc(hidden)]
33050    pub mod peering_state {
33051        #[allow(unused_imports)]
33052        use super::*;
33053        #[derive(Clone, Debug, PartialEq)]
33054        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
33055    }
33056
33057    impl PeeringState {
33058        /// Gets the enum value.
33059        ///
33060        /// Returns `None` if the enum contains an unknown value deserialized from
33061        /// the string representation of enums.
33062        pub fn value(&self) -> std::option::Option<i32> {
33063            match self {
33064                Self::Unspecified => std::option::Option::Some(0),
33065                Self::PeeringActive => std::option::Option::Some(1),
33066                Self::PeeringInactive => std::option::Option::Some(2),
33067                Self::UnknownValue(u) => u.0.value(),
33068            }
33069        }
33070
33071        /// Gets the enum value as a string.
33072        ///
33073        /// Returns `None` if the enum contains an unknown value deserialized from
33074        /// the integer representation of enums.
33075        pub fn name(&self) -> std::option::Option<&str> {
33076            match self {
33077                Self::Unspecified => std::option::Option::Some("PEERING_STATE_UNSPECIFIED"),
33078                Self::PeeringActive => std::option::Option::Some("PEERING_ACTIVE"),
33079                Self::PeeringInactive => std::option::Option::Some("PEERING_INACTIVE"),
33080                Self::UnknownValue(u) => u.0.name(),
33081            }
33082        }
33083    }
33084
33085    impl std::default::Default for PeeringState {
33086        fn default() -> Self {
33087            use std::convert::From;
33088            Self::from(0)
33089        }
33090    }
33091
33092    impl std::fmt::Display for PeeringState {
33093        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
33094            wkt::internal::display_enum(f, self.name(), self.value())
33095        }
33096    }
33097
33098    impl std::convert::From<i32> for PeeringState {
33099        fn from(value: i32) -> Self {
33100            match value {
33101                0 => Self::Unspecified,
33102                1 => Self::PeeringActive,
33103                2 => Self::PeeringInactive,
33104                _ => Self::UnknownValue(peering_state::UnknownValue(
33105                    wkt::internal::UnknownEnumValue::Integer(value),
33106                )),
33107            }
33108        }
33109    }
33110
33111    impl std::convert::From<&str> for PeeringState {
33112        fn from(value: &str) -> Self {
33113            use std::string::ToString;
33114            match value {
33115                "PEERING_STATE_UNSPECIFIED" => Self::Unspecified,
33116                "PEERING_ACTIVE" => Self::PeeringActive,
33117                "PEERING_INACTIVE" => Self::PeeringInactive,
33118                _ => Self::UnknownValue(peering_state::UnknownValue(
33119                    wkt::internal::UnknownEnumValue::String(value.to_string()),
33120                )),
33121            }
33122        }
33123    }
33124
33125    impl serde::ser::Serialize for PeeringState {
33126        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
33127        where
33128            S: serde::Serializer,
33129        {
33130            match self {
33131                Self::Unspecified => serializer.serialize_i32(0),
33132                Self::PeeringActive => serializer.serialize_i32(1),
33133                Self::PeeringInactive => serializer.serialize_i32(2),
33134                Self::UnknownValue(u) => u.0.serialize(serializer),
33135            }
33136        }
33137    }
33138
33139    impl<'de> serde::de::Deserialize<'de> for PeeringState {
33140        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33141        where
33142            D: serde::Deserializer<'de>,
33143        {
33144            deserializer.deserialize_any(wkt::internal::EnumVisitor::<PeeringState>::new(
33145                ".google.cloud.vmwareengine.v1.PrivateConnection.PeeringState",
33146            ))
33147        }
33148    }
33149}
33150
33151/// VmwareEngine specific metadata for the given
33152/// [google.cloud.location.Location][google.cloud.location.Location]. It is
33153/// returned as a content of the `google.cloud.location.Location.metadata` field.
33154///
33155/// [google.cloud.location.Location]: location::model::Location
33156#[derive(Clone, Debug, Default, PartialEq)]
33157#[non_exhaustive]
33158pub struct LocationMetadata {
33159    /// Output only. Capabilities of this location.
33160    pub capabilities: std::vec::Vec<crate::model::location_metadata::Capability>,
33161
33162    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
33163}
33164
33165impl LocationMetadata {
33166    pub fn new() -> Self {
33167        std::default::Default::default()
33168    }
33169
33170    /// Sets the value of [capabilities][crate::model::LocationMetadata::capabilities].
33171    pub fn set_capabilities<T, V>(mut self, v: T) -> Self
33172    where
33173        T: std::iter::IntoIterator<Item = V>,
33174        V: std::convert::Into<crate::model::location_metadata::Capability>,
33175    {
33176        use std::iter::Iterator;
33177        self.capabilities = v.into_iter().map(|i| i.into()).collect();
33178        self
33179    }
33180}
33181
33182impl wkt::message::Message for LocationMetadata {
33183    fn typename() -> &'static str {
33184        "type.googleapis.com/google.cloud.vmwareengine.v1.LocationMetadata"
33185    }
33186}
33187
33188#[doc(hidden)]
33189impl<'de> serde::de::Deserialize<'de> for LocationMetadata {
33190    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33191    where
33192        D: serde::Deserializer<'de>,
33193    {
33194        #[allow(non_camel_case_types)]
33195        #[doc(hidden)]
33196        #[derive(PartialEq, Eq, Hash)]
33197        enum __FieldTag {
33198            __capabilities,
33199            Unknown(std::string::String),
33200        }
33201        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
33202            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33203            where
33204                D: serde::Deserializer<'de>,
33205            {
33206                struct Visitor;
33207                impl<'de> serde::de::Visitor<'de> for Visitor {
33208                    type Value = __FieldTag;
33209                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33210                        formatter.write_str("a field name for LocationMetadata")
33211                    }
33212                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
33213                    where
33214                        E: serde::de::Error,
33215                    {
33216                        use std::result::Result::Ok;
33217                        use std::string::ToString;
33218                        match value {
33219                            "capabilities" => Ok(__FieldTag::__capabilities),
33220                            _ => Ok(__FieldTag::Unknown(value.to_string())),
33221                        }
33222                    }
33223                }
33224                deserializer.deserialize_identifier(Visitor)
33225            }
33226        }
33227        struct Visitor;
33228        impl<'de> serde::de::Visitor<'de> for Visitor {
33229            type Value = LocationMetadata;
33230            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33231                formatter.write_str("struct LocationMetadata")
33232            }
33233            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
33234            where
33235                A: serde::de::MapAccess<'de>,
33236            {
33237                #[allow(unused_imports)]
33238                use serde::de::Error;
33239                use std::option::Option::Some;
33240                let mut fields = std::collections::HashSet::new();
33241                let mut result = Self::Value::new();
33242                while let Some(tag) = map.next_key::<__FieldTag>()? {
33243                    #[allow(clippy::match_single_binding)]
33244                    match tag {
33245                        __FieldTag::__capabilities => {
33246                            if !fields.insert(__FieldTag::__capabilities) {
33247                                return std::result::Result::Err(A::Error::duplicate_field(
33248                                    "multiple values for capabilities",
33249                                ));
33250                            }
33251                            result.capabilities = map
33252                                .next_value::<std::option::Option<
33253                                    std::vec::Vec<crate::model::location_metadata::Capability>,
33254                                >>()?
33255                                .unwrap_or_default();
33256                        }
33257                        __FieldTag::Unknown(key) => {
33258                            let value = map.next_value::<serde_json::Value>()?;
33259                            result._unknown_fields.insert(key, value);
33260                        }
33261                    }
33262                }
33263                std::result::Result::Ok(result)
33264            }
33265        }
33266        deserializer.deserialize_any(Visitor)
33267    }
33268}
33269
33270#[doc(hidden)]
33271impl serde::ser::Serialize for LocationMetadata {
33272    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
33273    where
33274        S: serde::ser::Serializer,
33275    {
33276        use serde::ser::SerializeMap;
33277        #[allow(unused_imports)]
33278        use std::option::Option::Some;
33279        let mut state = serializer.serialize_map(std::option::Option::None)?;
33280        if !self.capabilities.is_empty() {
33281            state.serialize_entry("capabilities", &self.capabilities)?;
33282        }
33283        if !self._unknown_fields.is_empty() {
33284            for (key, value) in self._unknown_fields.iter() {
33285                state.serialize_entry(key, &value)?;
33286            }
33287        }
33288        state.end()
33289    }
33290}
33291
33292/// Defines additional types related to [LocationMetadata].
33293pub mod location_metadata {
33294    #[allow(unused_imports)]
33295    use super::*;
33296
33297    /// Capability of a location.
33298    ///
33299    /// # Working with unknown values
33300    ///
33301    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
33302    /// additional enum variants at any time. Adding new variants is not considered
33303    /// a breaking change. Applications should write their code in anticipation of:
33304    ///
33305    /// - New values appearing in future releases of the client library, **and**
33306    /// - New values received dynamically, without application changes.
33307    ///
33308    /// Please consult the [Working with enums] section in the user guide for some
33309    /// guidelines.
33310    ///
33311    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
33312    #[derive(Clone, Debug, PartialEq)]
33313    #[non_exhaustive]
33314    pub enum Capability {
33315        /// The default value. This value is used if the capability is omitted or
33316        /// unknown.
33317        Unspecified,
33318        /// Stretch clusters are supported in this location.
33319        StretchedClusters,
33320        /// If set, the enum was initialized with an unknown value.
33321        ///
33322        /// Applications can examine the value using [Capability::value] or
33323        /// [Capability::name].
33324        UnknownValue(capability::UnknownValue),
33325    }
33326
33327    #[doc(hidden)]
33328    pub mod capability {
33329        #[allow(unused_imports)]
33330        use super::*;
33331        #[derive(Clone, Debug, PartialEq)]
33332        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
33333    }
33334
33335    impl Capability {
33336        /// Gets the enum value.
33337        ///
33338        /// Returns `None` if the enum contains an unknown value deserialized from
33339        /// the string representation of enums.
33340        pub fn value(&self) -> std::option::Option<i32> {
33341            match self {
33342                Self::Unspecified => std::option::Option::Some(0),
33343                Self::StretchedClusters => std::option::Option::Some(1),
33344                Self::UnknownValue(u) => u.0.value(),
33345            }
33346        }
33347
33348        /// Gets the enum value as a string.
33349        ///
33350        /// Returns `None` if the enum contains an unknown value deserialized from
33351        /// the integer representation of enums.
33352        pub fn name(&self) -> std::option::Option<&str> {
33353            match self {
33354                Self::Unspecified => std::option::Option::Some("CAPABILITY_UNSPECIFIED"),
33355                Self::StretchedClusters => std::option::Option::Some("STRETCHED_CLUSTERS"),
33356                Self::UnknownValue(u) => u.0.name(),
33357            }
33358        }
33359    }
33360
33361    impl std::default::Default for Capability {
33362        fn default() -> Self {
33363            use std::convert::From;
33364            Self::from(0)
33365        }
33366    }
33367
33368    impl std::fmt::Display for Capability {
33369        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
33370            wkt::internal::display_enum(f, self.name(), self.value())
33371        }
33372    }
33373
33374    impl std::convert::From<i32> for Capability {
33375        fn from(value: i32) -> Self {
33376            match value {
33377                0 => Self::Unspecified,
33378                1 => Self::StretchedClusters,
33379                _ => Self::UnknownValue(capability::UnknownValue(
33380                    wkt::internal::UnknownEnumValue::Integer(value),
33381                )),
33382            }
33383        }
33384    }
33385
33386    impl std::convert::From<&str> for Capability {
33387        fn from(value: &str) -> Self {
33388            use std::string::ToString;
33389            match value {
33390                "CAPABILITY_UNSPECIFIED" => Self::Unspecified,
33391                "STRETCHED_CLUSTERS" => Self::StretchedClusters,
33392                _ => Self::UnknownValue(capability::UnknownValue(
33393                    wkt::internal::UnknownEnumValue::String(value.to_string()),
33394                )),
33395            }
33396        }
33397    }
33398
33399    impl serde::ser::Serialize for Capability {
33400        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
33401        where
33402            S: serde::Serializer,
33403        {
33404            match self {
33405                Self::Unspecified => serializer.serialize_i32(0),
33406                Self::StretchedClusters => serializer.serialize_i32(1),
33407                Self::UnknownValue(u) => u.0.serialize(serializer),
33408            }
33409        }
33410    }
33411
33412    impl<'de> serde::de::Deserialize<'de> for Capability {
33413        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33414        where
33415            D: serde::Deserializer<'de>,
33416        {
33417            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Capability>::new(
33418                ".google.cloud.vmwareengine.v1.LocationMetadata.Capability",
33419            ))
33420        }
33421    }
33422}
33423
33424/// DnsBindPermission resource that contains the accounts having the consumer DNS
33425/// bind permission on the corresponding intranet VPC of the consumer project.
33426#[derive(Clone, Debug, Default, PartialEq)]
33427#[non_exhaustive]
33428pub struct DnsBindPermission {
33429    /// Required. Output only. The name of the resource which stores the
33430    /// users/service accounts having the permission to bind to the corresponding
33431    /// intranet VPC of the consumer project. DnsBindPermission is a global
33432    /// resource and location can only be global. Resource names are schemeless
33433    /// URIs that follow the conventions in
33434    /// <https://cloud.google.com/apis/design/resource_names>. For example:
33435    /// `projects/my-project/locations/global/dnsBindPermission`
33436    pub name: std::string::String,
33437
33438    /// Output only. Users/Service accounts which have access for binding on the
33439    /// intranet VPC project corresponding to the consumer project.
33440    pub principals: std::vec::Vec<crate::model::Principal>,
33441
33442    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
33443}
33444
33445impl DnsBindPermission {
33446    pub fn new() -> Self {
33447        std::default::Default::default()
33448    }
33449
33450    /// Sets the value of [name][crate::model::DnsBindPermission::name].
33451    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
33452        self.name = v.into();
33453        self
33454    }
33455
33456    /// Sets the value of [principals][crate::model::DnsBindPermission::principals].
33457    pub fn set_principals<T, V>(mut self, v: T) -> Self
33458    where
33459        T: std::iter::IntoIterator<Item = V>,
33460        V: std::convert::Into<crate::model::Principal>,
33461    {
33462        use std::iter::Iterator;
33463        self.principals = v.into_iter().map(|i| i.into()).collect();
33464        self
33465    }
33466}
33467
33468impl wkt::message::Message for DnsBindPermission {
33469    fn typename() -> &'static str {
33470        "type.googleapis.com/google.cloud.vmwareengine.v1.DnsBindPermission"
33471    }
33472}
33473
33474#[doc(hidden)]
33475impl<'de> serde::de::Deserialize<'de> for DnsBindPermission {
33476    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33477    where
33478        D: serde::Deserializer<'de>,
33479    {
33480        #[allow(non_camel_case_types)]
33481        #[doc(hidden)]
33482        #[derive(PartialEq, Eq, Hash)]
33483        enum __FieldTag {
33484            __name,
33485            __principals,
33486            Unknown(std::string::String),
33487        }
33488        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
33489            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33490            where
33491                D: serde::Deserializer<'de>,
33492            {
33493                struct Visitor;
33494                impl<'de> serde::de::Visitor<'de> for Visitor {
33495                    type Value = __FieldTag;
33496                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33497                        formatter.write_str("a field name for DnsBindPermission")
33498                    }
33499                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
33500                    where
33501                        E: serde::de::Error,
33502                    {
33503                        use std::result::Result::Ok;
33504                        use std::string::ToString;
33505                        match value {
33506                            "name" => Ok(__FieldTag::__name),
33507                            "principals" => Ok(__FieldTag::__principals),
33508                            _ => Ok(__FieldTag::Unknown(value.to_string())),
33509                        }
33510                    }
33511                }
33512                deserializer.deserialize_identifier(Visitor)
33513            }
33514        }
33515        struct Visitor;
33516        impl<'de> serde::de::Visitor<'de> for Visitor {
33517            type Value = DnsBindPermission;
33518            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33519                formatter.write_str("struct DnsBindPermission")
33520            }
33521            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
33522            where
33523                A: serde::de::MapAccess<'de>,
33524            {
33525                #[allow(unused_imports)]
33526                use serde::de::Error;
33527                use std::option::Option::Some;
33528                let mut fields = std::collections::HashSet::new();
33529                let mut result = Self::Value::new();
33530                while let Some(tag) = map.next_key::<__FieldTag>()? {
33531                    #[allow(clippy::match_single_binding)]
33532                    match tag {
33533                        __FieldTag::__name => {
33534                            if !fields.insert(__FieldTag::__name) {
33535                                return std::result::Result::Err(A::Error::duplicate_field(
33536                                    "multiple values for name",
33537                                ));
33538                            }
33539                            result.name = map
33540                                .next_value::<std::option::Option<std::string::String>>()?
33541                                .unwrap_or_default();
33542                        }
33543                        __FieldTag::__principals => {
33544                            if !fields.insert(__FieldTag::__principals) {
33545                                return std::result::Result::Err(A::Error::duplicate_field(
33546                                    "multiple values for principals",
33547                                ));
33548                            }
33549                            result.principals = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Principal>>>()?.unwrap_or_default();
33550                        }
33551                        __FieldTag::Unknown(key) => {
33552                            let value = map.next_value::<serde_json::Value>()?;
33553                            result._unknown_fields.insert(key, value);
33554                        }
33555                    }
33556                }
33557                std::result::Result::Ok(result)
33558            }
33559        }
33560        deserializer.deserialize_any(Visitor)
33561    }
33562}
33563
33564#[doc(hidden)]
33565impl serde::ser::Serialize for DnsBindPermission {
33566    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
33567    where
33568        S: serde::ser::Serializer,
33569    {
33570        use serde::ser::SerializeMap;
33571        #[allow(unused_imports)]
33572        use std::option::Option::Some;
33573        let mut state = serializer.serialize_map(std::option::Option::None)?;
33574        if !self.name.is_empty() {
33575            state.serialize_entry("name", &self.name)?;
33576        }
33577        if !self.principals.is_empty() {
33578            state.serialize_entry("principals", &self.principals)?;
33579        }
33580        if !self._unknown_fields.is_empty() {
33581            for (key, value) in self._unknown_fields.iter() {
33582                state.serialize_entry(key, &value)?;
33583            }
33584        }
33585        state.end()
33586    }
33587}
33588
33589/// Users/Service accounts which have access for DNS binding on the intranet
33590/// VPC corresponding to the consumer project.
33591#[derive(Clone, Debug, Default, PartialEq)]
33592#[non_exhaustive]
33593pub struct Principal {
33594    /// The consumer provided user/service account which needs to be
33595    /// granted permission to DNS bind with the intranet VPC corresponding to the
33596    /// consumer project.
33597    pub principal: std::option::Option<crate::model::principal::Principal>,
33598
33599    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
33600}
33601
33602impl Principal {
33603    pub fn new() -> Self {
33604        std::default::Default::default()
33605    }
33606
33607    /// Sets the value of [principal][crate::model::Principal::principal].
33608    ///
33609    /// Note that all the setters affecting `principal` are mutually
33610    /// exclusive.
33611    pub fn set_principal<
33612        T: std::convert::Into<std::option::Option<crate::model::principal::Principal>>,
33613    >(
33614        mut self,
33615        v: T,
33616    ) -> Self {
33617        self.principal = v.into();
33618        self
33619    }
33620
33621    /// The value of [principal][crate::model::Principal::principal]
33622    /// if it holds a `User`, `None` if the field is not set or
33623    /// holds a different branch.
33624    pub fn user(&self) -> std::option::Option<&std::string::String> {
33625        #[allow(unreachable_patterns)]
33626        self.principal.as_ref().and_then(|v| match v {
33627            crate::model::principal::Principal::User(v) => std::option::Option::Some(v),
33628            _ => std::option::Option::None,
33629        })
33630    }
33631
33632    /// Sets the value of [principal][crate::model::Principal::principal]
33633    /// to hold a `User`.
33634    ///
33635    /// Note that all the setters affecting `principal` are
33636    /// mutually exclusive.
33637    pub fn set_user<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
33638        self.principal =
33639            std::option::Option::Some(crate::model::principal::Principal::User(v.into()));
33640        self
33641    }
33642
33643    /// The value of [principal][crate::model::Principal::principal]
33644    /// if it holds a `ServiceAccount`, `None` if the field is not set or
33645    /// holds a different branch.
33646    pub fn service_account(&self) -> std::option::Option<&std::string::String> {
33647        #[allow(unreachable_patterns)]
33648        self.principal.as_ref().and_then(|v| match v {
33649            crate::model::principal::Principal::ServiceAccount(v) => std::option::Option::Some(v),
33650            _ => std::option::Option::None,
33651        })
33652    }
33653
33654    /// Sets the value of [principal][crate::model::Principal::principal]
33655    /// to hold a `ServiceAccount`.
33656    ///
33657    /// Note that all the setters affecting `principal` are
33658    /// mutually exclusive.
33659    pub fn set_service_account<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
33660        self.principal =
33661            std::option::Option::Some(crate::model::principal::Principal::ServiceAccount(v.into()));
33662        self
33663    }
33664}
33665
33666impl wkt::message::Message for Principal {
33667    fn typename() -> &'static str {
33668        "type.googleapis.com/google.cloud.vmwareengine.v1.Principal"
33669    }
33670}
33671
33672#[doc(hidden)]
33673impl<'de> serde::de::Deserialize<'de> for Principal {
33674    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33675    where
33676        D: serde::Deserializer<'de>,
33677    {
33678        #[allow(non_camel_case_types)]
33679        #[doc(hidden)]
33680        #[derive(PartialEq, Eq, Hash)]
33681        enum __FieldTag {
33682            __user,
33683            __service_account,
33684            Unknown(std::string::String),
33685        }
33686        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
33687            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
33688            where
33689                D: serde::Deserializer<'de>,
33690            {
33691                struct Visitor;
33692                impl<'de> serde::de::Visitor<'de> for Visitor {
33693                    type Value = __FieldTag;
33694                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33695                        formatter.write_str("a field name for Principal")
33696                    }
33697                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
33698                    where
33699                        E: serde::de::Error,
33700                    {
33701                        use std::result::Result::Ok;
33702                        use std::string::ToString;
33703                        match value {
33704                            "user" => Ok(__FieldTag::__user),
33705                            "serviceAccount" => Ok(__FieldTag::__service_account),
33706                            "service_account" => Ok(__FieldTag::__service_account),
33707                            _ => Ok(__FieldTag::Unknown(value.to_string())),
33708                        }
33709                    }
33710                }
33711                deserializer.deserialize_identifier(Visitor)
33712            }
33713        }
33714        struct Visitor;
33715        impl<'de> serde::de::Visitor<'de> for Visitor {
33716            type Value = Principal;
33717            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
33718                formatter.write_str("struct Principal")
33719            }
33720            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
33721            where
33722                A: serde::de::MapAccess<'de>,
33723            {
33724                #[allow(unused_imports)]
33725                use serde::de::Error;
33726                use std::option::Option::Some;
33727                let mut fields = std::collections::HashSet::new();
33728                let mut result = Self::Value::new();
33729                while let Some(tag) = map.next_key::<__FieldTag>()? {
33730                    #[allow(clippy::match_single_binding)]
33731                    match tag {
33732                        __FieldTag::__user => {
33733                            if !fields.insert(__FieldTag::__user) {
33734                                return std::result::Result::Err(A::Error::duplicate_field(
33735                                    "multiple values for user",
33736                                ));
33737                            }
33738                            if result.principal.is_some() {
33739                                return std::result::Result::Err(A::Error::duplicate_field(
33740                                    "multiple values for `principal`, a oneof with full ID .google.cloud.vmwareengine.v1.Principal.user, latest field was user",
33741                                ));
33742                            }
33743                            result.principal = std::option::Option::Some(
33744                                crate::model::principal::Principal::User(
33745                                    map.next_value::<std::option::Option<std::string::String>>()?
33746                                        .unwrap_or_default(),
33747                                ),
33748                            );
33749                        }
33750                        __FieldTag::__service_account => {
33751                            if !fields.insert(__FieldTag::__service_account) {
33752                                return std::result::Result::Err(A::Error::duplicate_field(
33753                                    "multiple values for service_account",
33754                                ));
33755                            }
33756                            if result.principal.is_some() {
33757                                return std::result::Result::Err(A::Error::duplicate_field(
33758                                    "multiple values for `principal`, a oneof with full ID .google.cloud.vmwareengine.v1.Principal.service_account, latest field was serviceAccount",
33759                                ));
33760                            }
33761                            result.principal = std::option::Option::Some(
33762                                crate::model::principal::Principal::ServiceAccount(
33763                                    map.next_value::<std::option::Option<std::string::String>>()?
33764                                        .unwrap_or_default(),
33765                                ),
33766                            );
33767                        }
33768                        __FieldTag::Unknown(key) => {
33769                            let value = map.next_value::<serde_json::Value>()?;
33770                            result._unknown_fields.insert(key, value);
33771                        }
33772                    }
33773                }
33774                std::result::Result::Ok(result)
33775            }
33776        }
33777        deserializer.deserialize_any(Visitor)
33778    }
33779}
33780
33781#[doc(hidden)]
33782impl serde::ser::Serialize for Principal {
33783    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
33784    where
33785        S: serde::ser::Serializer,
33786    {
33787        use serde::ser::SerializeMap;
33788        #[allow(unused_imports)]
33789        use std::option::Option::Some;
33790        let mut state = serializer.serialize_map(std::option::Option::None)?;
33791        if let Some(value) = self.user() {
33792            state.serialize_entry("user", value)?;
33793        }
33794        if let Some(value) = self.service_account() {
33795            state.serialize_entry("serviceAccount", value)?;
33796        }
33797        if !self._unknown_fields.is_empty() {
33798            for (key, value) in self._unknown_fields.iter() {
33799                state.serialize_entry(key, &value)?;
33800            }
33801        }
33802        state.end()
33803    }
33804}
33805
33806/// Defines additional types related to [Principal].
33807pub mod principal {
33808    #[allow(unused_imports)]
33809    use super::*;
33810
33811    /// The consumer provided user/service account which needs to be
33812    /// granted permission to DNS bind with the intranet VPC corresponding to the
33813    /// consumer project.
33814    #[derive(Clone, Debug, PartialEq)]
33815    #[non_exhaustive]
33816    pub enum Principal {
33817        /// The user who needs to be granted permission.
33818        User(std::string::String),
33819        /// The service account which needs to be granted the permission.
33820        ServiceAccount(std::string::String),
33821    }
33822}