Skip to main content

google_cloud_gkemulticloud_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 gaxi;
23extern crate google_cloud_gax;
24extern crate google_cloud_longrunning;
25extern crate google_cloud_lro;
26extern crate google_cloud_type;
27extern crate lazy_static;
28extern crate serde;
29extern crate serde_json;
30extern crate serde_with;
31extern crate std;
32extern crate tracing;
33extern crate wkt;
34
35mod debug;
36mod deserialize;
37mod serialize;
38
39/// An Anthos cluster running on customer own infrastructure.
40#[derive(Clone, Default, PartialEq)]
41#[non_exhaustive]
42pub struct AttachedCluster {
43    /// The name of this resource.
44    ///
45    /// Cluster names are formatted as
46    /// `projects/<project-number>/locations/<region>/attachedClusters/<cluster-id>`.
47    ///
48    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
49    /// for more details on Google Cloud Platform resource names.
50    pub name: std::string::String,
51
52    /// Optional. A human readable description of this cluster.
53    /// Cannot be longer than 255 UTF-8 encoded bytes.
54    pub description: std::string::String,
55
56    /// Required. OpenID Connect (OIDC) configuration for the cluster.
57    pub oidc_config: std::option::Option<crate::model::AttachedOidcConfig>,
58
59    /// Required. The platform version for the cluster (e.g. `1.19.0-gke.1000`).
60    ///
61    /// You can list all supported versions on a given Google Cloud region by
62    /// calling
63    /// [GetAttachedServerConfig][google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig].
64    ///
65    /// [google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig]: crate::client::AttachedClusters::get_attached_server_config
66    pub platform_version: std::string::String,
67
68    /// Required. The Kubernetes distribution of the underlying attached cluster.
69    ///
70    /// Supported values: ["eks", "aks", "generic"].
71    pub distribution: std::string::String,
72
73    /// Output only. The region where this cluster runs.
74    ///
75    /// For EKS clusters, this is a AWS region. For AKS clusters,
76    /// this is an Azure region.
77    pub cluster_region: std::string::String,
78
79    /// Required. Fleet configuration.
80    pub fleet: std::option::Option<crate::model::Fleet>,
81
82    /// Output only. The current state of the cluster.
83    pub state: crate::model::attached_cluster::State,
84
85    /// Output only. A globally unique identifier for the cluster.
86    pub uid: std::string::String,
87
88    /// Output only. If set, there are currently changes in flight to the cluster.
89    pub reconciling: bool,
90
91    /// Output only. The time at which this cluster was registered.
92    pub create_time: std::option::Option<wkt::Timestamp>,
93
94    /// Output only. The time at which this cluster was last updated.
95    pub update_time: std::option::Option<wkt::Timestamp>,
96
97    /// Allows clients to perform consistent read-modify-writes
98    /// through optimistic concurrency control.
99    ///
100    /// Can be sent on update and delete requests to ensure the
101    /// client has an up-to-date value before proceeding.
102    pub etag: std::string::String,
103
104    /// Output only. The Kubernetes version of the cluster.
105    pub kubernetes_version: std::string::String,
106
107    /// Optional. Annotations on the cluster.
108    ///
109    /// This field has the same restrictions as Kubernetes annotations.
110    /// The total size of all keys and values combined is limited to 256k.
111    /// Key can have 2 segments: prefix (optional) and name (required),
112    /// separated by a slash (/).
113    /// Prefix must be a DNS subdomain.
114    /// Name must be 63 characters or less, begin and end with alphanumerics,
115    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
116    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
117
118    /// Output only. Workload Identity settings.
119    pub workload_identity_config: std::option::Option<crate::model::WorkloadIdentityConfig>,
120
121    /// Optional. Logging configuration for this cluster.
122    pub logging_config: std::option::Option<crate::model::LoggingConfig>,
123
124    /// Output only. A set of errors found in the cluster.
125    pub errors: std::vec::Vec<crate::model::AttachedClusterError>,
126
127    /// Optional. Configuration related to the cluster RBAC settings.
128    pub authorization: std::option::Option<crate::model::AttachedClustersAuthorization>,
129
130    /// Optional. Monitoring configuration for this cluster.
131    pub monitoring_config: std::option::Option<crate::model::MonitoringConfig>,
132
133    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
134    pub proxy_config: std::option::Option<crate::model::AttachedProxyConfig>,
135
136    /// Optional. Binary Authorization configuration for this cluster.
137    pub binary_authorization: std::option::Option<crate::model::BinaryAuthorization>,
138
139    /// Optional. Security Posture configuration for this cluster.
140    pub security_posture_config: std::option::Option<crate::model::SecurityPostureConfig>,
141
142    /// Optional. Input only. Tag keys and values directly bound to this resource.
143    ///
144    /// The tag key must be specified in the format
145    /// `<tag namespace>/<tag key name>,`
146    /// where the tag namespace is the ID of the organization or name of the
147    /// project that the tag key is defined in. The short name of a tag key or
148    /// value can have a maximum length of 256 characters. The permitted character
149    /// set for the short name includes UTF-8 encoded Unicode characters except
150    /// single quotation marks (`'`), double quotation marks (`"`), backslashes
151    /// (`\`), and forward slashes (`/`).
152    ///
153    /// See
154    /// [Tags](https://cloud.google.com/resource-manager/docs/tags/tags-overview)
155    /// for more details on Google Cloud Platform tags.
156    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
157
158    /// Optional. Kubernetes configurations for auto-installed components on the
159    /// cluster.
160    pub system_components_config: std::option::Option<crate::model::SystemComponentsConfig>,
161
162    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
163}
164
165impl AttachedCluster {
166    pub fn new() -> Self {
167        std::default::Default::default()
168    }
169
170    /// Sets the value of [name][crate::model::AttachedCluster::name].
171    ///
172    /// # Example
173    /// ```ignore,no_run
174    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
175    /// let x = AttachedCluster::new().set_name("example");
176    /// ```
177    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
178        self.name = v.into();
179        self
180    }
181
182    /// Sets the value of [description][crate::model::AttachedCluster::description].
183    ///
184    /// # Example
185    /// ```ignore,no_run
186    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
187    /// let x = AttachedCluster::new().set_description("example");
188    /// ```
189    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
190        self.description = v.into();
191        self
192    }
193
194    /// Sets the value of [oidc_config][crate::model::AttachedCluster::oidc_config].
195    ///
196    /// # Example
197    /// ```ignore,no_run
198    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
199    /// use google_cloud_gkemulticloud_v1::model::AttachedOidcConfig;
200    /// let x = AttachedCluster::new().set_oidc_config(AttachedOidcConfig::default()/* use setters */);
201    /// ```
202    pub fn set_oidc_config<T>(mut self, v: T) -> Self
203    where
204        T: std::convert::Into<crate::model::AttachedOidcConfig>,
205    {
206        self.oidc_config = std::option::Option::Some(v.into());
207        self
208    }
209
210    /// Sets or clears the value of [oidc_config][crate::model::AttachedCluster::oidc_config].
211    ///
212    /// # Example
213    /// ```ignore,no_run
214    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
215    /// use google_cloud_gkemulticloud_v1::model::AttachedOidcConfig;
216    /// let x = AttachedCluster::new().set_or_clear_oidc_config(Some(AttachedOidcConfig::default()/* use setters */));
217    /// let x = AttachedCluster::new().set_or_clear_oidc_config(None::<AttachedOidcConfig>);
218    /// ```
219    pub fn set_or_clear_oidc_config<T>(mut self, v: std::option::Option<T>) -> Self
220    where
221        T: std::convert::Into<crate::model::AttachedOidcConfig>,
222    {
223        self.oidc_config = v.map(|x| x.into());
224        self
225    }
226
227    /// Sets the value of [platform_version][crate::model::AttachedCluster::platform_version].
228    ///
229    /// # Example
230    /// ```ignore,no_run
231    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
232    /// let x = AttachedCluster::new().set_platform_version("example");
233    /// ```
234    pub fn set_platform_version<T: std::convert::Into<std::string::String>>(
235        mut self,
236        v: T,
237    ) -> Self {
238        self.platform_version = v.into();
239        self
240    }
241
242    /// Sets the value of [distribution][crate::model::AttachedCluster::distribution].
243    ///
244    /// # Example
245    /// ```ignore,no_run
246    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
247    /// let x = AttachedCluster::new().set_distribution("example");
248    /// ```
249    pub fn set_distribution<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
250        self.distribution = v.into();
251        self
252    }
253
254    /// Sets the value of [cluster_region][crate::model::AttachedCluster::cluster_region].
255    ///
256    /// # Example
257    /// ```ignore,no_run
258    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
259    /// let x = AttachedCluster::new().set_cluster_region("example");
260    /// ```
261    pub fn set_cluster_region<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
262        self.cluster_region = v.into();
263        self
264    }
265
266    /// Sets the value of [fleet][crate::model::AttachedCluster::fleet].
267    ///
268    /// # Example
269    /// ```ignore,no_run
270    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
271    /// use google_cloud_gkemulticloud_v1::model::Fleet;
272    /// let x = AttachedCluster::new().set_fleet(Fleet::default()/* use setters */);
273    /// ```
274    pub fn set_fleet<T>(mut self, v: T) -> Self
275    where
276        T: std::convert::Into<crate::model::Fleet>,
277    {
278        self.fleet = std::option::Option::Some(v.into());
279        self
280    }
281
282    /// Sets or clears the value of [fleet][crate::model::AttachedCluster::fleet].
283    ///
284    /// # Example
285    /// ```ignore,no_run
286    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
287    /// use google_cloud_gkemulticloud_v1::model::Fleet;
288    /// let x = AttachedCluster::new().set_or_clear_fleet(Some(Fleet::default()/* use setters */));
289    /// let x = AttachedCluster::new().set_or_clear_fleet(None::<Fleet>);
290    /// ```
291    pub fn set_or_clear_fleet<T>(mut self, v: std::option::Option<T>) -> Self
292    where
293        T: std::convert::Into<crate::model::Fleet>,
294    {
295        self.fleet = v.map(|x| x.into());
296        self
297    }
298
299    /// Sets the value of [state][crate::model::AttachedCluster::state].
300    ///
301    /// # Example
302    /// ```ignore,no_run
303    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
304    /// use google_cloud_gkemulticloud_v1::model::attached_cluster::State;
305    /// let x0 = AttachedCluster::new().set_state(State::Provisioning);
306    /// let x1 = AttachedCluster::new().set_state(State::Running);
307    /// let x2 = AttachedCluster::new().set_state(State::Reconciling);
308    /// ```
309    pub fn set_state<T: std::convert::Into<crate::model::attached_cluster::State>>(
310        mut self,
311        v: T,
312    ) -> Self {
313        self.state = v.into();
314        self
315    }
316
317    /// Sets the value of [uid][crate::model::AttachedCluster::uid].
318    ///
319    /// # Example
320    /// ```ignore,no_run
321    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
322    /// let x = AttachedCluster::new().set_uid("example");
323    /// ```
324    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
325        self.uid = v.into();
326        self
327    }
328
329    /// Sets the value of [reconciling][crate::model::AttachedCluster::reconciling].
330    ///
331    /// # Example
332    /// ```ignore,no_run
333    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
334    /// let x = AttachedCluster::new().set_reconciling(true);
335    /// ```
336    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
337        self.reconciling = v.into();
338        self
339    }
340
341    /// Sets the value of [create_time][crate::model::AttachedCluster::create_time].
342    ///
343    /// # Example
344    /// ```ignore,no_run
345    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
346    /// use wkt::Timestamp;
347    /// let x = AttachedCluster::new().set_create_time(Timestamp::default()/* use setters */);
348    /// ```
349    pub fn set_create_time<T>(mut self, v: T) -> Self
350    where
351        T: std::convert::Into<wkt::Timestamp>,
352    {
353        self.create_time = std::option::Option::Some(v.into());
354        self
355    }
356
357    /// Sets or clears the value of [create_time][crate::model::AttachedCluster::create_time].
358    ///
359    /// # Example
360    /// ```ignore,no_run
361    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
362    /// use wkt::Timestamp;
363    /// let x = AttachedCluster::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
364    /// let x = AttachedCluster::new().set_or_clear_create_time(None::<Timestamp>);
365    /// ```
366    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
367    where
368        T: std::convert::Into<wkt::Timestamp>,
369    {
370        self.create_time = v.map(|x| x.into());
371        self
372    }
373
374    /// Sets the value of [update_time][crate::model::AttachedCluster::update_time].
375    ///
376    /// # Example
377    /// ```ignore,no_run
378    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
379    /// use wkt::Timestamp;
380    /// let x = AttachedCluster::new().set_update_time(Timestamp::default()/* use setters */);
381    /// ```
382    pub fn set_update_time<T>(mut self, v: T) -> Self
383    where
384        T: std::convert::Into<wkt::Timestamp>,
385    {
386        self.update_time = std::option::Option::Some(v.into());
387        self
388    }
389
390    /// Sets or clears the value of [update_time][crate::model::AttachedCluster::update_time].
391    ///
392    /// # Example
393    /// ```ignore,no_run
394    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
395    /// use wkt::Timestamp;
396    /// let x = AttachedCluster::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
397    /// let x = AttachedCluster::new().set_or_clear_update_time(None::<Timestamp>);
398    /// ```
399    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
400    where
401        T: std::convert::Into<wkt::Timestamp>,
402    {
403        self.update_time = v.map(|x| x.into());
404        self
405    }
406
407    /// Sets the value of [etag][crate::model::AttachedCluster::etag].
408    ///
409    /// # Example
410    /// ```ignore,no_run
411    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
412    /// let x = AttachedCluster::new().set_etag("example");
413    /// ```
414    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
415        self.etag = v.into();
416        self
417    }
418
419    /// Sets the value of [kubernetes_version][crate::model::AttachedCluster::kubernetes_version].
420    ///
421    /// # Example
422    /// ```ignore,no_run
423    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
424    /// let x = AttachedCluster::new().set_kubernetes_version("example");
425    /// ```
426    pub fn set_kubernetes_version<T: std::convert::Into<std::string::String>>(
427        mut self,
428        v: T,
429    ) -> Self {
430        self.kubernetes_version = v.into();
431        self
432    }
433
434    /// Sets the value of [annotations][crate::model::AttachedCluster::annotations].
435    ///
436    /// # Example
437    /// ```ignore,no_run
438    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
439    /// let x = AttachedCluster::new().set_annotations([
440    ///     ("key0", "abc"),
441    ///     ("key1", "xyz"),
442    /// ]);
443    /// ```
444    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
445    where
446        T: std::iter::IntoIterator<Item = (K, V)>,
447        K: std::convert::Into<std::string::String>,
448        V: std::convert::Into<std::string::String>,
449    {
450        use std::iter::Iterator;
451        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
452        self
453    }
454
455    /// Sets the value of [workload_identity_config][crate::model::AttachedCluster::workload_identity_config].
456    ///
457    /// # Example
458    /// ```ignore,no_run
459    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
460    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
461    /// let x = AttachedCluster::new().set_workload_identity_config(WorkloadIdentityConfig::default()/* use setters */);
462    /// ```
463    pub fn set_workload_identity_config<T>(mut self, v: T) -> Self
464    where
465        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
466    {
467        self.workload_identity_config = std::option::Option::Some(v.into());
468        self
469    }
470
471    /// Sets or clears the value of [workload_identity_config][crate::model::AttachedCluster::workload_identity_config].
472    ///
473    /// # Example
474    /// ```ignore,no_run
475    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
476    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
477    /// let x = AttachedCluster::new().set_or_clear_workload_identity_config(Some(WorkloadIdentityConfig::default()/* use setters */));
478    /// let x = AttachedCluster::new().set_or_clear_workload_identity_config(None::<WorkloadIdentityConfig>);
479    /// ```
480    pub fn set_or_clear_workload_identity_config<T>(mut self, v: std::option::Option<T>) -> Self
481    where
482        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
483    {
484        self.workload_identity_config = v.map(|x| x.into());
485        self
486    }
487
488    /// Sets the value of [logging_config][crate::model::AttachedCluster::logging_config].
489    ///
490    /// # Example
491    /// ```ignore,no_run
492    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
493    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
494    /// let x = AttachedCluster::new().set_logging_config(LoggingConfig::default()/* use setters */);
495    /// ```
496    pub fn set_logging_config<T>(mut self, v: T) -> Self
497    where
498        T: std::convert::Into<crate::model::LoggingConfig>,
499    {
500        self.logging_config = std::option::Option::Some(v.into());
501        self
502    }
503
504    /// Sets or clears the value of [logging_config][crate::model::AttachedCluster::logging_config].
505    ///
506    /// # Example
507    /// ```ignore,no_run
508    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
509    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
510    /// let x = AttachedCluster::new().set_or_clear_logging_config(Some(LoggingConfig::default()/* use setters */));
511    /// let x = AttachedCluster::new().set_or_clear_logging_config(None::<LoggingConfig>);
512    /// ```
513    pub fn set_or_clear_logging_config<T>(mut self, v: std::option::Option<T>) -> Self
514    where
515        T: std::convert::Into<crate::model::LoggingConfig>,
516    {
517        self.logging_config = v.map(|x| x.into());
518        self
519    }
520
521    /// Sets the value of [errors][crate::model::AttachedCluster::errors].
522    ///
523    /// # Example
524    /// ```ignore,no_run
525    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
526    /// use google_cloud_gkemulticloud_v1::model::AttachedClusterError;
527    /// let x = AttachedCluster::new()
528    ///     .set_errors([
529    ///         AttachedClusterError::default()/* use setters */,
530    ///         AttachedClusterError::default()/* use (different) setters */,
531    ///     ]);
532    /// ```
533    pub fn set_errors<T, V>(mut self, v: T) -> Self
534    where
535        T: std::iter::IntoIterator<Item = V>,
536        V: std::convert::Into<crate::model::AttachedClusterError>,
537    {
538        use std::iter::Iterator;
539        self.errors = v.into_iter().map(|i| i.into()).collect();
540        self
541    }
542
543    /// Sets the value of [authorization][crate::model::AttachedCluster::authorization].
544    ///
545    /// # Example
546    /// ```ignore,no_run
547    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
548    /// use google_cloud_gkemulticloud_v1::model::AttachedClustersAuthorization;
549    /// let x = AttachedCluster::new().set_authorization(AttachedClustersAuthorization::default()/* use setters */);
550    /// ```
551    pub fn set_authorization<T>(mut self, v: T) -> Self
552    where
553        T: std::convert::Into<crate::model::AttachedClustersAuthorization>,
554    {
555        self.authorization = std::option::Option::Some(v.into());
556        self
557    }
558
559    /// Sets or clears the value of [authorization][crate::model::AttachedCluster::authorization].
560    ///
561    /// # Example
562    /// ```ignore,no_run
563    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
564    /// use google_cloud_gkemulticloud_v1::model::AttachedClustersAuthorization;
565    /// let x = AttachedCluster::new().set_or_clear_authorization(Some(AttachedClustersAuthorization::default()/* use setters */));
566    /// let x = AttachedCluster::new().set_or_clear_authorization(None::<AttachedClustersAuthorization>);
567    /// ```
568    pub fn set_or_clear_authorization<T>(mut self, v: std::option::Option<T>) -> Self
569    where
570        T: std::convert::Into<crate::model::AttachedClustersAuthorization>,
571    {
572        self.authorization = v.map(|x| x.into());
573        self
574    }
575
576    /// Sets the value of [monitoring_config][crate::model::AttachedCluster::monitoring_config].
577    ///
578    /// # Example
579    /// ```ignore,no_run
580    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
581    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
582    /// let x = AttachedCluster::new().set_monitoring_config(MonitoringConfig::default()/* use setters */);
583    /// ```
584    pub fn set_monitoring_config<T>(mut self, v: T) -> Self
585    where
586        T: std::convert::Into<crate::model::MonitoringConfig>,
587    {
588        self.monitoring_config = std::option::Option::Some(v.into());
589        self
590    }
591
592    /// Sets or clears the value of [monitoring_config][crate::model::AttachedCluster::monitoring_config].
593    ///
594    /// # Example
595    /// ```ignore,no_run
596    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
597    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
598    /// let x = AttachedCluster::new().set_or_clear_monitoring_config(Some(MonitoringConfig::default()/* use setters */));
599    /// let x = AttachedCluster::new().set_or_clear_monitoring_config(None::<MonitoringConfig>);
600    /// ```
601    pub fn set_or_clear_monitoring_config<T>(mut self, v: std::option::Option<T>) -> Self
602    where
603        T: std::convert::Into<crate::model::MonitoringConfig>,
604    {
605        self.monitoring_config = v.map(|x| x.into());
606        self
607    }
608
609    /// Sets the value of [proxy_config][crate::model::AttachedCluster::proxy_config].
610    ///
611    /// # Example
612    /// ```ignore,no_run
613    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
614    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
615    /// let x = AttachedCluster::new().set_proxy_config(AttachedProxyConfig::default()/* use setters */);
616    /// ```
617    pub fn set_proxy_config<T>(mut self, v: T) -> Self
618    where
619        T: std::convert::Into<crate::model::AttachedProxyConfig>,
620    {
621        self.proxy_config = std::option::Option::Some(v.into());
622        self
623    }
624
625    /// Sets or clears the value of [proxy_config][crate::model::AttachedCluster::proxy_config].
626    ///
627    /// # Example
628    /// ```ignore,no_run
629    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
630    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
631    /// let x = AttachedCluster::new().set_or_clear_proxy_config(Some(AttachedProxyConfig::default()/* use setters */));
632    /// let x = AttachedCluster::new().set_or_clear_proxy_config(None::<AttachedProxyConfig>);
633    /// ```
634    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
635    where
636        T: std::convert::Into<crate::model::AttachedProxyConfig>,
637    {
638        self.proxy_config = v.map(|x| x.into());
639        self
640    }
641
642    /// Sets the value of [binary_authorization][crate::model::AttachedCluster::binary_authorization].
643    ///
644    /// # Example
645    /// ```ignore,no_run
646    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
647    /// use google_cloud_gkemulticloud_v1::model::BinaryAuthorization;
648    /// let x = AttachedCluster::new().set_binary_authorization(BinaryAuthorization::default()/* use setters */);
649    /// ```
650    pub fn set_binary_authorization<T>(mut self, v: T) -> Self
651    where
652        T: std::convert::Into<crate::model::BinaryAuthorization>,
653    {
654        self.binary_authorization = std::option::Option::Some(v.into());
655        self
656    }
657
658    /// Sets or clears the value of [binary_authorization][crate::model::AttachedCluster::binary_authorization].
659    ///
660    /// # Example
661    /// ```ignore,no_run
662    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
663    /// use google_cloud_gkemulticloud_v1::model::BinaryAuthorization;
664    /// let x = AttachedCluster::new().set_or_clear_binary_authorization(Some(BinaryAuthorization::default()/* use setters */));
665    /// let x = AttachedCluster::new().set_or_clear_binary_authorization(None::<BinaryAuthorization>);
666    /// ```
667    pub fn set_or_clear_binary_authorization<T>(mut self, v: std::option::Option<T>) -> Self
668    where
669        T: std::convert::Into<crate::model::BinaryAuthorization>,
670    {
671        self.binary_authorization = v.map(|x| x.into());
672        self
673    }
674
675    /// Sets the value of [security_posture_config][crate::model::AttachedCluster::security_posture_config].
676    ///
677    /// # Example
678    /// ```ignore,no_run
679    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
680    /// use google_cloud_gkemulticloud_v1::model::SecurityPostureConfig;
681    /// let x = AttachedCluster::new().set_security_posture_config(SecurityPostureConfig::default()/* use setters */);
682    /// ```
683    pub fn set_security_posture_config<T>(mut self, v: T) -> Self
684    where
685        T: std::convert::Into<crate::model::SecurityPostureConfig>,
686    {
687        self.security_posture_config = std::option::Option::Some(v.into());
688        self
689    }
690
691    /// Sets or clears the value of [security_posture_config][crate::model::AttachedCluster::security_posture_config].
692    ///
693    /// # Example
694    /// ```ignore,no_run
695    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
696    /// use google_cloud_gkemulticloud_v1::model::SecurityPostureConfig;
697    /// let x = AttachedCluster::new().set_or_clear_security_posture_config(Some(SecurityPostureConfig::default()/* use setters */));
698    /// let x = AttachedCluster::new().set_or_clear_security_posture_config(None::<SecurityPostureConfig>);
699    /// ```
700    pub fn set_or_clear_security_posture_config<T>(mut self, v: std::option::Option<T>) -> Self
701    where
702        T: std::convert::Into<crate::model::SecurityPostureConfig>,
703    {
704        self.security_posture_config = v.map(|x| x.into());
705        self
706    }
707
708    /// Sets the value of [tags][crate::model::AttachedCluster::tags].
709    ///
710    /// # Example
711    /// ```ignore,no_run
712    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
713    /// let x = AttachedCluster::new().set_tags([
714    ///     ("key0", "abc"),
715    ///     ("key1", "xyz"),
716    /// ]);
717    /// ```
718    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
719    where
720        T: std::iter::IntoIterator<Item = (K, V)>,
721        K: std::convert::Into<std::string::String>,
722        V: std::convert::Into<std::string::String>,
723    {
724        use std::iter::Iterator;
725        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
726        self
727    }
728
729    /// Sets the value of [system_components_config][crate::model::AttachedCluster::system_components_config].
730    ///
731    /// # Example
732    /// ```ignore,no_run
733    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
734    /// use google_cloud_gkemulticloud_v1::model::SystemComponentsConfig;
735    /// let x = AttachedCluster::new().set_system_components_config(SystemComponentsConfig::default()/* use setters */);
736    /// ```
737    pub fn set_system_components_config<T>(mut self, v: T) -> Self
738    where
739        T: std::convert::Into<crate::model::SystemComponentsConfig>,
740    {
741        self.system_components_config = std::option::Option::Some(v.into());
742        self
743    }
744
745    /// Sets or clears the value of [system_components_config][crate::model::AttachedCluster::system_components_config].
746    ///
747    /// # Example
748    /// ```ignore,no_run
749    /// # use google_cloud_gkemulticloud_v1::model::AttachedCluster;
750    /// use google_cloud_gkemulticloud_v1::model::SystemComponentsConfig;
751    /// let x = AttachedCluster::new().set_or_clear_system_components_config(Some(SystemComponentsConfig::default()/* use setters */));
752    /// let x = AttachedCluster::new().set_or_clear_system_components_config(None::<SystemComponentsConfig>);
753    /// ```
754    pub fn set_or_clear_system_components_config<T>(mut self, v: std::option::Option<T>) -> Self
755    where
756        T: std::convert::Into<crate::model::SystemComponentsConfig>,
757    {
758        self.system_components_config = v.map(|x| x.into());
759        self
760    }
761}
762
763impl wkt::message::Message for AttachedCluster {
764    fn typename() -> &'static str {
765        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedCluster"
766    }
767}
768
769/// Defines additional types related to [AttachedCluster].
770pub mod attached_cluster {
771    #[allow(unused_imports)]
772    use super::*;
773
774    /// The lifecycle state of the cluster.
775    ///
776    /// # Working with unknown values
777    ///
778    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
779    /// additional enum variants at any time. Adding new variants is not considered
780    /// a breaking change. Applications should write their code in anticipation of:
781    ///
782    /// - New values appearing in future releases of the client library, **and**
783    /// - New values received dynamically, without application changes.
784    ///
785    /// Please consult the [Working with enums] section in the user guide for some
786    /// guidelines.
787    ///
788    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
789    #[derive(Clone, Debug, PartialEq)]
790    #[non_exhaustive]
791    pub enum State {
792        /// Not set.
793        Unspecified,
794        /// The PROVISIONING state indicates the cluster is being registered.
795        Provisioning,
796        /// The RUNNING state indicates the cluster has been register and is fully
797        /// usable.
798        Running,
799        /// The RECONCILING state indicates that some work is actively being done on
800        /// the cluster, such as upgrading software components.
801        Reconciling,
802        /// The STOPPING state indicates the cluster is being de-registered.
803        Stopping,
804        /// The ERROR state indicates the cluster is in a broken unrecoverable
805        /// state.
806        Error,
807        /// The DEGRADED state indicates the cluster requires user action to
808        /// restore full functionality.
809        Degraded,
810        /// If set, the enum was initialized with an unknown value.
811        ///
812        /// Applications can examine the value using [State::value] or
813        /// [State::name].
814        UnknownValue(state::UnknownValue),
815    }
816
817    #[doc(hidden)]
818    pub mod state {
819        #[allow(unused_imports)]
820        use super::*;
821        #[derive(Clone, Debug, PartialEq)]
822        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
823    }
824
825    impl State {
826        /// Gets the enum value.
827        ///
828        /// Returns `None` if the enum contains an unknown value deserialized from
829        /// the string representation of enums.
830        pub fn value(&self) -> std::option::Option<i32> {
831            match self {
832                Self::Unspecified => std::option::Option::Some(0),
833                Self::Provisioning => std::option::Option::Some(1),
834                Self::Running => std::option::Option::Some(2),
835                Self::Reconciling => std::option::Option::Some(3),
836                Self::Stopping => std::option::Option::Some(4),
837                Self::Error => std::option::Option::Some(5),
838                Self::Degraded => std::option::Option::Some(6),
839                Self::UnknownValue(u) => u.0.value(),
840            }
841        }
842
843        /// Gets the enum value as a string.
844        ///
845        /// Returns `None` if the enum contains an unknown value deserialized from
846        /// the integer representation of enums.
847        pub fn name(&self) -> std::option::Option<&str> {
848            match self {
849                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
850                Self::Provisioning => std::option::Option::Some("PROVISIONING"),
851                Self::Running => std::option::Option::Some("RUNNING"),
852                Self::Reconciling => std::option::Option::Some("RECONCILING"),
853                Self::Stopping => std::option::Option::Some("STOPPING"),
854                Self::Error => std::option::Option::Some("ERROR"),
855                Self::Degraded => std::option::Option::Some("DEGRADED"),
856                Self::UnknownValue(u) => u.0.name(),
857            }
858        }
859    }
860
861    impl std::default::Default for State {
862        fn default() -> Self {
863            use std::convert::From;
864            Self::from(0)
865        }
866    }
867
868    impl std::fmt::Display for State {
869        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
870            wkt::internal::display_enum(f, self.name(), self.value())
871        }
872    }
873
874    impl std::convert::From<i32> for State {
875        fn from(value: i32) -> Self {
876            match value {
877                0 => Self::Unspecified,
878                1 => Self::Provisioning,
879                2 => Self::Running,
880                3 => Self::Reconciling,
881                4 => Self::Stopping,
882                5 => Self::Error,
883                6 => Self::Degraded,
884                _ => Self::UnknownValue(state::UnknownValue(
885                    wkt::internal::UnknownEnumValue::Integer(value),
886                )),
887            }
888        }
889    }
890
891    impl std::convert::From<&str> for State {
892        fn from(value: &str) -> Self {
893            use std::string::ToString;
894            match value {
895                "STATE_UNSPECIFIED" => Self::Unspecified,
896                "PROVISIONING" => Self::Provisioning,
897                "RUNNING" => Self::Running,
898                "RECONCILING" => Self::Reconciling,
899                "STOPPING" => Self::Stopping,
900                "ERROR" => Self::Error,
901                "DEGRADED" => Self::Degraded,
902                _ => Self::UnknownValue(state::UnknownValue(
903                    wkt::internal::UnknownEnumValue::String(value.to_string()),
904                )),
905            }
906        }
907    }
908
909    impl serde::ser::Serialize for State {
910        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
911        where
912            S: serde::Serializer,
913        {
914            match self {
915                Self::Unspecified => serializer.serialize_i32(0),
916                Self::Provisioning => serializer.serialize_i32(1),
917                Self::Running => serializer.serialize_i32(2),
918                Self::Reconciling => serializer.serialize_i32(3),
919                Self::Stopping => serializer.serialize_i32(4),
920                Self::Error => serializer.serialize_i32(5),
921                Self::Degraded => serializer.serialize_i32(6),
922                Self::UnknownValue(u) => u.0.serialize(serializer),
923            }
924        }
925    }
926
927    impl<'de> serde::de::Deserialize<'de> for State {
928        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
929        where
930            D: serde::Deserializer<'de>,
931        {
932            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
933                ".google.cloud.gkemulticloud.v1.AttachedCluster.State",
934            ))
935        }
936    }
937}
938
939/// Configuration related to the cluster RBAC settings.
940#[derive(Clone, Default, PartialEq)]
941#[non_exhaustive]
942pub struct AttachedClustersAuthorization {
943    /// Optional. Users that can perform operations as a cluster admin. A managed
944    /// ClusterRoleBinding will be created to grant the `cluster-admin` ClusterRole
945    /// to the users. Up to ten admin users can be provided.
946    ///
947    /// For more info on RBAC, see
948    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
949    pub admin_users: std::vec::Vec<crate::model::AttachedClusterUser>,
950
951    /// Optional. Groups of users that can perform operations as a cluster admin. A
952    /// managed ClusterRoleBinding will be created to grant the `cluster-admin`
953    /// ClusterRole to the groups. Up to ten admin groups can be provided.
954    ///
955    /// For more info on RBAC, see
956    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
957    pub admin_groups: std::vec::Vec<crate::model::AttachedClusterGroup>,
958
959    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
960}
961
962impl AttachedClustersAuthorization {
963    pub fn new() -> Self {
964        std::default::Default::default()
965    }
966
967    /// Sets the value of [admin_users][crate::model::AttachedClustersAuthorization::admin_users].
968    ///
969    /// # Example
970    /// ```ignore,no_run
971    /// # use google_cloud_gkemulticloud_v1::model::AttachedClustersAuthorization;
972    /// use google_cloud_gkemulticloud_v1::model::AttachedClusterUser;
973    /// let x = AttachedClustersAuthorization::new()
974    ///     .set_admin_users([
975    ///         AttachedClusterUser::default()/* use setters */,
976    ///         AttachedClusterUser::default()/* use (different) setters */,
977    ///     ]);
978    /// ```
979    pub fn set_admin_users<T, V>(mut self, v: T) -> Self
980    where
981        T: std::iter::IntoIterator<Item = V>,
982        V: std::convert::Into<crate::model::AttachedClusterUser>,
983    {
984        use std::iter::Iterator;
985        self.admin_users = v.into_iter().map(|i| i.into()).collect();
986        self
987    }
988
989    /// Sets the value of [admin_groups][crate::model::AttachedClustersAuthorization::admin_groups].
990    ///
991    /// # Example
992    /// ```ignore,no_run
993    /// # use google_cloud_gkemulticloud_v1::model::AttachedClustersAuthorization;
994    /// use google_cloud_gkemulticloud_v1::model::AttachedClusterGroup;
995    /// let x = AttachedClustersAuthorization::new()
996    ///     .set_admin_groups([
997    ///         AttachedClusterGroup::default()/* use setters */,
998    ///         AttachedClusterGroup::default()/* use (different) setters */,
999    ///     ]);
1000    /// ```
1001    pub fn set_admin_groups<T, V>(mut self, v: T) -> Self
1002    where
1003        T: std::iter::IntoIterator<Item = V>,
1004        V: std::convert::Into<crate::model::AttachedClusterGroup>,
1005    {
1006        use std::iter::Iterator;
1007        self.admin_groups = v.into_iter().map(|i| i.into()).collect();
1008        self
1009    }
1010}
1011
1012impl wkt::message::Message for AttachedClustersAuthorization {
1013    fn typename() -> &'static str {
1014        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedClustersAuthorization"
1015    }
1016}
1017
1018/// Identities of a user-type subject for Attached clusters.
1019#[derive(Clone, Default, PartialEq)]
1020#[non_exhaustive]
1021pub struct AttachedClusterUser {
1022    /// Required. The name of the user, e.g. `my-gcp-id@gmail.com`.
1023    pub username: std::string::String,
1024
1025    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1026}
1027
1028impl AttachedClusterUser {
1029    pub fn new() -> Self {
1030        std::default::Default::default()
1031    }
1032
1033    /// Sets the value of [username][crate::model::AttachedClusterUser::username].
1034    ///
1035    /// # Example
1036    /// ```ignore,no_run
1037    /// # use google_cloud_gkemulticloud_v1::model::AttachedClusterUser;
1038    /// let x = AttachedClusterUser::new().set_username("example");
1039    /// ```
1040    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1041        self.username = v.into();
1042        self
1043    }
1044}
1045
1046impl wkt::message::Message for AttachedClusterUser {
1047    fn typename() -> &'static str {
1048        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedClusterUser"
1049    }
1050}
1051
1052/// Identities of a group-type subject for Attached clusters.
1053#[derive(Clone, Default, PartialEq)]
1054#[non_exhaustive]
1055pub struct AttachedClusterGroup {
1056    /// Required. The name of the group, e.g. `my-group@domain.com`.
1057    pub group: std::string::String,
1058
1059    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1060}
1061
1062impl AttachedClusterGroup {
1063    pub fn new() -> Self {
1064        std::default::Default::default()
1065    }
1066
1067    /// Sets the value of [group][crate::model::AttachedClusterGroup::group].
1068    ///
1069    /// # Example
1070    /// ```ignore,no_run
1071    /// # use google_cloud_gkemulticloud_v1::model::AttachedClusterGroup;
1072    /// let x = AttachedClusterGroup::new().set_group("example");
1073    /// ```
1074    pub fn set_group<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1075        self.group = v.into();
1076        self
1077    }
1078}
1079
1080impl wkt::message::Message for AttachedClusterGroup {
1081    fn typename() -> &'static str {
1082        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedClusterGroup"
1083    }
1084}
1085
1086/// OIDC discovery information of the target cluster.
1087///
1088/// Kubernetes Service Account (KSA) tokens are JWT tokens signed by the cluster
1089/// API server. This fields indicates how Google Cloud Platform services
1090/// validate KSA tokens in order to allow system workloads (such as GKE Connect
1091/// and telemetry agents) to authenticate back to Google Cloud Platform.
1092///
1093/// Both clusters with public and private issuer URLs are supported.
1094/// Clusters with public issuers only need to specify the `issuer_url` field
1095/// while clusters with private issuers need to provide both
1096/// `issuer_url` and `oidc_jwks`.
1097#[derive(Clone, Default, PartialEq)]
1098#[non_exhaustive]
1099pub struct AttachedOidcConfig {
1100    /// A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://`.
1101    pub issuer_url: std::string::String,
1102
1103    /// Optional. OIDC verification keys in JWKS format (RFC 7517).
1104    /// It contains a list of OIDC verification keys that can be used to verify
1105    /// OIDC JWTs.
1106    ///
1107    /// This field is required for cluster that doesn't have a publicly available
1108    /// discovery endpoint. When provided, it will be directly used
1109    /// to verify the OIDC JWT asserted by the IDP.
1110    pub jwks: ::bytes::Bytes,
1111
1112    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1113}
1114
1115impl AttachedOidcConfig {
1116    pub fn new() -> Self {
1117        std::default::Default::default()
1118    }
1119
1120    /// Sets the value of [issuer_url][crate::model::AttachedOidcConfig::issuer_url].
1121    ///
1122    /// # Example
1123    /// ```ignore,no_run
1124    /// # use google_cloud_gkemulticloud_v1::model::AttachedOidcConfig;
1125    /// let x = AttachedOidcConfig::new().set_issuer_url("example");
1126    /// ```
1127    pub fn set_issuer_url<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1128        self.issuer_url = v.into();
1129        self
1130    }
1131
1132    /// Sets the value of [jwks][crate::model::AttachedOidcConfig::jwks].
1133    ///
1134    /// # Example
1135    /// ```ignore,no_run
1136    /// # use google_cloud_gkemulticloud_v1::model::AttachedOidcConfig;
1137    /// let x = AttachedOidcConfig::new().set_jwks(bytes::Bytes::from_static(b"example"));
1138    /// ```
1139    pub fn set_jwks<T: std::convert::Into<::bytes::Bytes>>(mut self, v: T) -> Self {
1140        self.jwks = v.into();
1141        self
1142    }
1143}
1144
1145impl wkt::message::Message for AttachedOidcConfig {
1146    fn typename() -> &'static str {
1147        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedOidcConfig"
1148    }
1149}
1150
1151/// AttachedServerConfig provides information about supported
1152/// Kubernetes versions
1153#[derive(Clone, Default, PartialEq)]
1154#[non_exhaustive]
1155pub struct AttachedServerConfig {
1156    /// The resource name of the config.
1157    pub name: std::string::String,
1158
1159    /// List of valid platform versions.
1160    pub valid_versions: std::vec::Vec<crate::model::AttachedPlatformVersionInfo>,
1161
1162    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1163}
1164
1165impl AttachedServerConfig {
1166    pub fn new() -> Self {
1167        std::default::Default::default()
1168    }
1169
1170    /// Sets the value of [name][crate::model::AttachedServerConfig::name].
1171    ///
1172    /// # Example
1173    /// ```ignore,no_run
1174    /// # use google_cloud_gkemulticloud_v1::model::AttachedServerConfig;
1175    /// let x = AttachedServerConfig::new().set_name("example");
1176    /// ```
1177    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1178        self.name = v.into();
1179        self
1180    }
1181
1182    /// Sets the value of [valid_versions][crate::model::AttachedServerConfig::valid_versions].
1183    ///
1184    /// # Example
1185    /// ```ignore,no_run
1186    /// # use google_cloud_gkemulticloud_v1::model::AttachedServerConfig;
1187    /// use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1188    /// let x = AttachedServerConfig::new()
1189    ///     .set_valid_versions([
1190    ///         AttachedPlatformVersionInfo::default()/* use setters */,
1191    ///         AttachedPlatformVersionInfo::default()/* use (different) setters */,
1192    ///     ]);
1193    /// ```
1194    pub fn set_valid_versions<T, V>(mut self, v: T) -> Self
1195    where
1196        T: std::iter::IntoIterator<Item = V>,
1197        V: std::convert::Into<crate::model::AttachedPlatformVersionInfo>,
1198    {
1199        use std::iter::Iterator;
1200        self.valid_versions = v.into_iter().map(|i| i.into()).collect();
1201        self
1202    }
1203}
1204
1205impl wkt::message::Message for AttachedServerConfig {
1206    fn typename() -> &'static str {
1207        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedServerConfig"
1208    }
1209}
1210
1211/// Information about a supported Attached Clusters platform version.
1212#[derive(Clone, Default, PartialEq)]
1213#[non_exhaustive]
1214pub struct AttachedPlatformVersionInfo {
1215    /// Platform version name.
1216    pub version: std::string::String,
1217
1218    /// Optional. True if the version is available for attachedcluster creation. If
1219    /// a version is enabled, it can be used to attach new clusters.
1220    pub enabled: bool,
1221
1222    /// Optional. True if this cluster version belongs to a minor version that has
1223    /// reached its end of life and is no longer in scope to receive security and
1224    /// bug fixes.
1225    pub end_of_life: bool,
1226
1227    /// Optional. The estimated date (in Pacific Time) when this cluster version
1228    /// will reach its end of life. Or if this version is no longer supported (the
1229    /// `end_of_life` field is true), this is the actual date (in Pacific time)
1230    /// when the version reached its end of life.
1231    pub end_of_life_date: std::option::Option<google_cloud_type::model::Date>,
1232
1233    /// Optional. The date (in Pacific Time) when the cluster version was released.
1234    pub release_date: std::option::Option<google_cloud_type::model::Date>,
1235
1236    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1237}
1238
1239impl AttachedPlatformVersionInfo {
1240    pub fn new() -> Self {
1241        std::default::Default::default()
1242    }
1243
1244    /// Sets the value of [version][crate::model::AttachedPlatformVersionInfo::version].
1245    ///
1246    /// # Example
1247    /// ```ignore,no_run
1248    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1249    /// let x = AttachedPlatformVersionInfo::new().set_version("example");
1250    /// ```
1251    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1252        self.version = v.into();
1253        self
1254    }
1255
1256    /// Sets the value of [enabled][crate::model::AttachedPlatformVersionInfo::enabled].
1257    ///
1258    /// # Example
1259    /// ```ignore,no_run
1260    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1261    /// let x = AttachedPlatformVersionInfo::new().set_enabled(true);
1262    /// ```
1263    pub fn set_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
1264        self.enabled = v.into();
1265        self
1266    }
1267
1268    /// Sets the value of [end_of_life][crate::model::AttachedPlatformVersionInfo::end_of_life].
1269    ///
1270    /// # Example
1271    /// ```ignore,no_run
1272    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1273    /// let x = AttachedPlatformVersionInfo::new().set_end_of_life(true);
1274    /// ```
1275    pub fn set_end_of_life<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
1276        self.end_of_life = v.into();
1277        self
1278    }
1279
1280    /// Sets the value of [end_of_life_date][crate::model::AttachedPlatformVersionInfo::end_of_life_date].
1281    ///
1282    /// # Example
1283    /// ```ignore,no_run
1284    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1285    /// use google_cloud_type::model::Date;
1286    /// let x = AttachedPlatformVersionInfo::new().set_end_of_life_date(Date::default()/* use setters */);
1287    /// ```
1288    pub fn set_end_of_life_date<T>(mut self, v: T) -> Self
1289    where
1290        T: std::convert::Into<google_cloud_type::model::Date>,
1291    {
1292        self.end_of_life_date = std::option::Option::Some(v.into());
1293        self
1294    }
1295
1296    /// Sets or clears the value of [end_of_life_date][crate::model::AttachedPlatformVersionInfo::end_of_life_date].
1297    ///
1298    /// # Example
1299    /// ```ignore,no_run
1300    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1301    /// use google_cloud_type::model::Date;
1302    /// let x = AttachedPlatformVersionInfo::new().set_or_clear_end_of_life_date(Some(Date::default()/* use setters */));
1303    /// let x = AttachedPlatformVersionInfo::new().set_or_clear_end_of_life_date(None::<Date>);
1304    /// ```
1305    pub fn set_or_clear_end_of_life_date<T>(mut self, v: std::option::Option<T>) -> Self
1306    where
1307        T: std::convert::Into<google_cloud_type::model::Date>,
1308    {
1309        self.end_of_life_date = v.map(|x| x.into());
1310        self
1311    }
1312
1313    /// Sets the value of [release_date][crate::model::AttachedPlatformVersionInfo::release_date].
1314    ///
1315    /// # Example
1316    /// ```ignore,no_run
1317    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1318    /// use google_cloud_type::model::Date;
1319    /// let x = AttachedPlatformVersionInfo::new().set_release_date(Date::default()/* use setters */);
1320    /// ```
1321    pub fn set_release_date<T>(mut self, v: T) -> Self
1322    where
1323        T: std::convert::Into<google_cloud_type::model::Date>,
1324    {
1325        self.release_date = std::option::Option::Some(v.into());
1326        self
1327    }
1328
1329    /// Sets or clears the value of [release_date][crate::model::AttachedPlatformVersionInfo::release_date].
1330    ///
1331    /// # Example
1332    /// ```ignore,no_run
1333    /// # use google_cloud_gkemulticloud_v1::model::AttachedPlatformVersionInfo;
1334    /// use google_cloud_type::model::Date;
1335    /// let x = AttachedPlatformVersionInfo::new().set_or_clear_release_date(Some(Date::default()/* use setters */));
1336    /// let x = AttachedPlatformVersionInfo::new().set_or_clear_release_date(None::<Date>);
1337    /// ```
1338    pub fn set_or_clear_release_date<T>(mut self, v: std::option::Option<T>) -> Self
1339    where
1340        T: std::convert::Into<google_cloud_type::model::Date>,
1341    {
1342        self.release_date = v.map(|x| x.into());
1343        self
1344    }
1345}
1346
1347impl wkt::message::Message for AttachedPlatformVersionInfo {
1348    fn typename() -> &'static str {
1349        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedPlatformVersionInfo"
1350    }
1351}
1352
1353/// AttachedClusterError describes errors found on attached clusters.
1354#[derive(Clone, Default, PartialEq)]
1355#[non_exhaustive]
1356pub struct AttachedClusterError {
1357    /// Human-friendly description of the error.
1358    pub message: std::string::String,
1359
1360    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1361}
1362
1363impl AttachedClusterError {
1364    pub fn new() -> Self {
1365        std::default::Default::default()
1366    }
1367
1368    /// Sets the value of [message][crate::model::AttachedClusterError::message].
1369    ///
1370    /// # Example
1371    /// ```ignore,no_run
1372    /// # use google_cloud_gkemulticloud_v1::model::AttachedClusterError;
1373    /// let x = AttachedClusterError::new().set_message("example");
1374    /// ```
1375    pub fn set_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1376        self.message = v.into();
1377        self
1378    }
1379}
1380
1381impl wkt::message::Message for AttachedClusterError {
1382    fn typename() -> &'static str {
1383        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedClusterError"
1384    }
1385}
1386
1387/// Details of a proxy config.
1388#[derive(Clone, Default, PartialEq)]
1389#[non_exhaustive]
1390pub struct AttachedProxyConfig {
1391    /// The Kubernetes Secret resource that contains the HTTP(S) proxy
1392    /// configuration. The secret must be a JSON encoded proxy configuration
1393    /// as described in
1394    /// <https://cloud.google.com/kubernetes-engine/multi-cloud/docs/attached/eks/how-to/use-a-proxy#configure-proxy-support>
1395    /// for EKS clusters and
1396    /// <https://cloud.google.com/kubernetes-engine/multi-cloud/docs/attached/aks/how-to/use-a-proxy#configure-proxy-support>
1397    /// for AKS clusters.
1398    pub kubernetes_secret: std::option::Option<crate::model::KubernetesSecret>,
1399
1400    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1401}
1402
1403impl AttachedProxyConfig {
1404    pub fn new() -> Self {
1405        std::default::Default::default()
1406    }
1407
1408    /// Sets the value of [kubernetes_secret][crate::model::AttachedProxyConfig::kubernetes_secret].
1409    ///
1410    /// # Example
1411    /// ```ignore,no_run
1412    /// # use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
1413    /// use google_cloud_gkemulticloud_v1::model::KubernetesSecret;
1414    /// let x = AttachedProxyConfig::new().set_kubernetes_secret(KubernetesSecret::default()/* use setters */);
1415    /// ```
1416    pub fn set_kubernetes_secret<T>(mut self, v: T) -> Self
1417    where
1418        T: std::convert::Into<crate::model::KubernetesSecret>,
1419    {
1420        self.kubernetes_secret = std::option::Option::Some(v.into());
1421        self
1422    }
1423
1424    /// Sets or clears the value of [kubernetes_secret][crate::model::AttachedProxyConfig::kubernetes_secret].
1425    ///
1426    /// # Example
1427    /// ```ignore,no_run
1428    /// # use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
1429    /// use google_cloud_gkemulticloud_v1::model::KubernetesSecret;
1430    /// let x = AttachedProxyConfig::new().set_or_clear_kubernetes_secret(Some(KubernetesSecret::default()/* use setters */));
1431    /// let x = AttachedProxyConfig::new().set_or_clear_kubernetes_secret(None::<KubernetesSecret>);
1432    /// ```
1433    pub fn set_or_clear_kubernetes_secret<T>(mut self, v: std::option::Option<T>) -> Self
1434    where
1435        T: std::convert::Into<crate::model::KubernetesSecret>,
1436    {
1437        self.kubernetes_secret = v.map(|x| x.into());
1438        self
1439    }
1440}
1441
1442impl wkt::message::Message for AttachedProxyConfig {
1443    fn typename() -> &'static str {
1444        "type.googleapis.com/google.cloud.gkemulticloud.v1.AttachedProxyConfig"
1445    }
1446}
1447
1448/// Information about a Kubernetes Secret
1449#[derive(Clone, Default, PartialEq)]
1450#[non_exhaustive]
1451pub struct KubernetesSecret {
1452    /// Name of the kubernetes secret.
1453    pub name: std::string::String,
1454
1455    /// Namespace in which the kubernetes secret is stored.
1456    pub namespace: std::string::String,
1457
1458    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1459}
1460
1461impl KubernetesSecret {
1462    pub fn new() -> Self {
1463        std::default::Default::default()
1464    }
1465
1466    /// Sets the value of [name][crate::model::KubernetesSecret::name].
1467    ///
1468    /// # Example
1469    /// ```ignore,no_run
1470    /// # use google_cloud_gkemulticloud_v1::model::KubernetesSecret;
1471    /// let x = KubernetesSecret::new().set_name("example");
1472    /// ```
1473    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1474        self.name = v.into();
1475        self
1476    }
1477
1478    /// Sets the value of [namespace][crate::model::KubernetesSecret::namespace].
1479    ///
1480    /// # Example
1481    /// ```ignore,no_run
1482    /// # use google_cloud_gkemulticloud_v1::model::KubernetesSecret;
1483    /// let x = KubernetesSecret::new().set_namespace("example");
1484    /// ```
1485    pub fn set_namespace<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1486        self.namespace = v.into();
1487        self
1488    }
1489}
1490
1491impl wkt::message::Message for KubernetesSecret {
1492    fn typename() -> &'static str {
1493        "type.googleapis.com/google.cloud.gkemulticloud.v1.KubernetesSecret"
1494    }
1495}
1496
1497/// SystemComponentsConfig defines the fields for customizing configurations for
1498/// auto-installed components.
1499#[derive(Clone, Default, PartialEq)]
1500#[non_exhaustive]
1501pub struct SystemComponentsConfig {
1502    /// Sets custom tolerations for pods created by auto-installed components.
1503    pub tolerations: std::vec::Vec<crate::model::Toleration>,
1504
1505    /// Sets custom labels for pods created by auto-installed components.
1506    pub labels: std::vec::Vec<crate::model::Label>,
1507
1508    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1509}
1510
1511impl SystemComponentsConfig {
1512    pub fn new() -> Self {
1513        std::default::Default::default()
1514    }
1515
1516    /// Sets the value of [tolerations][crate::model::SystemComponentsConfig::tolerations].
1517    ///
1518    /// # Example
1519    /// ```ignore,no_run
1520    /// # use google_cloud_gkemulticloud_v1::model::SystemComponentsConfig;
1521    /// use google_cloud_gkemulticloud_v1::model::Toleration;
1522    /// let x = SystemComponentsConfig::new()
1523    ///     .set_tolerations([
1524    ///         Toleration::default()/* use setters */,
1525    ///         Toleration::default()/* use (different) setters */,
1526    ///     ]);
1527    /// ```
1528    pub fn set_tolerations<T, V>(mut self, v: T) -> Self
1529    where
1530        T: std::iter::IntoIterator<Item = V>,
1531        V: std::convert::Into<crate::model::Toleration>,
1532    {
1533        use std::iter::Iterator;
1534        self.tolerations = v.into_iter().map(|i| i.into()).collect();
1535        self
1536    }
1537
1538    /// Sets the value of [labels][crate::model::SystemComponentsConfig::labels].
1539    ///
1540    /// # Example
1541    /// ```ignore,no_run
1542    /// # use google_cloud_gkemulticloud_v1::model::SystemComponentsConfig;
1543    /// use google_cloud_gkemulticloud_v1::model::Label;
1544    /// let x = SystemComponentsConfig::new()
1545    ///     .set_labels([
1546    ///         Label::default()/* use setters */,
1547    ///         Label::default()/* use (different) setters */,
1548    ///     ]);
1549    /// ```
1550    pub fn set_labels<T, V>(mut self, v: T) -> Self
1551    where
1552        T: std::iter::IntoIterator<Item = V>,
1553        V: std::convert::Into<crate::model::Label>,
1554    {
1555        use std::iter::Iterator;
1556        self.labels = v.into_iter().map(|i| i.into()).collect();
1557        self
1558    }
1559}
1560
1561impl wkt::message::Message for SystemComponentsConfig {
1562    fn typename() -> &'static str {
1563        "type.googleapis.com/google.cloud.gkemulticloud.v1.SystemComponentsConfig"
1564    }
1565}
1566
1567/// Toleration defines the fields for tolerations for pods created by
1568/// auto-installed components.
1569#[derive(Clone, Default, PartialEq)]
1570#[non_exhaustive]
1571pub struct Toleration {
1572    /// Key is the taint key that the toleration applies to.
1573    pub key: std::string::String,
1574
1575    /// Value is the taint value that the toleration applies to.
1576    pub value: std::string::String,
1577
1578    /// KeyOperator represents a key's relationship to the value e.g. 'Exist'.
1579    pub key_operator: crate::model::toleration::KeyOperator,
1580
1581    /// Effect indicates the taint effect to match e.g. 'NoSchedule'
1582    pub effect: crate::model::toleration::Effect,
1583
1584    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1585}
1586
1587impl Toleration {
1588    pub fn new() -> Self {
1589        std::default::Default::default()
1590    }
1591
1592    /// Sets the value of [key][crate::model::Toleration::key].
1593    ///
1594    /// # Example
1595    /// ```ignore,no_run
1596    /// # use google_cloud_gkemulticloud_v1::model::Toleration;
1597    /// let x = Toleration::new().set_key("example");
1598    /// ```
1599    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1600        self.key = v.into();
1601        self
1602    }
1603
1604    /// Sets the value of [value][crate::model::Toleration::value].
1605    ///
1606    /// # Example
1607    /// ```ignore,no_run
1608    /// # use google_cloud_gkemulticloud_v1::model::Toleration;
1609    /// let x = Toleration::new().set_value("example");
1610    /// ```
1611    pub fn set_value<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1612        self.value = v.into();
1613        self
1614    }
1615
1616    /// Sets the value of [key_operator][crate::model::Toleration::key_operator].
1617    ///
1618    /// # Example
1619    /// ```ignore,no_run
1620    /// # use google_cloud_gkemulticloud_v1::model::Toleration;
1621    /// use google_cloud_gkemulticloud_v1::model::toleration::KeyOperator;
1622    /// let x0 = Toleration::new().set_key_operator(KeyOperator::Equal);
1623    /// let x1 = Toleration::new().set_key_operator(KeyOperator::Exists);
1624    /// ```
1625    pub fn set_key_operator<T: std::convert::Into<crate::model::toleration::KeyOperator>>(
1626        mut self,
1627        v: T,
1628    ) -> Self {
1629        self.key_operator = v.into();
1630        self
1631    }
1632
1633    /// Sets the value of [effect][crate::model::Toleration::effect].
1634    ///
1635    /// # Example
1636    /// ```ignore,no_run
1637    /// # use google_cloud_gkemulticloud_v1::model::Toleration;
1638    /// use google_cloud_gkemulticloud_v1::model::toleration::Effect;
1639    /// let x0 = Toleration::new().set_effect(Effect::NoSchedule);
1640    /// let x1 = Toleration::new().set_effect(Effect::PreferNoSchedule);
1641    /// let x2 = Toleration::new().set_effect(Effect::NoExecute);
1642    /// ```
1643    pub fn set_effect<T: std::convert::Into<crate::model::toleration::Effect>>(
1644        mut self,
1645        v: T,
1646    ) -> Self {
1647        self.effect = v.into();
1648        self
1649    }
1650}
1651
1652impl wkt::message::Message for Toleration {
1653    fn typename() -> &'static str {
1654        "type.googleapis.com/google.cloud.gkemulticloud.v1.Toleration"
1655    }
1656}
1657
1658/// Defines additional types related to [Toleration].
1659pub mod toleration {
1660    #[allow(unused_imports)]
1661    use super::*;
1662
1663    /// KeyOperator represents a key's relationship to the value e.g. 'Equal'.
1664    ///
1665    /// # Working with unknown values
1666    ///
1667    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1668    /// additional enum variants at any time. Adding new variants is not considered
1669    /// a breaking change. Applications should write their code in anticipation of:
1670    ///
1671    /// - New values appearing in future releases of the client library, **and**
1672    /// - New values received dynamically, without application changes.
1673    ///
1674    /// Please consult the [Working with enums] section in the user guide for some
1675    /// guidelines.
1676    ///
1677    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1678    #[derive(Clone, Debug, PartialEq)]
1679    #[non_exhaustive]
1680    pub enum KeyOperator {
1681        /// Operator is not specified.
1682        Unspecified,
1683        /// Operator maps to 'Equal'.
1684        Equal,
1685        /// Operator maps to 'Exists'.
1686        Exists,
1687        /// If set, the enum was initialized with an unknown value.
1688        ///
1689        /// Applications can examine the value using [KeyOperator::value] or
1690        /// [KeyOperator::name].
1691        UnknownValue(key_operator::UnknownValue),
1692    }
1693
1694    #[doc(hidden)]
1695    pub mod key_operator {
1696        #[allow(unused_imports)]
1697        use super::*;
1698        #[derive(Clone, Debug, PartialEq)]
1699        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1700    }
1701
1702    impl KeyOperator {
1703        /// Gets the enum value.
1704        ///
1705        /// Returns `None` if the enum contains an unknown value deserialized from
1706        /// the string representation of enums.
1707        pub fn value(&self) -> std::option::Option<i32> {
1708            match self {
1709                Self::Unspecified => std::option::Option::Some(0),
1710                Self::Equal => std::option::Option::Some(1),
1711                Self::Exists => std::option::Option::Some(2),
1712                Self::UnknownValue(u) => u.0.value(),
1713            }
1714        }
1715
1716        /// Gets the enum value as a string.
1717        ///
1718        /// Returns `None` if the enum contains an unknown value deserialized from
1719        /// the integer representation of enums.
1720        pub fn name(&self) -> std::option::Option<&str> {
1721            match self {
1722                Self::Unspecified => std::option::Option::Some("KEY_OPERATOR_UNSPECIFIED"),
1723                Self::Equal => std::option::Option::Some("KEY_OPERATOR_EQUAL"),
1724                Self::Exists => std::option::Option::Some("KEY_OPERATOR_EXISTS"),
1725                Self::UnknownValue(u) => u.0.name(),
1726            }
1727        }
1728    }
1729
1730    impl std::default::Default for KeyOperator {
1731        fn default() -> Self {
1732            use std::convert::From;
1733            Self::from(0)
1734        }
1735    }
1736
1737    impl std::fmt::Display for KeyOperator {
1738        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1739            wkt::internal::display_enum(f, self.name(), self.value())
1740        }
1741    }
1742
1743    impl std::convert::From<i32> for KeyOperator {
1744        fn from(value: i32) -> Self {
1745            match value {
1746                0 => Self::Unspecified,
1747                1 => Self::Equal,
1748                2 => Self::Exists,
1749                _ => Self::UnknownValue(key_operator::UnknownValue(
1750                    wkt::internal::UnknownEnumValue::Integer(value),
1751                )),
1752            }
1753        }
1754    }
1755
1756    impl std::convert::From<&str> for KeyOperator {
1757        fn from(value: &str) -> Self {
1758            use std::string::ToString;
1759            match value {
1760                "KEY_OPERATOR_UNSPECIFIED" => Self::Unspecified,
1761                "KEY_OPERATOR_EQUAL" => Self::Equal,
1762                "KEY_OPERATOR_EXISTS" => Self::Exists,
1763                _ => Self::UnknownValue(key_operator::UnknownValue(
1764                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1765                )),
1766            }
1767        }
1768    }
1769
1770    impl serde::ser::Serialize for KeyOperator {
1771        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1772        where
1773            S: serde::Serializer,
1774        {
1775            match self {
1776                Self::Unspecified => serializer.serialize_i32(0),
1777                Self::Equal => serializer.serialize_i32(1),
1778                Self::Exists => serializer.serialize_i32(2),
1779                Self::UnknownValue(u) => u.0.serialize(serializer),
1780            }
1781        }
1782    }
1783
1784    impl<'de> serde::de::Deserialize<'de> for KeyOperator {
1785        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1786        where
1787            D: serde::Deserializer<'de>,
1788        {
1789            deserializer.deserialize_any(wkt::internal::EnumVisitor::<KeyOperator>::new(
1790                ".google.cloud.gkemulticloud.v1.Toleration.KeyOperator",
1791            ))
1792        }
1793    }
1794
1795    /// Effect indicates the taint effect to match e.g. 'NoSchedule'.
1796    ///
1797    /// # Working with unknown values
1798    ///
1799    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1800    /// additional enum variants at any time. Adding new variants is not considered
1801    /// a breaking change. Applications should write their code in anticipation of:
1802    ///
1803    /// - New values appearing in future releases of the client library, **and**
1804    /// - New values received dynamically, without application changes.
1805    ///
1806    /// Please consult the [Working with enums] section in the user guide for some
1807    /// guidelines.
1808    ///
1809    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1810    #[derive(Clone, Debug, PartialEq)]
1811    #[non_exhaustive]
1812    pub enum Effect {
1813        /// Effect is not specified.
1814        Unspecified,
1815        /// Effect maps to 'NoSchedule'.
1816        NoSchedule,
1817        /// Effect maps to 'PreferNoSchedule'.
1818        PreferNoSchedule,
1819        /// Effect maps to 'NoExecute'.
1820        NoExecute,
1821        /// If set, the enum was initialized with an unknown value.
1822        ///
1823        /// Applications can examine the value using [Effect::value] or
1824        /// [Effect::name].
1825        UnknownValue(effect::UnknownValue),
1826    }
1827
1828    #[doc(hidden)]
1829    pub mod effect {
1830        #[allow(unused_imports)]
1831        use super::*;
1832        #[derive(Clone, Debug, PartialEq)]
1833        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1834    }
1835
1836    impl Effect {
1837        /// Gets the enum value.
1838        ///
1839        /// Returns `None` if the enum contains an unknown value deserialized from
1840        /// the string representation of enums.
1841        pub fn value(&self) -> std::option::Option<i32> {
1842            match self {
1843                Self::Unspecified => std::option::Option::Some(0),
1844                Self::NoSchedule => std::option::Option::Some(1),
1845                Self::PreferNoSchedule => std::option::Option::Some(2),
1846                Self::NoExecute => std::option::Option::Some(3),
1847                Self::UnknownValue(u) => u.0.value(),
1848            }
1849        }
1850
1851        /// Gets the enum value as a string.
1852        ///
1853        /// Returns `None` if the enum contains an unknown value deserialized from
1854        /// the integer representation of enums.
1855        pub fn name(&self) -> std::option::Option<&str> {
1856            match self {
1857                Self::Unspecified => std::option::Option::Some("EFFECT_UNSPECIFIED"),
1858                Self::NoSchedule => std::option::Option::Some("EFFECT_NO_SCHEDULE"),
1859                Self::PreferNoSchedule => std::option::Option::Some("EFFECT_PREFER_NO_SCHEDULE"),
1860                Self::NoExecute => std::option::Option::Some("EFFECT_NO_EXECUTE"),
1861                Self::UnknownValue(u) => u.0.name(),
1862            }
1863        }
1864    }
1865
1866    impl std::default::Default for Effect {
1867        fn default() -> Self {
1868            use std::convert::From;
1869            Self::from(0)
1870        }
1871    }
1872
1873    impl std::fmt::Display for Effect {
1874        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1875            wkt::internal::display_enum(f, self.name(), self.value())
1876        }
1877    }
1878
1879    impl std::convert::From<i32> for Effect {
1880        fn from(value: i32) -> Self {
1881            match value {
1882                0 => Self::Unspecified,
1883                1 => Self::NoSchedule,
1884                2 => Self::PreferNoSchedule,
1885                3 => Self::NoExecute,
1886                _ => Self::UnknownValue(effect::UnknownValue(
1887                    wkt::internal::UnknownEnumValue::Integer(value),
1888                )),
1889            }
1890        }
1891    }
1892
1893    impl std::convert::From<&str> for Effect {
1894        fn from(value: &str) -> Self {
1895            use std::string::ToString;
1896            match value {
1897                "EFFECT_UNSPECIFIED" => Self::Unspecified,
1898                "EFFECT_NO_SCHEDULE" => Self::NoSchedule,
1899                "EFFECT_PREFER_NO_SCHEDULE" => Self::PreferNoSchedule,
1900                "EFFECT_NO_EXECUTE" => Self::NoExecute,
1901                _ => Self::UnknownValue(effect::UnknownValue(
1902                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1903                )),
1904            }
1905        }
1906    }
1907
1908    impl serde::ser::Serialize for Effect {
1909        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1910        where
1911            S: serde::Serializer,
1912        {
1913            match self {
1914                Self::Unspecified => serializer.serialize_i32(0),
1915                Self::NoSchedule => serializer.serialize_i32(1),
1916                Self::PreferNoSchedule => serializer.serialize_i32(2),
1917                Self::NoExecute => serializer.serialize_i32(3),
1918                Self::UnknownValue(u) => u.0.serialize(serializer),
1919            }
1920        }
1921    }
1922
1923    impl<'de> serde::de::Deserialize<'de> for Effect {
1924        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1925        where
1926            D: serde::Deserializer<'de>,
1927        {
1928            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Effect>::new(
1929                ".google.cloud.gkemulticloud.v1.Toleration.Effect",
1930            ))
1931        }
1932    }
1933}
1934
1935/// Label defines the additional fields for labels for pods created by
1936/// auto-installed components.
1937#[derive(Clone, Default, PartialEq)]
1938#[non_exhaustive]
1939pub struct Label {
1940    /// This is the key of the label.
1941    pub key: std::string::String,
1942
1943    /// This is the value of the label.
1944    pub value: std::string::String,
1945
1946    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1947}
1948
1949impl Label {
1950    pub fn new() -> Self {
1951        std::default::Default::default()
1952    }
1953
1954    /// Sets the value of [key][crate::model::Label::key].
1955    ///
1956    /// # Example
1957    /// ```ignore,no_run
1958    /// # use google_cloud_gkemulticloud_v1::model::Label;
1959    /// let x = Label::new().set_key("example");
1960    /// ```
1961    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1962        self.key = v.into();
1963        self
1964    }
1965
1966    /// Sets the value of [value][crate::model::Label::value].
1967    ///
1968    /// # Example
1969    /// ```ignore,no_run
1970    /// # use google_cloud_gkemulticloud_v1::model::Label;
1971    /// let x = Label::new().set_value("example");
1972    /// ```
1973    pub fn set_value<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1974        self.value = v.into();
1975        self
1976    }
1977}
1978
1979impl wkt::message::Message for Label {
1980    fn typename() -> &'static str {
1981        "type.googleapis.com/google.cloud.gkemulticloud.v1.Label"
1982    }
1983}
1984
1985/// Request message for `AttachedClusters.GenerateAttachedClusterInstallManifest`
1986/// method.
1987#[derive(Clone, Default, PartialEq)]
1988#[non_exhaustive]
1989pub struct GenerateAttachedClusterInstallManifestRequest {
1990    /// Required. The parent location where this
1991    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
1992    /// will be created.
1993    ///
1994    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
1995    ///
1996    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
1997    /// for more details on Google Cloud resource names.
1998    ///
1999    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2000    pub parent: std::string::String,
2001
2002    /// Required. A client provided ID of the resource. Must be unique within the
2003    /// parent resource.
2004    ///
2005    /// The provided ID will be part of the
2006    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2007    /// name formatted as
2008    /// `projects/<project-id>/locations/<region>/attachedClusters/<cluster-id>`.
2009    ///
2010    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
2011    ///
2012    /// When generating an install manifest for importing an existing Membership
2013    /// resource, the attached_cluster_id field must be the Membership id.
2014    ///
2015    /// Membership names are formatted as
2016    /// `projects/<project-id>/locations/<region>/memberships/<membership-id>`.
2017    ///
2018    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2019    pub attached_cluster_id: std::string::String,
2020
2021    /// Required. The platform version for the cluster (e.g. `1.19.0-gke.1000`).
2022    ///
2023    /// You can list all supported versions on a given Google Cloud region by
2024    /// calling
2025    /// [GetAttachedServerConfig][google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig].
2026    ///
2027    /// [google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig]: crate::client::AttachedClusters::get_attached_server_config
2028    pub platform_version: std::string::String,
2029
2030    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
2031    pub proxy_config: std::option::Option<crate::model::AttachedProxyConfig>,
2032
2033    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2034}
2035
2036impl GenerateAttachedClusterInstallManifestRequest {
2037    pub fn new() -> Self {
2038        std::default::Default::default()
2039    }
2040
2041    /// Sets the value of [parent][crate::model::GenerateAttachedClusterInstallManifestRequest::parent].
2042    ///
2043    /// # Example
2044    /// ```ignore,no_run
2045    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestRequest;
2046    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_parent("example");
2047    /// ```
2048    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2049        self.parent = v.into();
2050        self
2051    }
2052
2053    /// Sets the value of [attached_cluster_id][crate::model::GenerateAttachedClusterInstallManifestRequest::attached_cluster_id].
2054    ///
2055    /// # Example
2056    /// ```ignore,no_run
2057    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestRequest;
2058    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_attached_cluster_id("example");
2059    /// ```
2060    pub fn set_attached_cluster_id<T: std::convert::Into<std::string::String>>(
2061        mut self,
2062        v: T,
2063    ) -> Self {
2064        self.attached_cluster_id = v.into();
2065        self
2066    }
2067
2068    /// Sets the value of [platform_version][crate::model::GenerateAttachedClusterInstallManifestRequest::platform_version].
2069    ///
2070    /// # Example
2071    /// ```ignore,no_run
2072    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestRequest;
2073    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_platform_version("example");
2074    /// ```
2075    pub fn set_platform_version<T: std::convert::Into<std::string::String>>(
2076        mut self,
2077        v: T,
2078    ) -> Self {
2079        self.platform_version = v.into();
2080        self
2081    }
2082
2083    /// Sets the value of [proxy_config][crate::model::GenerateAttachedClusterInstallManifestRequest::proxy_config].
2084    ///
2085    /// # Example
2086    /// ```ignore,no_run
2087    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestRequest;
2088    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
2089    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_proxy_config(AttachedProxyConfig::default()/* use setters */);
2090    /// ```
2091    pub fn set_proxy_config<T>(mut self, v: T) -> Self
2092    where
2093        T: std::convert::Into<crate::model::AttachedProxyConfig>,
2094    {
2095        self.proxy_config = std::option::Option::Some(v.into());
2096        self
2097    }
2098
2099    /// Sets or clears the value of [proxy_config][crate::model::GenerateAttachedClusterInstallManifestRequest::proxy_config].
2100    ///
2101    /// # Example
2102    /// ```ignore,no_run
2103    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestRequest;
2104    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
2105    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_or_clear_proxy_config(Some(AttachedProxyConfig::default()/* use setters */));
2106    /// let x = GenerateAttachedClusterInstallManifestRequest::new().set_or_clear_proxy_config(None::<AttachedProxyConfig>);
2107    /// ```
2108    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
2109    where
2110        T: std::convert::Into<crate::model::AttachedProxyConfig>,
2111    {
2112        self.proxy_config = v.map(|x| x.into());
2113        self
2114    }
2115}
2116
2117impl wkt::message::Message for GenerateAttachedClusterInstallManifestRequest {
2118    fn typename() -> &'static str {
2119        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAttachedClusterInstallManifestRequest"
2120    }
2121}
2122
2123/// Response message for
2124/// `AttachedClusters.GenerateAttachedClusterInstallManifest` method.
2125#[derive(Clone, Default, PartialEq)]
2126#[non_exhaustive]
2127pub struct GenerateAttachedClusterInstallManifestResponse {
2128    /// A set of Kubernetes resources (in YAML format) to be applied
2129    /// to the cluster to be attached.
2130    pub manifest: std::string::String,
2131
2132    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2133}
2134
2135impl GenerateAttachedClusterInstallManifestResponse {
2136    pub fn new() -> Self {
2137        std::default::Default::default()
2138    }
2139
2140    /// Sets the value of [manifest][crate::model::GenerateAttachedClusterInstallManifestResponse::manifest].
2141    ///
2142    /// # Example
2143    /// ```ignore,no_run
2144    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterInstallManifestResponse;
2145    /// let x = GenerateAttachedClusterInstallManifestResponse::new().set_manifest("example");
2146    /// ```
2147    pub fn set_manifest<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2148        self.manifest = v.into();
2149        self
2150    }
2151}
2152
2153impl wkt::message::Message for GenerateAttachedClusterInstallManifestResponse {
2154    fn typename() -> &'static str {
2155        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAttachedClusterInstallManifestResponse"
2156    }
2157}
2158
2159/// Request message for `AttachedClusters.CreateAttachedCluster` method.
2160#[derive(Clone, Default, PartialEq)]
2161#[non_exhaustive]
2162pub struct CreateAttachedClusterRequest {
2163    /// Required. The parent location where this
2164    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2165    /// will be created.
2166    ///
2167    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
2168    ///
2169    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2170    /// for more details on Google Cloud resource names.
2171    ///
2172    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2173    pub parent: std::string::String,
2174
2175    /// Required. The specification of the
2176    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] to create.
2177    ///
2178    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2179    pub attached_cluster: std::option::Option<crate::model::AttachedCluster>,
2180
2181    /// Required. A client provided ID the resource. Must be unique within the
2182    /// parent resource.
2183    ///
2184    /// The provided ID will be part of the
2185    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2186    /// name formatted as
2187    /// `projects/<project-id>/locations/<region>/attachedClusters/<cluster-id>`.
2188    ///
2189    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
2190    ///
2191    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2192    pub attached_cluster_id: std::string::String,
2193
2194    /// If set, only validate the request, but do not actually create the cluster.
2195    pub validate_only: bool,
2196
2197    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2198}
2199
2200impl CreateAttachedClusterRequest {
2201    pub fn new() -> Self {
2202        std::default::Default::default()
2203    }
2204
2205    /// Sets the value of [parent][crate::model::CreateAttachedClusterRequest::parent].
2206    ///
2207    /// # Example
2208    /// ```ignore,no_run
2209    /// # use google_cloud_gkemulticloud_v1::model::CreateAttachedClusterRequest;
2210    /// let x = CreateAttachedClusterRequest::new().set_parent("example");
2211    /// ```
2212    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2213        self.parent = v.into();
2214        self
2215    }
2216
2217    /// Sets the value of [attached_cluster][crate::model::CreateAttachedClusterRequest::attached_cluster].
2218    ///
2219    /// # Example
2220    /// ```ignore,no_run
2221    /// # use google_cloud_gkemulticloud_v1::model::CreateAttachedClusterRequest;
2222    /// use google_cloud_gkemulticloud_v1::model::AttachedCluster;
2223    /// let x = CreateAttachedClusterRequest::new().set_attached_cluster(AttachedCluster::default()/* use setters */);
2224    /// ```
2225    pub fn set_attached_cluster<T>(mut self, v: T) -> Self
2226    where
2227        T: std::convert::Into<crate::model::AttachedCluster>,
2228    {
2229        self.attached_cluster = std::option::Option::Some(v.into());
2230        self
2231    }
2232
2233    /// Sets or clears the value of [attached_cluster][crate::model::CreateAttachedClusterRequest::attached_cluster].
2234    ///
2235    /// # Example
2236    /// ```ignore,no_run
2237    /// # use google_cloud_gkemulticloud_v1::model::CreateAttachedClusterRequest;
2238    /// use google_cloud_gkemulticloud_v1::model::AttachedCluster;
2239    /// let x = CreateAttachedClusterRequest::new().set_or_clear_attached_cluster(Some(AttachedCluster::default()/* use setters */));
2240    /// let x = CreateAttachedClusterRequest::new().set_or_clear_attached_cluster(None::<AttachedCluster>);
2241    /// ```
2242    pub fn set_or_clear_attached_cluster<T>(mut self, v: std::option::Option<T>) -> Self
2243    where
2244        T: std::convert::Into<crate::model::AttachedCluster>,
2245    {
2246        self.attached_cluster = v.map(|x| x.into());
2247        self
2248    }
2249
2250    /// Sets the value of [attached_cluster_id][crate::model::CreateAttachedClusterRequest::attached_cluster_id].
2251    ///
2252    /// # Example
2253    /// ```ignore,no_run
2254    /// # use google_cloud_gkemulticloud_v1::model::CreateAttachedClusterRequest;
2255    /// let x = CreateAttachedClusterRequest::new().set_attached_cluster_id("example");
2256    /// ```
2257    pub fn set_attached_cluster_id<T: std::convert::Into<std::string::String>>(
2258        mut self,
2259        v: T,
2260    ) -> Self {
2261        self.attached_cluster_id = v.into();
2262        self
2263    }
2264
2265    /// Sets the value of [validate_only][crate::model::CreateAttachedClusterRequest::validate_only].
2266    ///
2267    /// # Example
2268    /// ```ignore,no_run
2269    /// # use google_cloud_gkemulticloud_v1::model::CreateAttachedClusterRequest;
2270    /// let x = CreateAttachedClusterRequest::new().set_validate_only(true);
2271    /// ```
2272    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2273        self.validate_only = v.into();
2274        self
2275    }
2276}
2277
2278impl wkt::message::Message for CreateAttachedClusterRequest {
2279    fn typename() -> &'static str {
2280        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAttachedClusterRequest"
2281    }
2282}
2283
2284/// Request message for `AttachedClusters.ImportAttachedCluster` method.
2285#[derive(Clone, Default, PartialEq)]
2286#[non_exhaustive]
2287pub struct ImportAttachedClusterRequest {
2288    /// Required. The parent location where this
2289    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2290    /// will be created.
2291    ///
2292    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
2293    ///
2294    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2295    /// for more details on Google Cloud resource names.
2296    ///
2297    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2298    pub parent: std::string::String,
2299
2300    /// If set, only validate the request, but do not actually import the cluster.
2301    pub validate_only: bool,
2302
2303    /// Required. The name of the fleet membership resource to import.
2304    pub fleet_membership: std::string::String,
2305
2306    /// Required. The platform version for the cluster (e.g. `1.19.0-gke.1000`).
2307    ///
2308    /// You can list all supported versions on a given Google Cloud region by
2309    /// calling
2310    /// [GetAttachedServerConfig][google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig].
2311    ///
2312    /// [google.cloud.gkemulticloud.v1.AttachedClusters.GetAttachedServerConfig]: crate::client::AttachedClusters::get_attached_server_config
2313    pub platform_version: std::string::String,
2314
2315    /// Required. The Kubernetes distribution of the underlying attached cluster.
2316    ///
2317    /// Supported values: ["eks", "aks", "generic"].
2318    pub distribution: std::string::String,
2319
2320    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
2321    pub proxy_config: std::option::Option<crate::model::AttachedProxyConfig>,
2322
2323    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2324}
2325
2326impl ImportAttachedClusterRequest {
2327    pub fn new() -> Self {
2328        std::default::Default::default()
2329    }
2330
2331    /// Sets the value of [parent][crate::model::ImportAttachedClusterRequest::parent].
2332    ///
2333    /// # Example
2334    /// ```ignore,no_run
2335    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2336    /// let x = ImportAttachedClusterRequest::new().set_parent("example");
2337    /// ```
2338    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2339        self.parent = v.into();
2340        self
2341    }
2342
2343    /// Sets the value of [validate_only][crate::model::ImportAttachedClusterRequest::validate_only].
2344    ///
2345    /// # Example
2346    /// ```ignore,no_run
2347    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2348    /// let x = ImportAttachedClusterRequest::new().set_validate_only(true);
2349    /// ```
2350    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2351        self.validate_only = v.into();
2352        self
2353    }
2354
2355    /// Sets the value of [fleet_membership][crate::model::ImportAttachedClusterRequest::fleet_membership].
2356    ///
2357    /// # Example
2358    /// ```ignore,no_run
2359    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2360    /// let x = ImportAttachedClusterRequest::new().set_fleet_membership("example");
2361    /// ```
2362    pub fn set_fleet_membership<T: std::convert::Into<std::string::String>>(
2363        mut self,
2364        v: T,
2365    ) -> Self {
2366        self.fleet_membership = v.into();
2367        self
2368    }
2369
2370    /// Sets the value of [platform_version][crate::model::ImportAttachedClusterRequest::platform_version].
2371    ///
2372    /// # Example
2373    /// ```ignore,no_run
2374    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2375    /// let x = ImportAttachedClusterRequest::new().set_platform_version("example");
2376    /// ```
2377    pub fn set_platform_version<T: std::convert::Into<std::string::String>>(
2378        mut self,
2379        v: T,
2380    ) -> Self {
2381        self.platform_version = v.into();
2382        self
2383    }
2384
2385    /// Sets the value of [distribution][crate::model::ImportAttachedClusterRequest::distribution].
2386    ///
2387    /// # Example
2388    /// ```ignore,no_run
2389    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2390    /// let x = ImportAttachedClusterRequest::new().set_distribution("example");
2391    /// ```
2392    pub fn set_distribution<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2393        self.distribution = v.into();
2394        self
2395    }
2396
2397    /// Sets the value of [proxy_config][crate::model::ImportAttachedClusterRequest::proxy_config].
2398    ///
2399    /// # Example
2400    /// ```ignore,no_run
2401    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2402    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
2403    /// let x = ImportAttachedClusterRequest::new().set_proxy_config(AttachedProxyConfig::default()/* use setters */);
2404    /// ```
2405    pub fn set_proxy_config<T>(mut self, v: T) -> Self
2406    where
2407        T: std::convert::Into<crate::model::AttachedProxyConfig>,
2408    {
2409        self.proxy_config = std::option::Option::Some(v.into());
2410        self
2411    }
2412
2413    /// Sets or clears the value of [proxy_config][crate::model::ImportAttachedClusterRequest::proxy_config].
2414    ///
2415    /// # Example
2416    /// ```ignore,no_run
2417    /// # use google_cloud_gkemulticloud_v1::model::ImportAttachedClusterRequest;
2418    /// use google_cloud_gkemulticloud_v1::model::AttachedProxyConfig;
2419    /// let x = ImportAttachedClusterRequest::new().set_or_clear_proxy_config(Some(AttachedProxyConfig::default()/* use setters */));
2420    /// let x = ImportAttachedClusterRequest::new().set_or_clear_proxy_config(None::<AttachedProxyConfig>);
2421    /// ```
2422    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
2423    where
2424        T: std::convert::Into<crate::model::AttachedProxyConfig>,
2425    {
2426        self.proxy_config = v.map(|x| x.into());
2427        self
2428    }
2429}
2430
2431impl wkt::message::Message for ImportAttachedClusterRequest {
2432    fn typename() -> &'static str {
2433        "type.googleapis.com/google.cloud.gkemulticloud.v1.ImportAttachedClusterRequest"
2434    }
2435}
2436
2437/// Request message for `AttachedClusters.UpdateAttachedCluster` method.
2438#[derive(Clone, Default, PartialEq)]
2439#[non_exhaustive]
2440pub struct UpdateAttachedClusterRequest {
2441    /// Required. The
2442    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2443    /// to update.
2444    ///
2445    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2446    pub attached_cluster: std::option::Option<crate::model::AttachedCluster>,
2447
2448    /// If set, only validate the request, but do not actually update the cluster.
2449    pub validate_only: bool,
2450
2451    /// Required. Mask of fields to update. At least one path must be supplied in
2452    /// this field. The elements of the repeated paths field can only include these
2453    /// fields from
2454    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster]:
2455    ///
2456    /// * `annotations`.
2457    /// * `authorization.admin_groups`.
2458    /// * `authorization.admin_users`.
2459    /// * `binary_authorization.evaluation_mode`.
2460    /// * `description`.
2461    /// * `logging_config.component_config.enable_components`.
2462    /// * `monitoring_config.managed_prometheus_config.enabled`.
2463    /// * `platform_version`.
2464    /// * `proxy_config.kubernetes_secret.name`.
2465    /// * `proxy_config.kubernetes_secret.namespace`.
2466    /// * `security_posture_config.vulnerability_mode`
2467    /// * `monitoring_config.cloud_monitoring_config.enabled`
2468    ///
2469    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2470    pub update_mask: std::option::Option<wkt::FieldMask>,
2471
2472    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2473}
2474
2475impl UpdateAttachedClusterRequest {
2476    pub fn new() -> Self {
2477        std::default::Default::default()
2478    }
2479
2480    /// Sets the value of [attached_cluster][crate::model::UpdateAttachedClusterRequest::attached_cluster].
2481    ///
2482    /// # Example
2483    /// ```ignore,no_run
2484    /// # use google_cloud_gkemulticloud_v1::model::UpdateAttachedClusterRequest;
2485    /// use google_cloud_gkemulticloud_v1::model::AttachedCluster;
2486    /// let x = UpdateAttachedClusterRequest::new().set_attached_cluster(AttachedCluster::default()/* use setters */);
2487    /// ```
2488    pub fn set_attached_cluster<T>(mut self, v: T) -> Self
2489    where
2490        T: std::convert::Into<crate::model::AttachedCluster>,
2491    {
2492        self.attached_cluster = std::option::Option::Some(v.into());
2493        self
2494    }
2495
2496    /// Sets or clears the value of [attached_cluster][crate::model::UpdateAttachedClusterRequest::attached_cluster].
2497    ///
2498    /// # Example
2499    /// ```ignore,no_run
2500    /// # use google_cloud_gkemulticloud_v1::model::UpdateAttachedClusterRequest;
2501    /// use google_cloud_gkemulticloud_v1::model::AttachedCluster;
2502    /// let x = UpdateAttachedClusterRequest::new().set_or_clear_attached_cluster(Some(AttachedCluster::default()/* use setters */));
2503    /// let x = UpdateAttachedClusterRequest::new().set_or_clear_attached_cluster(None::<AttachedCluster>);
2504    /// ```
2505    pub fn set_or_clear_attached_cluster<T>(mut self, v: std::option::Option<T>) -> Self
2506    where
2507        T: std::convert::Into<crate::model::AttachedCluster>,
2508    {
2509        self.attached_cluster = v.map(|x| x.into());
2510        self
2511    }
2512
2513    /// Sets the value of [validate_only][crate::model::UpdateAttachedClusterRequest::validate_only].
2514    ///
2515    /// # Example
2516    /// ```ignore,no_run
2517    /// # use google_cloud_gkemulticloud_v1::model::UpdateAttachedClusterRequest;
2518    /// let x = UpdateAttachedClusterRequest::new().set_validate_only(true);
2519    /// ```
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    /// Sets the value of [update_mask][crate::model::UpdateAttachedClusterRequest::update_mask].
2526    ///
2527    /// # Example
2528    /// ```ignore,no_run
2529    /// # use google_cloud_gkemulticloud_v1::model::UpdateAttachedClusterRequest;
2530    /// use wkt::FieldMask;
2531    /// let x = UpdateAttachedClusterRequest::new().set_update_mask(FieldMask::default()/* use setters */);
2532    /// ```
2533    pub fn set_update_mask<T>(mut self, v: T) -> Self
2534    where
2535        T: std::convert::Into<wkt::FieldMask>,
2536    {
2537        self.update_mask = std::option::Option::Some(v.into());
2538        self
2539    }
2540
2541    /// Sets or clears the value of [update_mask][crate::model::UpdateAttachedClusterRequest::update_mask].
2542    ///
2543    /// # Example
2544    /// ```ignore,no_run
2545    /// # use google_cloud_gkemulticloud_v1::model::UpdateAttachedClusterRequest;
2546    /// use wkt::FieldMask;
2547    /// let x = UpdateAttachedClusterRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
2548    /// let x = UpdateAttachedClusterRequest::new().set_or_clear_update_mask(None::<FieldMask>);
2549    /// ```
2550    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
2551    where
2552        T: std::convert::Into<wkt::FieldMask>,
2553    {
2554        self.update_mask = v.map(|x| x.into());
2555        self
2556    }
2557}
2558
2559impl wkt::message::Message for UpdateAttachedClusterRequest {
2560    fn typename() -> &'static str {
2561        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateAttachedClusterRequest"
2562    }
2563}
2564
2565/// Request message for `AttachedClusters.GetAttachedCluster` method.
2566#[derive(Clone, Default, PartialEq)]
2567#[non_exhaustive]
2568pub struct GetAttachedClusterRequest {
2569    /// Required. The name of the
2570    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2571    /// to describe.
2572    ///
2573    /// `AttachedCluster` names are formatted as
2574    /// `projects/<project-id>/locations/<region>/attachedClusters/<cluster-id>`.
2575    ///
2576    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2577    /// for more details on Google Cloud Platform resource names.
2578    ///
2579    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2580    pub name: std::string::String,
2581
2582    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2583}
2584
2585impl GetAttachedClusterRequest {
2586    pub fn new() -> Self {
2587        std::default::Default::default()
2588    }
2589
2590    /// Sets the value of [name][crate::model::GetAttachedClusterRequest::name].
2591    ///
2592    /// # Example
2593    /// ```ignore,no_run
2594    /// # use google_cloud_gkemulticloud_v1::model::GetAttachedClusterRequest;
2595    /// let x = GetAttachedClusterRequest::new().set_name("example");
2596    /// ```
2597    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2598        self.name = v.into();
2599        self
2600    }
2601}
2602
2603impl wkt::message::Message for GetAttachedClusterRequest {
2604    fn typename() -> &'static str {
2605        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAttachedClusterRequest"
2606    }
2607}
2608
2609/// Request message for `AttachedClusters.ListAttachedClusters` method.
2610#[derive(Clone, Default, PartialEq)]
2611#[non_exhaustive]
2612pub struct ListAttachedClustersRequest {
2613    /// Required. The parent location which owns this collection of
2614    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resources.
2615    ///
2616    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
2617    ///
2618    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2619    /// for more details on Google Cloud Platform resource names.
2620    ///
2621    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2622    pub parent: std::string::String,
2623
2624    /// The maximum number of items to return.
2625    ///
2626    /// If not specified, a default value of 50 will be used by the service.
2627    /// Regardless of the pageSize value, the response can include a partial list
2628    /// and a caller should only rely on response's
2629    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAttachedClustersResponse.next_page_token]
2630    /// to determine if there are more instances left to be queried.
2631    ///
2632    /// [google.cloud.gkemulticloud.v1.ListAttachedClustersResponse.next_page_token]: crate::model::ListAttachedClustersResponse::next_page_token
2633    pub page_size: i32,
2634
2635    /// The `nextPageToken` value returned from a previous
2636    /// [attachedClusters.list][google.cloud.gkemulticloud.v1.AttachedClusters.ListAttachedClusters]
2637    /// request, if any.
2638    ///
2639    /// [google.cloud.gkemulticloud.v1.AttachedClusters.ListAttachedClusters]: crate::client::AttachedClusters::list_attached_clusters
2640    pub page_token: std::string::String,
2641
2642    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2643}
2644
2645impl ListAttachedClustersRequest {
2646    pub fn new() -> Self {
2647        std::default::Default::default()
2648    }
2649
2650    /// Sets the value of [parent][crate::model::ListAttachedClustersRequest::parent].
2651    ///
2652    /// # Example
2653    /// ```ignore,no_run
2654    /// # use google_cloud_gkemulticloud_v1::model::ListAttachedClustersRequest;
2655    /// let x = ListAttachedClustersRequest::new().set_parent("example");
2656    /// ```
2657    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2658        self.parent = v.into();
2659        self
2660    }
2661
2662    /// Sets the value of [page_size][crate::model::ListAttachedClustersRequest::page_size].
2663    ///
2664    /// # Example
2665    /// ```ignore,no_run
2666    /// # use google_cloud_gkemulticloud_v1::model::ListAttachedClustersRequest;
2667    /// let x = ListAttachedClustersRequest::new().set_page_size(42);
2668    /// ```
2669    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2670        self.page_size = v.into();
2671        self
2672    }
2673
2674    /// Sets the value of [page_token][crate::model::ListAttachedClustersRequest::page_token].
2675    ///
2676    /// # Example
2677    /// ```ignore,no_run
2678    /// # use google_cloud_gkemulticloud_v1::model::ListAttachedClustersRequest;
2679    /// let x = ListAttachedClustersRequest::new().set_page_token("example");
2680    /// ```
2681    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2682        self.page_token = v.into();
2683        self
2684    }
2685}
2686
2687impl wkt::message::Message for ListAttachedClustersRequest {
2688    fn typename() -> &'static str {
2689        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAttachedClustersRequest"
2690    }
2691}
2692
2693/// Response message for `AttachedClusters.ListAttachedClusters` method.
2694#[derive(Clone, Default, PartialEq)]
2695#[non_exhaustive]
2696pub struct ListAttachedClustersResponse {
2697    /// A list of [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster]
2698    /// resources in the specified Google Cloud Platform project and region region.
2699    ///
2700    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2701    pub attached_clusters: std::vec::Vec<crate::model::AttachedCluster>,
2702
2703    /// Token to retrieve the next page of results, or empty if there are no more
2704    /// results in the list.
2705    pub next_page_token: std::string::String,
2706
2707    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2708}
2709
2710impl ListAttachedClustersResponse {
2711    pub fn new() -> Self {
2712        std::default::Default::default()
2713    }
2714
2715    /// Sets the value of [attached_clusters][crate::model::ListAttachedClustersResponse::attached_clusters].
2716    ///
2717    /// # Example
2718    /// ```ignore,no_run
2719    /// # use google_cloud_gkemulticloud_v1::model::ListAttachedClustersResponse;
2720    /// use google_cloud_gkemulticloud_v1::model::AttachedCluster;
2721    /// let x = ListAttachedClustersResponse::new()
2722    ///     .set_attached_clusters([
2723    ///         AttachedCluster::default()/* use setters */,
2724    ///         AttachedCluster::default()/* use (different) setters */,
2725    ///     ]);
2726    /// ```
2727    pub fn set_attached_clusters<T, V>(mut self, v: T) -> Self
2728    where
2729        T: std::iter::IntoIterator<Item = V>,
2730        V: std::convert::Into<crate::model::AttachedCluster>,
2731    {
2732        use std::iter::Iterator;
2733        self.attached_clusters = v.into_iter().map(|i| i.into()).collect();
2734        self
2735    }
2736
2737    /// Sets the value of [next_page_token][crate::model::ListAttachedClustersResponse::next_page_token].
2738    ///
2739    /// # Example
2740    /// ```ignore,no_run
2741    /// # use google_cloud_gkemulticloud_v1::model::ListAttachedClustersResponse;
2742    /// let x = ListAttachedClustersResponse::new().set_next_page_token("example");
2743    /// ```
2744    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2745        self.next_page_token = v.into();
2746        self
2747    }
2748}
2749
2750impl wkt::message::Message for ListAttachedClustersResponse {
2751    fn typename() -> &'static str {
2752        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAttachedClustersResponse"
2753    }
2754}
2755
2756#[doc(hidden)]
2757impl google_cloud_gax::paginator::internal::PageableResponse for ListAttachedClustersResponse {
2758    type PageItem = crate::model::AttachedCluster;
2759
2760    fn items(self) -> std::vec::Vec<Self::PageItem> {
2761        self.attached_clusters
2762    }
2763
2764    fn next_page_token(&self) -> std::string::String {
2765        use std::clone::Clone;
2766        self.next_page_token.clone()
2767    }
2768}
2769
2770/// Request message for `AttachedClusters.DeleteAttachedCluster` method.
2771#[derive(Clone, Default, PartialEq)]
2772#[non_exhaustive]
2773pub struct DeleteAttachedClusterRequest {
2774    /// Required. The resource name the
2775    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] to delete.
2776    ///
2777    /// `AttachedCluster` names are formatted as
2778    /// `projects/<project-id>/locations/<region>/attachedClusters/<cluster-id>`.
2779    ///
2780    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2781    /// for more details on Google Cloud Platform resource names.
2782    ///
2783    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2784    pub name: std::string::String,
2785
2786    /// If set, only validate the request, but do not actually delete the resource.
2787    pub validate_only: bool,
2788
2789    /// If set to true, and the
2790    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2791    /// is not found, the request will succeed but no action will be taken on the
2792    /// server and a completed [Operation][google.longrunning.Operation] will be
2793    /// returned.
2794    ///
2795    /// Useful for idempotent deletion.
2796    ///
2797    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2798    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
2799    pub allow_missing: bool,
2800
2801    /// If set to true, the deletion of
2802    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster] resource
2803    /// will succeed even if errors occur during deleting in cluster resources.
2804    /// Using this parameter may result in orphaned resources in the cluster.
2805    ///
2806    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2807    pub ignore_errors: bool,
2808
2809    /// The current etag of the
2810    /// [AttachedCluster][google.cloud.gkemulticloud.v1.AttachedCluster].
2811    ///
2812    /// Allows clients to perform deletions through optimistic concurrency control.
2813    ///
2814    /// If the provided etag does not match the current etag of the cluster,
2815    /// the request will fail and an ABORTED error will be returned.
2816    ///
2817    /// [google.cloud.gkemulticloud.v1.AttachedCluster]: crate::model::AttachedCluster
2818    pub etag: std::string::String,
2819
2820    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2821}
2822
2823impl DeleteAttachedClusterRequest {
2824    pub fn new() -> Self {
2825        std::default::Default::default()
2826    }
2827
2828    /// Sets the value of [name][crate::model::DeleteAttachedClusterRequest::name].
2829    ///
2830    /// # Example
2831    /// ```ignore,no_run
2832    /// # use google_cloud_gkemulticloud_v1::model::DeleteAttachedClusterRequest;
2833    /// let x = DeleteAttachedClusterRequest::new().set_name("example");
2834    /// ```
2835    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2836        self.name = v.into();
2837        self
2838    }
2839
2840    /// Sets the value of [validate_only][crate::model::DeleteAttachedClusterRequest::validate_only].
2841    ///
2842    /// # Example
2843    /// ```ignore,no_run
2844    /// # use google_cloud_gkemulticloud_v1::model::DeleteAttachedClusterRequest;
2845    /// let x = DeleteAttachedClusterRequest::new().set_validate_only(true);
2846    /// ```
2847    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2848        self.validate_only = v.into();
2849        self
2850    }
2851
2852    /// Sets the value of [allow_missing][crate::model::DeleteAttachedClusterRequest::allow_missing].
2853    ///
2854    /// # Example
2855    /// ```ignore,no_run
2856    /// # use google_cloud_gkemulticloud_v1::model::DeleteAttachedClusterRequest;
2857    /// let x = DeleteAttachedClusterRequest::new().set_allow_missing(true);
2858    /// ```
2859    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2860        self.allow_missing = v.into();
2861        self
2862    }
2863
2864    /// Sets the value of [ignore_errors][crate::model::DeleteAttachedClusterRequest::ignore_errors].
2865    ///
2866    /// # Example
2867    /// ```ignore,no_run
2868    /// # use google_cloud_gkemulticloud_v1::model::DeleteAttachedClusterRequest;
2869    /// let x = DeleteAttachedClusterRequest::new().set_ignore_errors(true);
2870    /// ```
2871    pub fn set_ignore_errors<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
2872        self.ignore_errors = v.into();
2873        self
2874    }
2875
2876    /// Sets the value of [etag][crate::model::DeleteAttachedClusterRequest::etag].
2877    ///
2878    /// # Example
2879    /// ```ignore,no_run
2880    /// # use google_cloud_gkemulticloud_v1::model::DeleteAttachedClusterRequest;
2881    /// let x = DeleteAttachedClusterRequest::new().set_etag("example");
2882    /// ```
2883    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2884        self.etag = v.into();
2885        self
2886    }
2887}
2888
2889impl wkt::message::Message for DeleteAttachedClusterRequest {
2890    fn typename() -> &'static str {
2891        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAttachedClusterRequest"
2892    }
2893}
2894
2895/// GetAttachedServerConfigRequest gets the server config for attached
2896/// clusters.
2897#[derive(Clone, Default, PartialEq)]
2898#[non_exhaustive]
2899pub struct GetAttachedServerConfigRequest {
2900    /// Required. The name of the
2901    /// [AttachedServerConfig][google.cloud.gkemulticloud.v1.AttachedServerConfig]
2902    /// resource to describe.
2903    ///
2904    /// `AttachedServerConfig` names are formatted as
2905    /// `projects/<project-id>/locations/<region>/attachedServerConfig`.
2906    ///
2907    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
2908    /// for more details on Google Cloud resource names.
2909    ///
2910    /// [google.cloud.gkemulticloud.v1.AttachedServerConfig]: crate::model::AttachedServerConfig
2911    pub name: std::string::String,
2912
2913    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2914}
2915
2916impl GetAttachedServerConfigRequest {
2917    pub fn new() -> Self {
2918        std::default::Default::default()
2919    }
2920
2921    /// Sets the value of [name][crate::model::GetAttachedServerConfigRequest::name].
2922    ///
2923    /// # Example
2924    /// ```ignore,no_run
2925    /// # use google_cloud_gkemulticloud_v1::model::GetAttachedServerConfigRequest;
2926    /// let x = GetAttachedServerConfigRequest::new().set_name("example");
2927    /// ```
2928    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2929        self.name = v.into();
2930        self
2931    }
2932}
2933
2934impl wkt::message::Message for GetAttachedServerConfigRequest {
2935    fn typename() -> &'static str {
2936        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAttachedServerConfigRequest"
2937    }
2938}
2939
2940#[derive(Clone, Default, PartialEq)]
2941#[non_exhaustive]
2942pub struct GenerateAttachedClusterAgentTokenRequest {
2943    /// Required.
2944    pub attached_cluster: std::string::String,
2945
2946    /// Required.
2947    pub subject_token: std::string::String,
2948
2949    /// Required.
2950    pub subject_token_type: std::string::String,
2951
2952    /// Required.
2953    pub version: std::string::String,
2954
2955    /// Optional.
2956    pub grant_type: std::string::String,
2957
2958    /// Optional.
2959    pub audience: std::string::String,
2960
2961    /// Optional.
2962    pub scope: std::string::String,
2963
2964    /// Optional.
2965    pub requested_token_type: std::string::String,
2966
2967    /// Optional.
2968    pub options: std::string::String,
2969
2970    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2971}
2972
2973impl GenerateAttachedClusterAgentTokenRequest {
2974    pub fn new() -> Self {
2975        std::default::Default::default()
2976    }
2977
2978    /// Sets the value of [attached_cluster][crate::model::GenerateAttachedClusterAgentTokenRequest::attached_cluster].
2979    ///
2980    /// # Example
2981    /// ```ignore,no_run
2982    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
2983    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_attached_cluster("example");
2984    /// ```
2985    pub fn set_attached_cluster<T: std::convert::Into<std::string::String>>(
2986        mut self,
2987        v: T,
2988    ) -> Self {
2989        self.attached_cluster = v.into();
2990        self
2991    }
2992
2993    /// Sets the value of [subject_token][crate::model::GenerateAttachedClusterAgentTokenRequest::subject_token].
2994    ///
2995    /// # Example
2996    /// ```ignore,no_run
2997    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
2998    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_subject_token("example");
2999    /// ```
3000    pub fn set_subject_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3001        self.subject_token = v.into();
3002        self
3003    }
3004
3005    /// Sets the value of [subject_token_type][crate::model::GenerateAttachedClusterAgentTokenRequest::subject_token_type].
3006    ///
3007    /// # Example
3008    /// ```ignore,no_run
3009    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3010    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_subject_token_type("example");
3011    /// ```
3012    pub fn set_subject_token_type<T: std::convert::Into<std::string::String>>(
3013        mut self,
3014        v: T,
3015    ) -> Self {
3016        self.subject_token_type = v.into();
3017        self
3018    }
3019
3020    /// Sets the value of [version][crate::model::GenerateAttachedClusterAgentTokenRequest::version].
3021    ///
3022    /// # Example
3023    /// ```ignore,no_run
3024    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3025    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_version("example");
3026    /// ```
3027    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3028        self.version = v.into();
3029        self
3030    }
3031
3032    /// Sets the value of [grant_type][crate::model::GenerateAttachedClusterAgentTokenRequest::grant_type].
3033    ///
3034    /// # Example
3035    /// ```ignore,no_run
3036    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3037    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_grant_type("example");
3038    /// ```
3039    pub fn set_grant_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3040        self.grant_type = v.into();
3041        self
3042    }
3043
3044    /// Sets the value of [audience][crate::model::GenerateAttachedClusterAgentTokenRequest::audience].
3045    ///
3046    /// # Example
3047    /// ```ignore,no_run
3048    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3049    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_audience("example");
3050    /// ```
3051    pub fn set_audience<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3052        self.audience = v.into();
3053        self
3054    }
3055
3056    /// Sets the value of [scope][crate::model::GenerateAttachedClusterAgentTokenRequest::scope].
3057    ///
3058    /// # Example
3059    /// ```ignore,no_run
3060    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3061    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_scope("example");
3062    /// ```
3063    pub fn set_scope<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3064        self.scope = v.into();
3065        self
3066    }
3067
3068    /// Sets the value of [requested_token_type][crate::model::GenerateAttachedClusterAgentTokenRequest::requested_token_type].
3069    ///
3070    /// # Example
3071    /// ```ignore,no_run
3072    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3073    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_requested_token_type("example");
3074    /// ```
3075    pub fn set_requested_token_type<T: std::convert::Into<std::string::String>>(
3076        mut self,
3077        v: T,
3078    ) -> Self {
3079        self.requested_token_type = v.into();
3080        self
3081    }
3082
3083    /// Sets the value of [options][crate::model::GenerateAttachedClusterAgentTokenRequest::options].
3084    ///
3085    /// # Example
3086    /// ```ignore,no_run
3087    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenRequest;
3088    /// let x = GenerateAttachedClusterAgentTokenRequest::new().set_options("example");
3089    /// ```
3090    pub fn set_options<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3091        self.options = v.into();
3092        self
3093    }
3094}
3095
3096impl wkt::message::Message for GenerateAttachedClusterAgentTokenRequest {
3097    fn typename() -> &'static str {
3098        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAttachedClusterAgentTokenRequest"
3099    }
3100}
3101
3102#[derive(Clone, Default, PartialEq)]
3103#[non_exhaustive]
3104pub struct GenerateAttachedClusterAgentTokenResponse {
3105    pub access_token: std::string::String,
3106
3107    pub expires_in: i32,
3108
3109    pub token_type: std::string::String,
3110
3111    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3112}
3113
3114impl GenerateAttachedClusterAgentTokenResponse {
3115    pub fn new() -> Self {
3116        std::default::Default::default()
3117    }
3118
3119    /// Sets the value of [access_token][crate::model::GenerateAttachedClusterAgentTokenResponse::access_token].
3120    ///
3121    /// # Example
3122    /// ```ignore,no_run
3123    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenResponse;
3124    /// let x = GenerateAttachedClusterAgentTokenResponse::new().set_access_token("example");
3125    /// ```
3126    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3127        self.access_token = v.into();
3128        self
3129    }
3130
3131    /// Sets the value of [expires_in][crate::model::GenerateAttachedClusterAgentTokenResponse::expires_in].
3132    ///
3133    /// # Example
3134    /// ```ignore,no_run
3135    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenResponse;
3136    /// let x = GenerateAttachedClusterAgentTokenResponse::new().set_expires_in(42);
3137    /// ```
3138    pub fn set_expires_in<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
3139        self.expires_in = v.into();
3140        self
3141    }
3142
3143    /// Sets the value of [token_type][crate::model::GenerateAttachedClusterAgentTokenResponse::token_type].
3144    ///
3145    /// # Example
3146    /// ```ignore,no_run
3147    /// # use google_cloud_gkemulticloud_v1::model::GenerateAttachedClusterAgentTokenResponse;
3148    /// let x = GenerateAttachedClusterAgentTokenResponse::new().set_token_type("example");
3149    /// ```
3150    pub fn set_token_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3151        self.token_type = v.into();
3152        self
3153    }
3154}
3155
3156impl wkt::message::Message for GenerateAttachedClusterAgentTokenResponse {
3157    fn typename() -> &'static str {
3158        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAttachedClusterAgentTokenResponse"
3159    }
3160}
3161
3162/// An Anthos cluster running on AWS.
3163#[derive(Clone, Default, PartialEq)]
3164#[non_exhaustive]
3165#[deprecated]
3166pub struct AwsCluster {
3167    /// The name of this resource.
3168    ///
3169    /// Cluster names are formatted as
3170    /// `projects/<project-number>/locations/<region>/awsClusters/<cluster-id>`.
3171    ///
3172    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
3173    /// for more details on Google Cloud Platform resource names.
3174    pub name: std::string::String,
3175
3176    /// Optional. A human readable description of this cluster.
3177    /// Cannot be longer than 255 UTF-8 encoded bytes.
3178    pub description: std::string::String,
3179
3180    /// Required. Cluster-wide networking configuration.
3181    pub networking: std::option::Option<crate::model::AwsClusterNetworking>,
3182
3183    /// Required. The AWS region where the cluster runs.
3184    ///
3185    /// Each Google Cloud region supports a subset of nearby AWS regions.
3186    /// You can call
3187    /// [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig]
3188    /// to list all supported AWS regions within a given Google Cloud region.
3189    ///
3190    /// [google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig]: crate::client::AwsClusters::get_aws_server_config
3191    pub aws_region: std::string::String,
3192
3193    /// Required. Configuration related to the cluster control plane.
3194    pub control_plane: std::option::Option<crate::model::AwsControlPlane>,
3195
3196    /// Required. Configuration related to the cluster RBAC settings.
3197    pub authorization: std::option::Option<crate::model::AwsAuthorization>,
3198
3199    /// Output only. The current state of the cluster.
3200    pub state: crate::model::aws_cluster::State,
3201
3202    /// Output only. The endpoint of the cluster's API server.
3203    pub endpoint: std::string::String,
3204
3205    /// Output only. A globally unique identifier for the cluster.
3206    pub uid: std::string::String,
3207
3208    /// Output only. If set, there are currently changes in flight to the cluster.
3209    pub reconciling: bool,
3210
3211    /// Output only. The time at which this cluster was created.
3212    pub create_time: std::option::Option<wkt::Timestamp>,
3213
3214    /// Output only. The time at which this cluster was last updated.
3215    pub update_time: std::option::Option<wkt::Timestamp>,
3216
3217    /// Allows clients to perform consistent read-modify-writes
3218    /// through optimistic concurrency control.
3219    ///
3220    /// Can be sent on update and delete requests to ensure the
3221    /// client has an up-to-date value before proceeding.
3222    pub etag: std::string::String,
3223
3224    /// Optional. Annotations on the cluster.
3225    ///
3226    /// This field has the same restrictions as Kubernetes annotations.
3227    /// The total size of all keys and values combined is limited to 256k.
3228    /// Key can have 2 segments: prefix (optional) and name (required),
3229    /// separated by a slash (/).
3230    /// Prefix must be a DNS subdomain.
3231    /// Name must be 63 characters or less, begin and end with alphanumerics,
3232    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
3233    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
3234
3235    /// Output only. Workload Identity settings.
3236    pub workload_identity_config: std::option::Option<crate::model::WorkloadIdentityConfig>,
3237
3238    /// Output only. PEM encoded x509 certificate of the cluster root of trust.
3239    pub cluster_ca_certificate: std::string::String,
3240
3241    /// Required. Fleet configuration.
3242    pub fleet: std::option::Option<crate::model::Fleet>,
3243
3244    /// Optional. Logging configuration for this cluster.
3245    pub logging_config: std::option::Option<crate::model::LoggingConfig>,
3246
3247    /// Output only. A set of errors found in the cluster.
3248    pub errors: std::vec::Vec<crate::model::AwsClusterError>,
3249
3250    /// Optional. Monitoring configuration for this cluster.
3251    pub monitoring_config: std::option::Option<crate::model::MonitoringConfig>,
3252
3253    /// Optional. Binary Authorization configuration for this cluster.
3254    pub binary_authorization: std::option::Option<crate::model::BinaryAuthorization>,
3255
3256    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3257}
3258
3259impl AwsCluster {
3260    pub fn new() -> Self {
3261        std::default::Default::default()
3262    }
3263
3264    /// Sets the value of [name][crate::model::AwsCluster::name].
3265    ///
3266    /// # Example
3267    /// ```ignore,no_run
3268    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3269    /// let x = AwsCluster::new().set_name("example");
3270    /// ```
3271    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3272        self.name = v.into();
3273        self
3274    }
3275
3276    /// Sets the value of [description][crate::model::AwsCluster::description].
3277    ///
3278    /// # Example
3279    /// ```ignore,no_run
3280    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3281    /// let x = AwsCluster::new().set_description("example");
3282    /// ```
3283    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3284        self.description = v.into();
3285        self
3286    }
3287
3288    /// Sets the value of [networking][crate::model::AwsCluster::networking].
3289    ///
3290    /// # Example
3291    /// ```ignore,no_run
3292    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3293    /// use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
3294    /// let x = AwsCluster::new().set_networking(AwsClusterNetworking::default()/* use setters */);
3295    /// ```
3296    pub fn set_networking<T>(mut self, v: T) -> Self
3297    where
3298        T: std::convert::Into<crate::model::AwsClusterNetworking>,
3299    {
3300        self.networking = std::option::Option::Some(v.into());
3301        self
3302    }
3303
3304    /// Sets or clears the value of [networking][crate::model::AwsCluster::networking].
3305    ///
3306    /// # Example
3307    /// ```ignore,no_run
3308    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3309    /// use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
3310    /// let x = AwsCluster::new().set_or_clear_networking(Some(AwsClusterNetworking::default()/* use setters */));
3311    /// let x = AwsCluster::new().set_or_clear_networking(None::<AwsClusterNetworking>);
3312    /// ```
3313    pub fn set_or_clear_networking<T>(mut self, v: std::option::Option<T>) -> Self
3314    where
3315        T: std::convert::Into<crate::model::AwsClusterNetworking>,
3316    {
3317        self.networking = v.map(|x| x.into());
3318        self
3319    }
3320
3321    /// Sets the value of [aws_region][crate::model::AwsCluster::aws_region].
3322    ///
3323    /// # Example
3324    /// ```ignore,no_run
3325    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3326    /// let x = AwsCluster::new().set_aws_region("example");
3327    /// ```
3328    pub fn set_aws_region<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3329        self.aws_region = v.into();
3330        self
3331    }
3332
3333    /// Sets the value of [control_plane][crate::model::AwsCluster::control_plane].
3334    ///
3335    /// # Example
3336    /// ```ignore,no_run
3337    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3338    /// use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
3339    /// let x = AwsCluster::new().set_control_plane(AwsControlPlane::default()/* use setters */);
3340    /// ```
3341    pub fn set_control_plane<T>(mut self, v: T) -> Self
3342    where
3343        T: std::convert::Into<crate::model::AwsControlPlane>,
3344    {
3345        self.control_plane = std::option::Option::Some(v.into());
3346        self
3347    }
3348
3349    /// Sets or clears the value of [control_plane][crate::model::AwsCluster::control_plane].
3350    ///
3351    /// # Example
3352    /// ```ignore,no_run
3353    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3354    /// use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
3355    /// let x = AwsCluster::new().set_or_clear_control_plane(Some(AwsControlPlane::default()/* use setters */));
3356    /// let x = AwsCluster::new().set_or_clear_control_plane(None::<AwsControlPlane>);
3357    /// ```
3358    pub fn set_or_clear_control_plane<T>(mut self, v: std::option::Option<T>) -> Self
3359    where
3360        T: std::convert::Into<crate::model::AwsControlPlane>,
3361    {
3362        self.control_plane = v.map(|x| x.into());
3363        self
3364    }
3365
3366    /// Sets the value of [authorization][crate::model::AwsCluster::authorization].
3367    ///
3368    /// # Example
3369    /// ```ignore,no_run
3370    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3371    /// use google_cloud_gkemulticloud_v1::model::AwsAuthorization;
3372    /// let x = AwsCluster::new().set_authorization(AwsAuthorization::default()/* use setters */);
3373    /// ```
3374    pub fn set_authorization<T>(mut self, v: T) -> Self
3375    where
3376        T: std::convert::Into<crate::model::AwsAuthorization>,
3377    {
3378        self.authorization = std::option::Option::Some(v.into());
3379        self
3380    }
3381
3382    /// Sets or clears the value of [authorization][crate::model::AwsCluster::authorization].
3383    ///
3384    /// # Example
3385    /// ```ignore,no_run
3386    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3387    /// use google_cloud_gkemulticloud_v1::model::AwsAuthorization;
3388    /// let x = AwsCluster::new().set_or_clear_authorization(Some(AwsAuthorization::default()/* use setters */));
3389    /// let x = AwsCluster::new().set_or_clear_authorization(None::<AwsAuthorization>);
3390    /// ```
3391    pub fn set_or_clear_authorization<T>(mut self, v: std::option::Option<T>) -> Self
3392    where
3393        T: std::convert::Into<crate::model::AwsAuthorization>,
3394    {
3395        self.authorization = v.map(|x| x.into());
3396        self
3397    }
3398
3399    /// Sets the value of [state][crate::model::AwsCluster::state].
3400    ///
3401    /// # Example
3402    /// ```ignore,no_run
3403    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3404    /// use google_cloud_gkemulticloud_v1::model::aws_cluster::State;
3405    /// let x0 = AwsCluster::new().set_state(State::Provisioning);
3406    /// let x1 = AwsCluster::new().set_state(State::Running);
3407    /// let x2 = AwsCluster::new().set_state(State::Reconciling);
3408    /// ```
3409    pub fn set_state<T: std::convert::Into<crate::model::aws_cluster::State>>(
3410        mut self,
3411        v: T,
3412    ) -> Self {
3413        self.state = v.into();
3414        self
3415    }
3416
3417    /// Sets the value of [endpoint][crate::model::AwsCluster::endpoint].
3418    ///
3419    /// # Example
3420    /// ```ignore,no_run
3421    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3422    /// let x = AwsCluster::new().set_endpoint("example");
3423    /// ```
3424    pub fn set_endpoint<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3425        self.endpoint = v.into();
3426        self
3427    }
3428
3429    /// Sets the value of [uid][crate::model::AwsCluster::uid].
3430    ///
3431    /// # Example
3432    /// ```ignore,no_run
3433    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3434    /// let x = AwsCluster::new().set_uid("example");
3435    /// ```
3436    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3437        self.uid = v.into();
3438        self
3439    }
3440
3441    /// Sets the value of [reconciling][crate::model::AwsCluster::reconciling].
3442    ///
3443    /// # Example
3444    /// ```ignore,no_run
3445    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3446    /// let x = AwsCluster::new().set_reconciling(true);
3447    /// ```
3448    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
3449        self.reconciling = v.into();
3450        self
3451    }
3452
3453    /// Sets the value of [create_time][crate::model::AwsCluster::create_time].
3454    ///
3455    /// # Example
3456    /// ```ignore,no_run
3457    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3458    /// use wkt::Timestamp;
3459    /// let x = AwsCluster::new().set_create_time(Timestamp::default()/* use setters */);
3460    /// ```
3461    pub fn set_create_time<T>(mut self, v: T) -> Self
3462    where
3463        T: std::convert::Into<wkt::Timestamp>,
3464    {
3465        self.create_time = std::option::Option::Some(v.into());
3466        self
3467    }
3468
3469    /// Sets or clears the value of [create_time][crate::model::AwsCluster::create_time].
3470    ///
3471    /// # Example
3472    /// ```ignore,no_run
3473    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3474    /// use wkt::Timestamp;
3475    /// let x = AwsCluster::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
3476    /// let x = AwsCluster::new().set_or_clear_create_time(None::<Timestamp>);
3477    /// ```
3478    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
3479    where
3480        T: std::convert::Into<wkt::Timestamp>,
3481    {
3482        self.create_time = v.map(|x| x.into());
3483        self
3484    }
3485
3486    /// Sets the value of [update_time][crate::model::AwsCluster::update_time].
3487    ///
3488    /// # Example
3489    /// ```ignore,no_run
3490    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3491    /// use wkt::Timestamp;
3492    /// let x = AwsCluster::new().set_update_time(Timestamp::default()/* use setters */);
3493    /// ```
3494    pub fn set_update_time<T>(mut self, v: T) -> Self
3495    where
3496        T: std::convert::Into<wkt::Timestamp>,
3497    {
3498        self.update_time = std::option::Option::Some(v.into());
3499        self
3500    }
3501
3502    /// Sets or clears the value of [update_time][crate::model::AwsCluster::update_time].
3503    ///
3504    /// # Example
3505    /// ```ignore,no_run
3506    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3507    /// use wkt::Timestamp;
3508    /// let x = AwsCluster::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
3509    /// let x = AwsCluster::new().set_or_clear_update_time(None::<Timestamp>);
3510    /// ```
3511    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
3512    where
3513        T: std::convert::Into<wkt::Timestamp>,
3514    {
3515        self.update_time = v.map(|x| x.into());
3516        self
3517    }
3518
3519    /// Sets the value of [etag][crate::model::AwsCluster::etag].
3520    ///
3521    /// # Example
3522    /// ```ignore,no_run
3523    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3524    /// let x = AwsCluster::new().set_etag("example");
3525    /// ```
3526    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3527        self.etag = v.into();
3528        self
3529    }
3530
3531    /// Sets the value of [annotations][crate::model::AwsCluster::annotations].
3532    ///
3533    /// # Example
3534    /// ```ignore,no_run
3535    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3536    /// let x = AwsCluster::new().set_annotations([
3537    ///     ("key0", "abc"),
3538    ///     ("key1", "xyz"),
3539    /// ]);
3540    /// ```
3541    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
3542    where
3543        T: std::iter::IntoIterator<Item = (K, V)>,
3544        K: std::convert::Into<std::string::String>,
3545        V: std::convert::Into<std::string::String>,
3546    {
3547        use std::iter::Iterator;
3548        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
3549        self
3550    }
3551
3552    /// Sets the value of [workload_identity_config][crate::model::AwsCluster::workload_identity_config].
3553    ///
3554    /// # Example
3555    /// ```ignore,no_run
3556    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3557    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
3558    /// let x = AwsCluster::new().set_workload_identity_config(WorkloadIdentityConfig::default()/* use setters */);
3559    /// ```
3560    pub fn set_workload_identity_config<T>(mut self, v: T) -> Self
3561    where
3562        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
3563    {
3564        self.workload_identity_config = std::option::Option::Some(v.into());
3565        self
3566    }
3567
3568    /// Sets or clears the value of [workload_identity_config][crate::model::AwsCluster::workload_identity_config].
3569    ///
3570    /// # Example
3571    /// ```ignore,no_run
3572    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3573    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
3574    /// let x = AwsCluster::new().set_or_clear_workload_identity_config(Some(WorkloadIdentityConfig::default()/* use setters */));
3575    /// let x = AwsCluster::new().set_or_clear_workload_identity_config(None::<WorkloadIdentityConfig>);
3576    /// ```
3577    pub fn set_or_clear_workload_identity_config<T>(mut self, v: std::option::Option<T>) -> Self
3578    where
3579        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
3580    {
3581        self.workload_identity_config = v.map(|x| x.into());
3582        self
3583    }
3584
3585    /// Sets the value of [cluster_ca_certificate][crate::model::AwsCluster::cluster_ca_certificate].
3586    ///
3587    /// # Example
3588    /// ```ignore,no_run
3589    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3590    /// let x = AwsCluster::new().set_cluster_ca_certificate("example");
3591    /// ```
3592    pub fn set_cluster_ca_certificate<T: std::convert::Into<std::string::String>>(
3593        mut self,
3594        v: T,
3595    ) -> Self {
3596        self.cluster_ca_certificate = v.into();
3597        self
3598    }
3599
3600    /// Sets the value of [fleet][crate::model::AwsCluster::fleet].
3601    ///
3602    /// # Example
3603    /// ```ignore,no_run
3604    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3605    /// use google_cloud_gkemulticloud_v1::model::Fleet;
3606    /// let x = AwsCluster::new().set_fleet(Fleet::default()/* use setters */);
3607    /// ```
3608    pub fn set_fleet<T>(mut self, v: T) -> Self
3609    where
3610        T: std::convert::Into<crate::model::Fleet>,
3611    {
3612        self.fleet = std::option::Option::Some(v.into());
3613        self
3614    }
3615
3616    /// Sets or clears the value of [fleet][crate::model::AwsCluster::fleet].
3617    ///
3618    /// # Example
3619    /// ```ignore,no_run
3620    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3621    /// use google_cloud_gkemulticloud_v1::model::Fleet;
3622    /// let x = AwsCluster::new().set_or_clear_fleet(Some(Fleet::default()/* use setters */));
3623    /// let x = AwsCluster::new().set_or_clear_fleet(None::<Fleet>);
3624    /// ```
3625    pub fn set_or_clear_fleet<T>(mut self, v: std::option::Option<T>) -> Self
3626    where
3627        T: std::convert::Into<crate::model::Fleet>,
3628    {
3629        self.fleet = v.map(|x| x.into());
3630        self
3631    }
3632
3633    /// Sets the value of [logging_config][crate::model::AwsCluster::logging_config].
3634    ///
3635    /// # Example
3636    /// ```ignore,no_run
3637    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3638    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
3639    /// let x = AwsCluster::new().set_logging_config(LoggingConfig::default()/* use setters */);
3640    /// ```
3641    pub fn set_logging_config<T>(mut self, v: T) -> Self
3642    where
3643        T: std::convert::Into<crate::model::LoggingConfig>,
3644    {
3645        self.logging_config = std::option::Option::Some(v.into());
3646        self
3647    }
3648
3649    /// Sets or clears the value of [logging_config][crate::model::AwsCluster::logging_config].
3650    ///
3651    /// # Example
3652    /// ```ignore,no_run
3653    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3654    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
3655    /// let x = AwsCluster::new().set_or_clear_logging_config(Some(LoggingConfig::default()/* use setters */));
3656    /// let x = AwsCluster::new().set_or_clear_logging_config(None::<LoggingConfig>);
3657    /// ```
3658    pub fn set_or_clear_logging_config<T>(mut self, v: std::option::Option<T>) -> Self
3659    where
3660        T: std::convert::Into<crate::model::LoggingConfig>,
3661    {
3662        self.logging_config = v.map(|x| x.into());
3663        self
3664    }
3665
3666    /// Sets the value of [errors][crate::model::AwsCluster::errors].
3667    ///
3668    /// # Example
3669    /// ```ignore,no_run
3670    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3671    /// use google_cloud_gkemulticloud_v1::model::AwsClusterError;
3672    /// let x = AwsCluster::new()
3673    ///     .set_errors([
3674    ///         AwsClusterError::default()/* use setters */,
3675    ///         AwsClusterError::default()/* use (different) setters */,
3676    ///     ]);
3677    /// ```
3678    pub fn set_errors<T, V>(mut self, v: T) -> Self
3679    where
3680        T: std::iter::IntoIterator<Item = V>,
3681        V: std::convert::Into<crate::model::AwsClusterError>,
3682    {
3683        use std::iter::Iterator;
3684        self.errors = v.into_iter().map(|i| i.into()).collect();
3685        self
3686    }
3687
3688    /// Sets the value of [monitoring_config][crate::model::AwsCluster::monitoring_config].
3689    ///
3690    /// # Example
3691    /// ```ignore,no_run
3692    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3693    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
3694    /// let x = AwsCluster::new().set_monitoring_config(MonitoringConfig::default()/* use setters */);
3695    /// ```
3696    pub fn set_monitoring_config<T>(mut self, v: T) -> Self
3697    where
3698        T: std::convert::Into<crate::model::MonitoringConfig>,
3699    {
3700        self.monitoring_config = std::option::Option::Some(v.into());
3701        self
3702    }
3703
3704    /// Sets or clears the value of [monitoring_config][crate::model::AwsCluster::monitoring_config].
3705    ///
3706    /// # Example
3707    /// ```ignore,no_run
3708    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3709    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
3710    /// let x = AwsCluster::new().set_or_clear_monitoring_config(Some(MonitoringConfig::default()/* use setters */));
3711    /// let x = AwsCluster::new().set_or_clear_monitoring_config(None::<MonitoringConfig>);
3712    /// ```
3713    pub fn set_or_clear_monitoring_config<T>(mut self, v: std::option::Option<T>) -> Self
3714    where
3715        T: std::convert::Into<crate::model::MonitoringConfig>,
3716    {
3717        self.monitoring_config = v.map(|x| x.into());
3718        self
3719    }
3720
3721    /// Sets the value of [binary_authorization][crate::model::AwsCluster::binary_authorization].
3722    ///
3723    /// # Example
3724    /// ```ignore,no_run
3725    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3726    /// use google_cloud_gkemulticloud_v1::model::BinaryAuthorization;
3727    /// let x = AwsCluster::new().set_binary_authorization(BinaryAuthorization::default()/* use setters */);
3728    /// ```
3729    pub fn set_binary_authorization<T>(mut self, v: T) -> Self
3730    where
3731        T: std::convert::Into<crate::model::BinaryAuthorization>,
3732    {
3733        self.binary_authorization = std::option::Option::Some(v.into());
3734        self
3735    }
3736
3737    /// Sets or clears the value of [binary_authorization][crate::model::AwsCluster::binary_authorization].
3738    ///
3739    /// # Example
3740    /// ```ignore,no_run
3741    /// # use google_cloud_gkemulticloud_v1::model::AwsCluster;
3742    /// use google_cloud_gkemulticloud_v1::model::BinaryAuthorization;
3743    /// let x = AwsCluster::new().set_or_clear_binary_authorization(Some(BinaryAuthorization::default()/* use setters */));
3744    /// let x = AwsCluster::new().set_or_clear_binary_authorization(None::<BinaryAuthorization>);
3745    /// ```
3746    pub fn set_or_clear_binary_authorization<T>(mut self, v: std::option::Option<T>) -> Self
3747    where
3748        T: std::convert::Into<crate::model::BinaryAuthorization>,
3749    {
3750        self.binary_authorization = v.map(|x| x.into());
3751        self
3752    }
3753}
3754
3755impl wkt::message::Message for AwsCluster {
3756    fn typename() -> &'static str {
3757        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsCluster"
3758    }
3759}
3760
3761/// Defines additional types related to [AwsCluster].
3762pub mod aws_cluster {
3763    #[allow(unused_imports)]
3764    use super::*;
3765
3766    /// The lifecycle state of the cluster.
3767    ///
3768    /// # Working with unknown values
3769    ///
3770    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
3771    /// additional enum variants at any time. Adding new variants is not considered
3772    /// a breaking change. Applications should write their code in anticipation of:
3773    ///
3774    /// - New values appearing in future releases of the client library, **and**
3775    /// - New values received dynamically, without application changes.
3776    ///
3777    /// Please consult the [Working with enums] section in the user guide for some
3778    /// guidelines.
3779    ///
3780    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
3781    #[derive(Clone, Debug, PartialEq)]
3782    #[non_exhaustive]
3783    pub enum State {
3784        /// Not set.
3785        Unspecified,
3786        /// The PROVISIONING state indicates the cluster is being created.
3787        Provisioning,
3788        /// The RUNNING state indicates the cluster has been created and is fully
3789        /// usable.
3790        Running,
3791        /// The RECONCILING state indicates that some work is actively being done on
3792        /// the cluster, such as upgrading the control plane replicas.
3793        Reconciling,
3794        /// The STOPPING state indicates the cluster is being deleted.
3795        Stopping,
3796        /// The ERROR state indicates the cluster is in a broken unrecoverable
3797        /// state.
3798        Error,
3799        /// The DEGRADED state indicates the cluster requires user action to
3800        /// restore full functionality.
3801        Degraded,
3802        /// If set, the enum was initialized with an unknown value.
3803        ///
3804        /// Applications can examine the value using [State::value] or
3805        /// [State::name].
3806        UnknownValue(state::UnknownValue),
3807    }
3808
3809    #[doc(hidden)]
3810    pub mod state {
3811        #[allow(unused_imports)]
3812        use super::*;
3813        #[derive(Clone, Debug, PartialEq)]
3814        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
3815    }
3816
3817    impl State {
3818        /// Gets the enum value.
3819        ///
3820        /// Returns `None` if the enum contains an unknown value deserialized from
3821        /// the string representation of enums.
3822        pub fn value(&self) -> std::option::Option<i32> {
3823            match self {
3824                Self::Unspecified => std::option::Option::Some(0),
3825                Self::Provisioning => std::option::Option::Some(1),
3826                Self::Running => std::option::Option::Some(2),
3827                Self::Reconciling => std::option::Option::Some(3),
3828                Self::Stopping => std::option::Option::Some(4),
3829                Self::Error => std::option::Option::Some(5),
3830                Self::Degraded => std::option::Option::Some(6),
3831                Self::UnknownValue(u) => u.0.value(),
3832            }
3833        }
3834
3835        /// Gets the enum value as a string.
3836        ///
3837        /// Returns `None` if the enum contains an unknown value deserialized from
3838        /// the integer representation of enums.
3839        pub fn name(&self) -> std::option::Option<&str> {
3840            match self {
3841                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
3842                Self::Provisioning => std::option::Option::Some("PROVISIONING"),
3843                Self::Running => std::option::Option::Some("RUNNING"),
3844                Self::Reconciling => std::option::Option::Some("RECONCILING"),
3845                Self::Stopping => std::option::Option::Some("STOPPING"),
3846                Self::Error => std::option::Option::Some("ERROR"),
3847                Self::Degraded => std::option::Option::Some("DEGRADED"),
3848                Self::UnknownValue(u) => u.0.name(),
3849            }
3850        }
3851    }
3852
3853    impl std::default::Default for State {
3854        fn default() -> Self {
3855            use std::convert::From;
3856            Self::from(0)
3857        }
3858    }
3859
3860    impl std::fmt::Display for State {
3861        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
3862            wkt::internal::display_enum(f, self.name(), self.value())
3863        }
3864    }
3865
3866    impl std::convert::From<i32> for State {
3867        fn from(value: i32) -> Self {
3868            match value {
3869                0 => Self::Unspecified,
3870                1 => Self::Provisioning,
3871                2 => Self::Running,
3872                3 => Self::Reconciling,
3873                4 => Self::Stopping,
3874                5 => Self::Error,
3875                6 => Self::Degraded,
3876                _ => Self::UnknownValue(state::UnknownValue(
3877                    wkt::internal::UnknownEnumValue::Integer(value),
3878                )),
3879            }
3880        }
3881    }
3882
3883    impl std::convert::From<&str> for State {
3884        fn from(value: &str) -> Self {
3885            use std::string::ToString;
3886            match value {
3887                "STATE_UNSPECIFIED" => Self::Unspecified,
3888                "PROVISIONING" => Self::Provisioning,
3889                "RUNNING" => Self::Running,
3890                "RECONCILING" => Self::Reconciling,
3891                "STOPPING" => Self::Stopping,
3892                "ERROR" => Self::Error,
3893                "DEGRADED" => Self::Degraded,
3894                _ => Self::UnknownValue(state::UnknownValue(
3895                    wkt::internal::UnknownEnumValue::String(value.to_string()),
3896                )),
3897            }
3898        }
3899    }
3900
3901    impl serde::ser::Serialize for State {
3902        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3903        where
3904            S: serde::Serializer,
3905        {
3906            match self {
3907                Self::Unspecified => serializer.serialize_i32(0),
3908                Self::Provisioning => serializer.serialize_i32(1),
3909                Self::Running => serializer.serialize_i32(2),
3910                Self::Reconciling => serializer.serialize_i32(3),
3911                Self::Stopping => serializer.serialize_i32(4),
3912                Self::Error => serializer.serialize_i32(5),
3913                Self::Degraded => serializer.serialize_i32(6),
3914                Self::UnknownValue(u) => u.0.serialize(serializer),
3915            }
3916        }
3917    }
3918
3919    impl<'de> serde::de::Deserialize<'de> for State {
3920        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3921        where
3922            D: serde::Deserializer<'de>,
3923        {
3924            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
3925                ".google.cloud.gkemulticloud.v1.AwsCluster.State",
3926            ))
3927        }
3928    }
3929}
3930
3931/// ControlPlane defines common parameters between control plane nodes.
3932#[derive(Clone, Default, PartialEq)]
3933#[non_exhaustive]
3934#[deprecated]
3935pub struct AwsControlPlane {
3936    /// Required. The Kubernetes version to run on control plane replicas
3937    /// (e.g. `1.19.10-gke.1000`).
3938    ///
3939    /// You can list all supported versions on a given Google Cloud region by
3940    /// calling
3941    /// [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig].
3942    ///
3943    /// [google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig]: crate::client::AwsClusters::get_aws_server_config
3944    pub version: std::string::String,
3945
3946    /// Optional. The AWS instance type.
3947    ///
3948    /// When unspecified, it uses a default based on the cluster's version.
3949    pub instance_type: std::string::String,
3950
3951    /// Optional. SSH configuration for how to access the underlying control plane
3952    /// machines.
3953    pub ssh_config: std::option::Option<crate::model::AwsSshConfig>,
3954
3955    /// Required. The list of subnets where control plane replicas will run.
3956    /// A replica will be provisioned on each subnet and up to three values
3957    /// can be provided.
3958    /// Each subnet must be in a different AWS Availability Zone (AZ).
3959    pub subnet_ids: std::vec::Vec<std::string::String>,
3960
3961    /// Optional. The IDs of additional security groups to add to control plane
3962    /// replicas. The Anthos Multi-Cloud API will automatically create and manage
3963    /// security groups with the minimum rules needed for a functioning cluster.
3964    pub security_group_ids: std::vec::Vec<std::string::String>,
3965
3966    /// Required. The name or ARN of the AWS IAM instance profile to assign to each
3967    /// control plane replica.
3968    pub iam_instance_profile: std::string::String,
3969
3970    /// Optional. Configuration related to the root volume provisioned for each
3971    /// control plane replica.
3972    ///
3973    /// Volumes will be provisioned in the availability zone associated
3974    /// with the corresponding subnet.
3975    ///
3976    /// When unspecified, it defaults to 32 GiB with the GP2 volume type.
3977    pub root_volume: std::option::Option<crate::model::AwsVolumeTemplate>,
3978
3979    /// Optional. Configuration related to the main volume provisioned for each
3980    /// control plane replica.
3981    /// The main volume is in charge of storing all of the cluster's etcd state.
3982    ///
3983    /// Volumes will be provisioned in the availability zone associated
3984    /// with the corresponding subnet.
3985    ///
3986    /// When unspecified, it defaults to 8 GiB with the GP2 volume type.
3987    pub main_volume: std::option::Option<crate::model::AwsVolumeTemplate>,
3988
3989    /// Required. The ARN of the AWS KMS key used to encrypt cluster secrets.
3990    pub database_encryption: std::option::Option<crate::model::AwsDatabaseEncryption>,
3991
3992    /// Optional. A set of AWS resource tags to propagate to all underlying managed
3993    /// AWS resources.
3994    ///
3995    /// Specify at most 50 pairs containing alphanumerics, spaces, and symbols
3996    /// (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to
3997    /// 255 Unicode characters.
3998    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
3999
4000    /// Required. Authentication configuration for management of AWS resources.
4001    pub aws_services_authentication: std::option::Option<crate::model::AwsServicesAuthentication>,
4002
4003    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
4004    pub proxy_config: std::option::Option<crate::model::AwsProxyConfig>,
4005
4006    /// Required. Config encryption for user data.
4007    pub config_encryption: std::option::Option<crate::model::AwsConfigEncryption>,
4008
4009    /// Optional. The placement to use on control plane instances.
4010    /// When unspecified, the VPC's default tenancy will be used.
4011    pub instance_placement: std::option::Option<crate::model::AwsInstancePlacement>,
4012
4013    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4014}
4015
4016impl AwsControlPlane {
4017    pub fn new() -> Self {
4018        std::default::Default::default()
4019    }
4020
4021    /// Sets the value of [version][crate::model::AwsControlPlane::version].
4022    ///
4023    /// # Example
4024    /// ```ignore,no_run
4025    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4026    /// let x = AwsControlPlane::new().set_version("example");
4027    /// ```
4028    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4029        self.version = v.into();
4030        self
4031    }
4032
4033    /// Sets the value of [instance_type][crate::model::AwsControlPlane::instance_type].
4034    ///
4035    /// # Example
4036    /// ```ignore,no_run
4037    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4038    /// let x = AwsControlPlane::new().set_instance_type("example");
4039    /// ```
4040    pub fn set_instance_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4041        self.instance_type = v.into();
4042        self
4043    }
4044
4045    /// Sets the value of [ssh_config][crate::model::AwsControlPlane::ssh_config].
4046    ///
4047    /// # Example
4048    /// ```ignore,no_run
4049    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4050    /// use google_cloud_gkemulticloud_v1::model::AwsSshConfig;
4051    /// let x = AwsControlPlane::new().set_ssh_config(AwsSshConfig::default()/* use setters */);
4052    /// ```
4053    pub fn set_ssh_config<T>(mut self, v: T) -> Self
4054    where
4055        T: std::convert::Into<crate::model::AwsSshConfig>,
4056    {
4057        self.ssh_config = std::option::Option::Some(v.into());
4058        self
4059    }
4060
4061    /// Sets or clears the value of [ssh_config][crate::model::AwsControlPlane::ssh_config].
4062    ///
4063    /// # Example
4064    /// ```ignore,no_run
4065    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4066    /// use google_cloud_gkemulticloud_v1::model::AwsSshConfig;
4067    /// let x = AwsControlPlane::new().set_or_clear_ssh_config(Some(AwsSshConfig::default()/* use setters */));
4068    /// let x = AwsControlPlane::new().set_or_clear_ssh_config(None::<AwsSshConfig>);
4069    /// ```
4070    pub fn set_or_clear_ssh_config<T>(mut self, v: std::option::Option<T>) -> Self
4071    where
4072        T: std::convert::Into<crate::model::AwsSshConfig>,
4073    {
4074        self.ssh_config = v.map(|x| x.into());
4075        self
4076    }
4077
4078    /// Sets the value of [subnet_ids][crate::model::AwsControlPlane::subnet_ids].
4079    ///
4080    /// # Example
4081    /// ```ignore,no_run
4082    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4083    /// let x = AwsControlPlane::new().set_subnet_ids(["a", "b", "c"]);
4084    /// ```
4085    pub fn set_subnet_ids<T, V>(mut self, v: T) -> Self
4086    where
4087        T: std::iter::IntoIterator<Item = V>,
4088        V: std::convert::Into<std::string::String>,
4089    {
4090        use std::iter::Iterator;
4091        self.subnet_ids = v.into_iter().map(|i| i.into()).collect();
4092        self
4093    }
4094
4095    /// Sets the value of [security_group_ids][crate::model::AwsControlPlane::security_group_ids].
4096    ///
4097    /// # Example
4098    /// ```ignore,no_run
4099    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4100    /// let x = AwsControlPlane::new().set_security_group_ids(["a", "b", "c"]);
4101    /// ```
4102    pub fn set_security_group_ids<T, V>(mut self, v: T) -> Self
4103    where
4104        T: std::iter::IntoIterator<Item = V>,
4105        V: std::convert::Into<std::string::String>,
4106    {
4107        use std::iter::Iterator;
4108        self.security_group_ids = v.into_iter().map(|i| i.into()).collect();
4109        self
4110    }
4111
4112    /// Sets the value of [iam_instance_profile][crate::model::AwsControlPlane::iam_instance_profile].
4113    ///
4114    /// # Example
4115    /// ```ignore,no_run
4116    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4117    /// let x = AwsControlPlane::new().set_iam_instance_profile("example");
4118    /// ```
4119    pub fn set_iam_instance_profile<T: std::convert::Into<std::string::String>>(
4120        mut self,
4121        v: T,
4122    ) -> Self {
4123        self.iam_instance_profile = v.into();
4124        self
4125    }
4126
4127    /// Sets the value of [root_volume][crate::model::AwsControlPlane::root_volume].
4128    ///
4129    /// # Example
4130    /// ```ignore,no_run
4131    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4132    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4133    /// let x = AwsControlPlane::new().set_root_volume(AwsVolumeTemplate::default()/* use setters */);
4134    /// ```
4135    pub fn set_root_volume<T>(mut self, v: T) -> Self
4136    where
4137        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
4138    {
4139        self.root_volume = std::option::Option::Some(v.into());
4140        self
4141    }
4142
4143    /// Sets or clears the value of [root_volume][crate::model::AwsControlPlane::root_volume].
4144    ///
4145    /// # Example
4146    /// ```ignore,no_run
4147    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4148    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4149    /// let x = AwsControlPlane::new().set_or_clear_root_volume(Some(AwsVolumeTemplate::default()/* use setters */));
4150    /// let x = AwsControlPlane::new().set_or_clear_root_volume(None::<AwsVolumeTemplate>);
4151    /// ```
4152    pub fn set_or_clear_root_volume<T>(mut self, v: std::option::Option<T>) -> Self
4153    where
4154        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
4155    {
4156        self.root_volume = v.map(|x| x.into());
4157        self
4158    }
4159
4160    /// Sets the value of [main_volume][crate::model::AwsControlPlane::main_volume].
4161    ///
4162    /// # Example
4163    /// ```ignore,no_run
4164    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4165    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4166    /// let x = AwsControlPlane::new().set_main_volume(AwsVolumeTemplate::default()/* use setters */);
4167    /// ```
4168    pub fn set_main_volume<T>(mut self, v: T) -> Self
4169    where
4170        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
4171    {
4172        self.main_volume = std::option::Option::Some(v.into());
4173        self
4174    }
4175
4176    /// Sets or clears the value of [main_volume][crate::model::AwsControlPlane::main_volume].
4177    ///
4178    /// # Example
4179    /// ```ignore,no_run
4180    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4181    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4182    /// let x = AwsControlPlane::new().set_or_clear_main_volume(Some(AwsVolumeTemplate::default()/* use setters */));
4183    /// let x = AwsControlPlane::new().set_or_clear_main_volume(None::<AwsVolumeTemplate>);
4184    /// ```
4185    pub fn set_or_clear_main_volume<T>(mut self, v: std::option::Option<T>) -> Self
4186    where
4187        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
4188    {
4189        self.main_volume = v.map(|x| x.into());
4190        self
4191    }
4192
4193    /// Sets the value of [database_encryption][crate::model::AwsControlPlane::database_encryption].
4194    ///
4195    /// # Example
4196    /// ```ignore,no_run
4197    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4198    /// use google_cloud_gkemulticloud_v1::model::AwsDatabaseEncryption;
4199    /// let x = AwsControlPlane::new().set_database_encryption(AwsDatabaseEncryption::default()/* use setters */);
4200    /// ```
4201    pub fn set_database_encryption<T>(mut self, v: T) -> Self
4202    where
4203        T: std::convert::Into<crate::model::AwsDatabaseEncryption>,
4204    {
4205        self.database_encryption = std::option::Option::Some(v.into());
4206        self
4207    }
4208
4209    /// Sets or clears the value of [database_encryption][crate::model::AwsControlPlane::database_encryption].
4210    ///
4211    /// # Example
4212    /// ```ignore,no_run
4213    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4214    /// use google_cloud_gkemulticloud_v1::model::AwsDatabaseEncryption;
4215    /// let x = AwsControlPlane::new().set_or_clear_database_encryption(Some(AwsDatabaseEncryption::default()/* use setters */));
4216    /// let x = AwsControlPlane::new().set_or_clear_database_encryption(None::<AwsDatabaseEncryption>);
4217    /// ```
4218    pub fn set_or_clear_database_encryption<T>(mut self, v: std::option::Option<T>) -> Self
4219    where
4220        T: std::convert::Into<crate::model::AwsDatabaseEncryption>,
4221    {
4222        self.database_encryption = v.map(|x| x.into());
4223        self
4224    }
4225
4226    /// Sets the value of [tags][crate::model::AwsControlPlane::tags].
4227    ///
4228    /// # Example
4229    /// ```ignore,no_run
4230    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4231    /// let x = AwsControlPlane::new().set_tags([
4232    ///     ("key0", "abc"),
4233    ///     ("key1", "xyz"),
4234    /// ]);
4235    /// ```
4236    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
4237    where
4238        T: std::iter::IntoIterator<Item = (K, V)>,
4239        K: std::convert::Into<std::string::String>,
4240        V: std::convert::Into<std::string::String>,
4241    {
4242        use std::iter::Iterator;
4243        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
4244        self
4245    }
4246
4247    /// Sets the value of [aws_services_authentication][crate::model::AwsControlPlane::aws_services_authentication].
4248    ///
4249    /// # Example
4250    /// ```ignore,no_run
4251    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4252    /// use google_cloud_gkemulticloud_v1::model::AwsServicesAuthentication;
4253    /// let x = AwsControlPlane::new().set_aws_services_authentication(AwsServicesAuthentication::default()/* use setters */);
4254    /// ```
4255    pub fn set_aws_services_authentication<T>(mut self, v: T) -> Self
4256    where
4257        T: std::convert::Into<crate::model::AwsServicesAuthentication>,
4258    {
4259        self.aws_services_authentication = std::option::Option::Some(v.into());
4260        self
4261    }
4262
4263    /// Sets or clears the value of [aws_services_authentication][crate::model::AwsControlPlane::aws_services_authentication].
4264    ///
4265    /// # Example
4266    /// ```ignore,no_run
4267    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4268    /// use google_cloud_gkemulticloud_v1::model::AwsServicesAuthentication;
4269    /// let x = AwsControlPlane::new().set_or_clear_aws_services_authentication(Some(AwsServicesAuthentication::default()/* use setters */));
4270    /// let x = AwsControlPlane::new().set_or_clear_aws_services_authentication(None::<AwsServicesAuthentication>);
4271    /// ```
4272    pub fn set_or_clear_aws_services_authentication<T>(mut self, v: std::option::Option<T>) -> Self
4273    where
4274        T: std::convert::Into<crate::model::AwsServicesAuthentication>,
4275    {
4276        self.aws_services_authentication = v.map(|x| x.into());
4277        self
4278    }
4279
4280    /// Sets the value of [proxy_config][crate::model::AwsControlPlane::proxy_config].
4281    ///
4282    /// # Example
4283    /// ```ignore,no_run
4284    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4285    /// use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
4286    /// let x = AwsControlPlane::new().set_proxy_config(AwsProxyConfig::default()/* use setters */);
4287    /// ```
4288    pub fn set_proxy_config<T>(mut self, v: T) -> Self
4289    where
4290        T: std::convert::Into<crate::model::AwsProxyConfig>,
4291    {
4292        self.proxy_config = std::option::Option::Some(v.into());
4293        self
4294    }
4295
4296    /// Sets or clears the value of [proxy_config][crate::model::AwsControlPlane::proxy_config].
4297    ///
4298    /// # Example
4299    /// ```ignore,no_run
4300    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4301    /// use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
4302    /// let x = AwsControlPlane::new().set_or_clear_proxy_config(Some(AwsProxyConfig::default()/* use setters */));
4303    /// let x = AwsControlPlane::new().set_or_clear_proxy_config(None::<AwsProxyConfig>);
4304    /// ```
4305    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
4306    where
4307        T: std::convert::Into<crate::model::AwsProxyConfig>,
4308    {
4309        self.proxy_config = v.map(|x| x.into());
4310        self
4311    }
4312
4313    /// Sets the value of [config_encryption][crate::model::AwsControlPlane::config_encryption].
4314    ///
4315    /// # Example
4316    /// ```ignore,no_run
4317    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4318    /// use google_cloud_gkemulticloud_v1::model::AwsConfigEncryption;
4319    /// let x = AwsControlPlane::new().set_config_encryption(AwsConfigEncryption::default()/* use setters */);
4320    /// ```
4321    pub fn set_config_encryption<T>(mut self, v: T) -> Self
4322    where
4323        T: std::convert::Into<crate::model::AwsConfigEncryption>,
4324    {
4325        self.config_encryption = std::option::Option::Some(v.into());
4326        self
4327    }
4328
4329    /// Sets or clears the value of [config_encryption][crate::model::AwsControlPlane::config_encryption].
4330    ///
4331    /// # Example
4332    /// ```ignore,no_run
4333    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4334    /// use google_cloud_gkemulticloud_v1::model::AwsConfigEncryption;
4335    /// let x = AwsControlPlane::new().set_or_clear_config_encryption(Some(AwsConfigEncryption::default()/* use setters */));
4336    /// let x = AwsControlPlane::new().set_or_clear_config_encryption(None::<AwsConfigEncryption>);
4337    /// ```
4338    pub fn set_or_clear_config_encryption<T>(mut self, v: std::option::Option<T>) -> Self
4339    where
4340        T: std::convert::Into<crate::model::AwsConfigEncryption>,
4341    {
4342        self.config_encryption = v.map(|x| x.into());
4343        self
4344    }
4345
4346    /// Sets the value of [instance_placement][crate::model::AwsControlPlane::instance_placement].
4347    ///
4348    /// # Example
4349    /// ```ignore,no_run
4350    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4351    /// use google_cloud_gkemulticloud_v1::model::AwsInstancePlacement;
4352    /// let x = AwsControlPlane::new().set_instance_placement(AwsInstancePlacement::default()/* use setters */);
4353    /// ```
4354    pub fn set_instance_placement<T>(mut self, v: T) -> Self
4355    where
4356        T: std::convert::Into<crate::model::AwsInstancePlacement>,
4357    {
4358        self.instance_placement = std::option::Option::Some(v.into());
4359        self
4360    }
4361
4362    /// Sets or clears the value of [instance_placement][crate::model::AwsControlPlane::instance_placement].
4363    ///
4364    /// # Example
4365    /// ```ignore,no_run
4366    /// # use google_cloud_gkemulticloud_v1::model::AwsControlPlane;
4367    /// use google_cloud_gkemulticloud_v1::model::AwsInstancePlacement;
4368    /// let x = AwsControlPlane::new().set_or_clear_instance_placement(Some(AwsInstancePlacement::default()/* use setters */));
4369    /// let x = AwsControlPlane::new().set_or_clear_instance_placement(None::<AwsInstancePlacement>);
4370    /// ```
4371    pub fn set_or_clear_instance_placement<T>(mut self, v: std::option::Option<T>) -> Self
4372    where
4373        T: std::convert::Into<crate::model::AwsInstancePlacement>,
4374    {
4375        self.instance_placement = v.map(|x| x.into());
4376        self
4377    }
4378}
4379
4380impl wkt::message::Message for AwsControlPlane {
4381    fn typename() -> &'static str {
4382        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsControlPlane"
4383    }
4384}
4385
4386/// Authentication configuration for the management of AWS resources.
4387#[derive(Clone, Default, PartialEq)]
4388#[non_exhaustive]
4389#[deprecated]
4390pub struct AwsServicesAuthentication {
4391    /// Required. The Amazon Resource Name (ARN) of the role that the Anthos
4392    /// Multi-Cloud API will assume when managing AWS resources on your account.
4393    pub role_arn: std::string::String,
4394
4395    /// Optional. An identifier for the assumed role session.
4396    ///
4397    /// When unspecified, it defaults to `multicloud-service-agent`.
4398    pub role_session_name: std::string::String,
4399
4400    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4401}
4402
4403impl AwsServicesAuthentication {
4404    pub fn new() -> Self {
4405        std::default::Default::default()
4406    }
4407
4408    /// Sets the value of [role_arn][crate::model::AwsServicesAuthentication::role_arn].
4409    ///
4410    /// # Example
4411    /// ```ignore,no_run
4412    /// # use google_cloud_gkemulticloud_v1::model::AwsServicesAuthentication;
4413    /// let x = AwsServicesAuthentication::new().set_role_arn("example");
4414    /// ```
4415    pub fn set_role_arn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4416        self.role_arn = v.into();
4417        self
4418    }
4419
4420    /// Sets the value of [role_session_name][crate::model::AwsServicesAuthentication::role_session_name].
4421    ///
4422    /// # Example
4423    /// ```ignore,no_run
4424    /// # use google_cloud_gkemulticloud_v1::model::AwsServicesAuthentication;
4425    /// let x = AwsServicesAuthentication::new().set_role_session_name("example");
4426    /// ```
4427    pub fn set_role_session_name<T: std::convert::Into<std::string::String>>(
4428        mut self,
4429        v: T,
4430    ) -> Self {
4431        self.role_session_name = v.into();
4432        self
4433    }
4434}
4435
4436impl wkt::message::Message for AwsServicesAuthentication {
4437    fn typename() -> &'static str {
4438        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsServicesAuthentication"
4439    }
4440}
4441
4442/// Configuration related to the cluster RBAC settings.
4443#[derive(Clone, Default, PartialEq)]
4444#[non_exhaustive]
4445#[deprecated]
4446pub struct AwsAuthorization {
4447    /// Optional. Users that can perform operations as a cluster admin. A managed
4448    /// ClusterRoleBinding will be created to grant the `cluster-admin` ClusterRole
4449    /// to the users. Up to ten admin users can be provided.
4450    ///
4451    /// For more info on RBAC, see
4452    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
4453    pub admin_users: std::vec::Vec<crate::model::AwsClusterUser>,
4454
4455    /// Optional. Groups of users that can perform operations as a cluster admin. A
4456    /// managed ClusterRoleBinding will be created to grant the `cluster-admin`
4457    /// ClusterRole to the groups. Up to ten admin groups can be provided.
4458    ///
4459    /// For more info on RBAC, see
4460    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
4461    pub admin_groups: std::vec::Vec<crate::model::AwsClusterGroup>,
4462
4463    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4464}
4465
4466impl AwsAuthorization {
4467    pub fn new() -> Self {
4468        std::default::Default::default()
4469    }
4470
4471    /// Sets the value of [admin_users][crate::model::AwsAuthorization::admin_users].
4472    ///
4473    /// # Example
4474    /// ```ignore,no_run
4475    /// # use google_cloud_gkemulticloud_v1::model::AwsAuthorization;
4476    /// use google_cloud_gkemulticloud_v1::model::AwsClusterUser;
4477    /// let x = AwsAuthorization::new()
4478    ///     .set_admin_users([
4479    ///         AwsClusterUser::default()/* use setters */,
4480    ///         AwsClusterUser::default()/* use (different) setters */,
4481    ///     ]);
4482    /// ```
4483    pub fn set_admin_users<T, V>(mut self, v: T) -> Self
4484    where
4485        T: std::iter::IntoIterator<Item = V>,
4486        V: std::convert::Into<crate::model::AwsClusterUser>,
4487    {
4488        use std::iter::Iterator;
4489        self.admin_users = v.into_iter().map(|i| i.into()).collect();
4490        self
4491    }
4492
4493    /// Sets the value of [admin_groups][crate::model::AwsAuthorization::admin_groups].
4494    ///
4495    /// # Example
4496    /// ```ignore,no_run
4497    /// # use google_cloud_gkemulticloud_v1::model::AwsAuthorization;
4498    /// use google_cloud_gkemulticloud_v1::model::AwsClusterGroup;
4499    /// let x = AwsAuthorization::new()
4500    ///     .set_admin_groups([
4501    ///         AwsClusterGroup::default()/* use setters */,
4502    ///         AwsClusterGroup::default()/* use (different) setters */,
4503    ///     ]);
4504    /// ```
4505    pub fn set_admin_groups<T, V>(mut self, v: T) -> Self
4506    where
4507        T: std::iter::IntoIterator<Item = V>,
4508        V: std::convert::Into<crate::model::AwsClusterGroup>,
4509    {
4510        use std::iter::Iterator;
4511        self.admin_groups = v.into_iter().map(|i| i.into()).collect();
4512        self
4513    }
4514}
4515
4516impl wkt::message::Message for AwsAuthorization {
4517    fn typename() -> &'static str {
4518        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsAuthorization"
4519    }
4520}
4521
4522/// Identities of a user-type subject for AWS clusters.
4523#[derive(Clone, Default, PartialEq)]
4524#[non_exhaustive]
4525#[deprecated]
4526pub struct AwsClusterUser {
4527    /// Required. The name of the user, e.g. `my-gcp-id@gmail.com`.
4528    pub username: std::string::String,
4529
4530    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4531}
4532
4533impl AwsClusterUser {
4534    pub fn new() -> Self {
4535        std::default::Default::default()
4536    }
4537
4538    /// Sets the value of [username][crate::model::AwsClusterUser::username].
4539    ///
4540    /// # Example
4541    /// ```ignore,no_run
4542    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterUser;
4543    /// let x = AwsClusterUser::new().set_username("example");
4544    /// ```
4545    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4546        self.username = v.into();
4547        self
4548    }
4549}
4550
4551impl wkt::message::Message for AwsClusterUser {
4552    fn typename() -> &'static str {
4553        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsClusterUser"
4554    }
4555}
4556
4557/// Identities of a group-type subject for AWS clusters.
4558#[derive(Clone, Default, PartialEq)]
4559#[non_exhaustive]
4560#[deprecated]
4561pub struct AwsClusterGroup {
4562    /// Required. The name of the group, e.g. `my-group@domain.com`.
4563    pub group: std::string::String,
4564
4565    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4566}
4567
4568impl AwsClusterGroup {
4569    pub fn new() -> Self {
4570        std::default::Default::default()
4571    }
4572
4573    /// Sets the value of [group][crate::model::AwsClusterGroup::group].
4574    ///
4575    /// # Example
4576    /// ```ignore,no_run
4577    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterGroup;
4578    /// let x = AwsClusterGroup::new().set_group("example");
4579    /// ```
4580    pub fn set_group<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4581        self.group = v.into();
4582        self
4583    }
4584}
4585
4586impl wkt::message::Message for AwsClusterGroup {
4587    fn typename() -> &'static str {
4588        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsClusterGroup"
4589    }
4590}
4591
4592/// Configuration related to application-layer secrets encryption.
4593#[derive(Clone, Default, PartialEq)]
4594#[non_exhaustive]
4595#[deprecated]
4596pub struct AwsDatabaseEncryption {
4597    /// Required. The ARN of the AWS KMS key used to encrypt cluster secrets.
4598    pub kms_key_arn: std::string::String,
4599
4600    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4601}
4602
4603impl AwsDatabaseEncryption {
4604    pub fn new() -> Self {
4605        std::default::Default::default()
4606    }
4607
4608    /// Sets the value of [kms_key_arn][crate::model::AwsDatabaseEncryption::kms_key_arn].
4609    ///
4610    /// # Example
4611    /// ```ignore,no_run
4612    /// # use google_cloud_gkemulticloud_v1::model::AwsDatabaseEncryption;
4613    /// let x = AwsDatabaseEncryption::new().set_kms_key_arn("example");
4614    /// ```
4615    pub fn set_kms_key_arn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4616        self.kms_key_arn = v.into();
4617        self
4618    }
4619}
4620
4621impl wkt::message::Message for AwsDatabaseEncryption {
4622    fn typename() -> &'static str {
4623        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsDatabaseEncryption"
4624    }
4625}
4626
4627/// Configuration template for AWS EBS volumes.
4628#[derive(Clone, Default, PartialEq)]
4629#[non_exhaustive]
4630#[deprecated]
4631pub struct AwsVolumeTemplate {
4632    /// Optional. The size of the volume, in GiBs.
4633    ///
4634    /// When unspecified, a default value is provided. See the specific reference
4635    /// in the parent resource.
4636    pub size_gib: i32,
4637
4638    /// Optional. Type of the EBS volume.
4639    ///
4640    /// When unspecified, it defaults to GP2 volume.
4641    pub volume_type: crate::model::aws_volume_template::VolumeType,
4642
4643    /// Optional. The number of I/O operations per second (IOPS) to provision for
4644    /// GP3 volume.
4645    pub iops: i32,
4646
4647    /// Optional. The throughput that the volume supports, in MiB/s. Only valid if
4648    /// volume_type is GP3.
4649    ///
4650    /// If the volume_type is GP3 and this is not specified, it defaults to 125.
4651    pub throughput: i32,
4652
4653    /// Optional. The Amazon Resource Name (ARN) of the Customer Managed Key (CMK)
4654    /// used to encrypt AWS EBS volumes.
4655    ///
4656    /// If not specified, the default Amazon managed key associated to
4657    /// the AWS region where this cluster runs will be used.
4658    pub kms_key_arn: std::string::String,
4659
4660    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4661}
4662
4663impl AwsVolumeTemplate {
4664    pub fn new() -> Self {
4665        std::default::Default::default()
4666    }
4667
4668    /// Sets the value of [size_gib][crate::model::AwsVolumeTemplate::size_gib].
4669    ///
4670    /// # Example
4671    /// ```ignore,no_run
4672    /// # use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4673    /// let x = AwsVolumeTemplate::new().set_size_gib(42);
4674    /// ```
4675    pub fn set_size_gib<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
4676        self.size_gib = v.into();
4677        self
4678    }
4679
4680    /// Sets the value of [volume_type][crate::model::AwsVolumeTemplate::volume_type].
4681    ///
4682    /// # Example
4683    /// ```ignore,no_run
4684    /// # use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4685    /// use google_cloud_gkemulticloud_v1::model::aws_volume_template::VolumeType;
4686    /// let x0 = AwsVolumeTemplate::new().set_volume_type(VolumeType::Gp2);
4687    /// let x1 = AwsVolumeTemplate::new().set_volume_type(VolumeType::Gp3);
4688    /// ```
4689    pub fn set_volume_type<T: std::convert::Into<crate::model::aws_volume_template::VolumeType>>(
4690        mut self,
4691        v: T,
4692    ) -> Self {
4693        self.volume_type = v.into();
4694        self
4695    }
4696
4697    /// Sets the value of [iops][crate::model::AwsVolumeTemplate::iops].
4698    ///
4699    /// # Example
4700    /// ```ignore,no_run
4701    /// # use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4702    /// let x = AwsVolumeTemplate::new().set_iops(42);
4703    /// ```
4704    pub fn set_iops<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
4705        self.iops = v.into();
4706        self
4707    }
4708
4709    /// Sets the value of [throughput][crate::model::AwsVolumeTemplate::throughput].
4710    ///
4711    /// # Example
4712    /// ```ignore,no_run
4713    /// # use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4714    /// let x = AwsVolumeTemplate::new().set_throughput(42);
4715    /// ```
4716    pub fn set_throughput<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
4717        self.throughput = v.into();
4718        self
4719    }
4720
4721    /// Sets the value of [kms_key_arn][crate::model::AwsVolumeTemplate::kms_key_arn].
4722    ///
4723    /// # Example
4724    /// ```ignore,no_run
4725    /// # use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
4726    /// let x = AwsVolumeTemplate::new().set_kms_key_arn("example");
4727    /// ```
4728    pub fn set_kms_key_arn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4729        self.kms_key_arn = v.into();
4730        self
4731    }
4732}
4733
4734impl wkt::message::Message for AwsVolumeTemplate {
4735    fn typename() -> &'static str {
4736        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsVolumeTemplate"
4737    }
4738}
4739
4740/// Defines additional types related to [AwsVolumeTemplate].
4741pub mod aws_volume_template {
4742    #[allow(unused_imports)]
4743    use super::*;
4744
4745    /// Types of supported EBS volumes. We currently only support GP2 or GP3
4746    /// volumes.
4747    /// See <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html>
4748    /// for more information.
4749    ///
4750    /// # Working with unknown values
4751    ///
4752    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
4753    /// additional enum variants at any time. Adding new variants is not considered
4754    /// a breaking change. Applications should write their code in anticipation of:
4755    ///
4756    /// - New values appearing in future releases of the client library, **and**
4757    /// - New values received dynamically, without application changes.
4758    ///
4759    /// Please consult the [Working with enums] section in the user guide for some
4760    /// guidelines.
4761    ///
4762    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
4763    #[derive(Clone, Debug, PartialEq)]
4764    #[non_exhaustive]
4765    pub enum VolumeType {
4766        /// Not set.
4767        Unspecified,
4768        /// GP2 (General Purpose SSD volume type).
4769        Gp2,
4770        /// GP3 (General Purpose SSD volume type).
4771        Gp3,
4772        /// If set, the enum was initialized with an unknown value.
4773        ///
4774        /// Applications can examine the value using [VolumeType::value] or
4775        /// [VolumeType::name].
4776        UnknownValue(volume_type::UnknownValue),
4777    }
4778
4779    #[doc(hidden)]
4780    pub mod volume_type {
4781        #[allow(unused_imports)]
4782        use super::*;
4783        #[derive(Clone, Debug, PartialEq)]
4784        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
4785    }
4786
4787    impl VolumeType {
4788        /// Gets the enum value.
4789        ///
4790        /// Returns `None` if the enum contains an unknown value deserialized from
4791        /// the string representation of enums.
4792        pub fn value(&self) -> std::option::Option<i32> {
4793            match self {
4794                Self::Unspecified => std::option::Option::Some(0),
4795                Self::Gp2 => std::option::Option::Some(1),
4796                Self::Gp3 => std::option::Option::Some(2),
4797                Self::UnknownValue(u) => u.0.value(),
4798            }
4799        }
4800
4801        /// Gets the enum value as a string.
4802        ///
4803        /// Returns `None` if the enum contains an unknown value deserialized from
4804        /// the integer representation of enums.
4805        pub fn name(&self) -> std::option::Option<&str> {
4806            match self {
4807                Self::Unspecified => std::option::Option::Some("VOLUME_TYPE_UNSPECIFIED"),
4808                Self::Gp2 => std::option::Option::Some("GP2"),
4809                Self::Gp3 => std::option::Option::Some("GP3"),
4810                Self::UnknownValue(u) => u.0.name(),
4811            }
4812        }
4813    }
4814
4815    impl std::default::Default for VolumeType {
4816        fn default() -> Self {
4817            use std::convert::From;
4818            Self::from(0)
4819        }
4820    }
4821
4822    impl std::fmt::Display for VolumeType {
4823        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
4824            wkt::internal::display_enum(f, self.name(), self.value())
4825        }
4826    }
4827
4828    impl std::convert::From<i32> for VolumeType {
4829        fn from(value: i32) -> Self {
4830            match value {
4831                0 => Self::Unspecified,
4832                1 => Self::Gp2,
4833                2 => Self::Gp3,
4834                _ => Self::UnknownValue(volume_type::UnknownValue(
4835                    wkt::internal::UnknownEnumValue::Integer(value),
4836                )),
4837            }
4838        }
4839    }
4840
4841    impl std::convert::From<&str> for VolumeType {
4842        fn from(value: &str) -> Self {
4843            use std::string::ToString;
4844            match value {
4845                "VOLUME_TYPE_UNSPECIFIED" => Self::Unspecified,
4846                "GP2" => Self::Gp2,
4847                "GP3" => Self::Gp3,
4848                _ => Self::UnknownValue(volume_type::UnknownValue(
4849                    wkt::internal::UnknownEnumValue::String(value.to_string()),
4850                )),
4851            }
4852        }
4853    }
4854
4855    impl serde::ser::Serialize for VolumeType {
4856        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4857        where
4858            S: serde::Serializer,
4859        {
4860            match self {
4861                Self::Unspecified => serializer.serialize_i32(0),
4862                Self::Gp2 => serializer.serialize_i32(1),
4863                Self::Gp3 => serializer.serialize_i32(2),
4864                Self::UnknownValue(u) => u.0.serialize(serializer),
4865            }
4866        }
4867    }
4868
4869    impl<'de> serde::de::Deserialize<'de> for VolumeType {
4870        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4871        where
4872            D: serde::Deserializer<'de>,
4873        {
4874            deserializer.deserialize_any(wkt::internal::EnumVisitor::<VolumeType>::new(
4875                ".google.cloud.gkemulticloud.v1.AwsVolumeTemplate.VolumeType",
4876            ))
4877        }
4878    }
4879}
4880
4881/// ClusterNetworking defines cluster-wide networking configuration.
4882///
4883/// Anthos clusters on AWS run on a single VPC. This includes control
4884/// plane replicas and node pool nodes.
4885#[derive(Clone, Default, PartialEq)]
4886#[non_exhaustive]
4887#[deprecated]
4888pub struct AwsClusterNetworking {
4889    /// Required. The VPC associated with the cluster. All component clusters
4890    /// (i.e. control plane and node pools) run on a single VPC.
4891    ///
4892    /// This field cannot be changed after creation.
4893    pub vpc_id: std::string::String,
4894
4895    /// Required. All pods in the cluster are assigned an IPv4 address from these
4896    /// ranges. Only a single range is supported. This field cannot be changed
4897    /// after creation.
4898    pub pod_address_cidr_blocks: std::vec::Vec<std::string::String>,
4899
4900    /// Required. All services in the cluster are assigned an IPv4 address from
4901    /// these ranges. Only a single range is supported. This field cannot be
4902    /// changed after creation.
4903    pub service_address_cidr_blocks: std::vec::Vec<std::string::String>,
4904
4905    /// Optional. Disable the per node pool subnet security group rules on the
4906    /// control plane security group. When set to true, you must also provide one
4907    /// or more security groups that ensure node pools are able to send requests to
4908    /// the control plane on TCP/443 and TCP/8132. Failure to do so may result in
4909    /// unavailable node pools.
4910    pub per_node_pool_sg_rules_disabled: bool,
4911
4912    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
4913}
4914
4915impl AwsClusterNetworking {
4916    pub fn new() -> Self {
4917        std::default::Default::default()
4918    }
4919
4920    /// Sets the value of [vpc_id][crate::model::AwsClusterNetworking::vpc_id].
4921    ///
4922    /// # Example
4923    /// ```ignore,no_run
4924    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
4925    /// let x = AwsClusterNetworking::new().set_vpc_id("example");
4926    /// ```
4927    pub fn set_vpc_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
4928        self.vpc_id = v.into();
4929        self
4930    }
4931
4932    /// Sets the value of [pod_address_cidr_blocks][crate::model::AwsClusterNetworking::pod_address_cidr_blocks].
4933    ///
4934    /// # Example
4935    /// ```ignore,no_run
4936    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
4937    /// let x = AwsClusterNetworking::new().set_pod_address_cidr_blocks(["a", "b", "c"]);
4938    /// ```
4939    pub fn set_pod_address_cidr_blocks<T, V>(mut self, v: T) -> Self
4940    where
4941        T: std::iter::IntoIterator<Item = V>,
4942        V: std::convert::Into<std::string::String>,
4943    {
4944        use std::iter::Iterator;
4945        self.pod_address_cidr_blocks = v.into_iter().map(|i| i.into()).collect();
4946        self
4947    }
4948
4949    /// Sets the value of [service_address_cidr_blocks][crate::model::AwsClusterNetworking::service_address_cidr_blocks].
4950    ///
4951    /// # Example
4952    /// ```ignore,no_run
4953    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
4954    /// let x = AwsClusterNetworking::new().set_service_address_cidr_blocks(["a", "b", "c"]);
4955    /// ```
4956    pub fn set_service_address_cidr_blocks<T, V>(mut self, v: T) -> Self
4957    where
4958        T: std::iter::IntoIterator<Item = V>,
4959        V: std::convert::Into<std::string::String>,
4960    {
4961        use std::iter::Iterator;
4962        self.service_address_cidr_blocks = v.into_iter().map(|i| i.into()).collect();
4963        self
4964    }
4965
4966    /// Sets the value of [per_node_pool_sg_rules_disabled][crate::model::AwsClusterNetworking::per_node_pool_sg_rules_disabled].
4967    ///
4968    /// # Example
4969    /// ```ignore,no_run
4970    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterNetworking;
4971    /// let x = AwsClusterNetworking::new().set_per_node_pool_sg_rules_disabled(true);
4972    /// ```
4973    pub fn set_per_node_pool_sg_rules_disabled<T: std::convert::Into<bool>>(
4974        mut self,
4975        v: T,
4976    ) -> Self {
4977        self.per_node_pool_sg_rules_disabled = v.into();
4978        self
4979    }
4980}
4981
4982impl wkt::message::Message for AwsClusterNetworking {
4983    fn typename() -> &'static str {
4984        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsClusterNetworking"
4985    }
4986}
4987
4988/// An Anthos node pool running on AWS.
4989#[derive(Clone, Default, PartialEq)]
4990#[non_exhaustive]
4991#[deprecated]
4992pub struct AwsNodePool {
4993    /// The name of this resource.
4994    ///
4995    /// Node pool names are formatted as
4996    /// `projects/<project-number>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
4997    ///
4998    /// For more details on Google Cloud resource names,
4999    /// see [Resource Names](https://cloud.google.com/apis/design/resource_names)
5000    pub name: std::string::String,
5001
5002    /// Required. The Kubernetes version to run on this node pool (e.g.
5003    /// `1.19.10-gke.1000`).
5004    ///
5005    /// You can list all supported versions on a given Google Cloud region by
5006    /// calling
5007    /// [GetAwsServerConfig][google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig].
5008    ///
5009    /// [google.cloud.gkemulticloud.v1.AwsClusters.GetAwsServerConfig]: crate::client::AwsClusters::get_aws_server_config
5010    pub version: std::string::String,
5011
5012    /// Required. The configuration of the node pool.
5013    pub config: std::option::Option<crate::model::AwsNodeConfig>,
5014
5015    /// Required. Autoscaler configuration for this node pool.
5016    pub autoscaling: std::option::Option<crate::model::AwsNodePoolAutoscaling>,
5017
5018    /// Required. The subnet where the node pool node run.
5019    pub subnet_id: std::string::String,
5020
5021    /// Output only. The lifecycle state of the node pool.
5022    pub state: crate::model::aws_node_pool::State,
5023
5024    /// Output only. A globally unique identifier for the node pool.
5025    pub uid: std::string::String,
5026
5027    /// Output only. If set, there are currently changes in flight to the node
5028    /// pool.
5029    pub reconciling: bool,
5030
5031    /// Output only. The time at which this node pool was created.
5032    pub create_time: std::option::Option<wkt::Timestamp>,
5033
5034    /// Output only. The time at which this node pool was last updated.
5035    pub update_time: std::option::Option<wkt::Timestamp>,
5036
5037    /// Allows clients to perform consistent read-modify-writes
5038    /// through optimistic concurrency control.
5039    ///
5040    /// Can be sent on update and delete requests to ensure the
5041    /// client has an up-to-date value before proceeding.
5042    pub etag: std::string::String,
5043
5044    /// Optional. Annotations on the node pool.
5045    ///
5046    /// This field has the same restrictions as Kubernetes annotations.
5047    /// The total size of all keys and values combined is limited to 256k.
5048    /// Key can have 2 segments: prefix (optional) and name (required),
5049    /// separated by a slash (/).
5050    /// Prefix must be a DNS subdomain.
5051    /// Name must be 63 characters or less, begin and end with alphanumerics,
5052    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
5053    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
5054
5055    /// Required. The constraint on the maximum number of pods that can be run
5056    /// simultaneously on a node in the node pool.
5057    pub max_pods_constraint: std::option::Option<crate::model::MaxPodsConstraint>,
5058
5059    /// Output only. A set of errors found in the node pool.
5060    pub errors: std::vec::Vec<crate::model::AwsNodePoolError>,
5061
5062    /// Optional. The Management configuration for this node pool.
5063    pub management: std::option::Option<crate::model::AwsNodeManagement>,
5064
5065    /// Optional. Node kubelet configs.
5066    pub kubelet_config: std::option::Option<crate::model::NodeKubeletConfig>,
5067
5068    /// Optional. Update settings control the speed and disruption of the update.
5069    pub update_settings: std::option::Option<crate::model::UpdateSettings>,
5070
5071    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5072}
5073
5074impl AwsNodePool {
5075    pub fn new() -> Self {
5076        std::default::Default::default()
5077    }
5078
5079    /// Sets the value of [name][crate::model::AwsNodePool::name].
5080    ///
5081    /// # Example
5082    /// ```ignore,no_run
5083    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5084    /// let x = AwsNodePool::new().set_name("example");
5085    /// ```
5086    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5087        self.name = v.into();
5088        self
5089    }
5090
5091    /// Sets the value of [version][crate::model::AwsNodePool::version].
5092    ///
5093    /// # Example
5094    /// ```ignore,no_run
5095    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5096    /// let x = AwsNodePool::new().set_version("example");
5097    /// ```
5098    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5099        self.version = v.into();
5100        self
5101    }
5102
5103    /// Sets the value of [config][crate::model::AwsNodePool::config].
5104    ///
5105    /// # Example
5106    /// ```ignore,no_run
5107    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5108    /// use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5109    /// let x = AwsNodePool::new().set_config(AwsNodeConfig::default()/* use setters */);
5110    /// ```
5111    pub fn set_config<T>(mut self, v: T) -> Self
5112    where
5113        T: std::convert::Into<crate::model::AwsNodeConfig>,
5114    {
5115        self.config = std::option::Option::Some(v.into());
5116        self
5117    }
5118
5119    /// Sets or clears the value of [config][crate::model::AwsNodePool::config].
5120    ///
5121    /// # Example
5122    /// ```ignore,no_run
5123    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5124    /// use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5125    /// let x = AwsNodePool::new().set_or_clear_config(Some(AwsNodeConfig::default()/* use setters */));
5126    /// let x = AwsNodePool::new().set_or_clear_config(None::<AwsNodeConfig>);
5127    /// ```
5128    pub fn set_or_clear_config<T>(mut self, v: std::option::Option<T>) -> Self
5129    where
5130        T: std::convert::Into<crate::model::AwsNodeConfig>,
5131    {
5132        self.config = v.map(|x| x.into());
5133        self
5134    }
5135
5136    /// Sets the value of [autoscaling][crate::model::AwsNodePool::autoscaling].
5137    ///
5138    /// # Example
5139    /// ```ignore,no_run
5140    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5141    /// use google_cloud_gkemulticloud_v1::model::AwsNodePoolAutoscaling;
5142    /// let x = AwsNodePool::new().set_autoscaling(AwsNodePoolAutoscaling::default()/* use setters */);
5143    /// ```
5144    pub fn set_autoscaling<T>(mut self, v: T) -> Self
5145    where
5146        T: std::convert::Into<crate::model::AwsNodePoolAutoscaling>,
5147    {
5148        self.autoscaling = std::option::Option::Some(v.into());
5149        self
5150    }
5151
5152    /// Sets or clears the value of [autoscaling][crate::model::AwsNodePool::autoscaling].
5153    ///
5154    /// # Example
5155    /// ```ignore,no_run
5156    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5157    /// use google_cloud_gkemulticloud_v1::model::AwsNodePoolAutoscaling;
5158    /// let x = AwsNodePool::new().set_or_clear_autoscaling(Some(AwsNodePoolAutoscaling::default()/* use setters */));
5159    /// let x = AwsNodePool::new().set_or_clear_autoscaling(None::<AwsNodePoolAutoscaling>);
5160    /// ```
5161    pub fn set_or_clear_autoscaling<T>(mut self, v: std::option::Option<T>) -> Self
5162    where
5163        T: std::convert::Into<crate::model::AwsNodePoolAutoscaling>,
5164    {
5165        self.autoscaling = v.map(|x| x.into());
5166        self
5167    }
5168
5169    /// Sets the value of [subnet_id][crate::model::AwsNodePool::subnet_id].
5170    ///
5171    /// # Example
5172    /// ```ignore,no_run
5173    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5174    /// let x = AwsNodePool::new().set_subnet_id("example");
5175    /// ```
5176    pub fn set_subnet_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5177        self.subnet_id = v.into();
5178        self
5179    }
5180
5181    /// Sets the value of [state][crate::model::AwsNodePool::state].
5182    ///
5183    /// # Example
5184    /// ```ignore,no_run
5185    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5186    /// use google_cloud_gkemulticloud_v1::model::aws_node_pool::State;
5187    /// let x0 = AwsNodePool::new().set_state(State::Provisioning);
5188    /// let x1 = AwsNodePool::new().set_state(State::Running);
5189    /// let x2 = AwsNodePool::new().set_state(State::Reconciling);
5190    /// ```
5191    pub fn set_state<T: std::convert::Into<crate::model::aws_node_pool::State>>(
5192        mut self,
5193        v: T,
5194    ) -> Self {
5195        self.state = v.into();
5196        self
5197    }
5198
5199    /// Sets the value of [uid][crate::model::AwsNodePool::uid].
5200    ///
5201    /// # Example
5202    /// ```ignore,no_run
5203    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5204    /// let x = AwsNodePool::new().set_uid("example");
5205    /// ```
5206    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5207        self.uid = v.into();
5208        self
5209    }
5210
5211    /// Sets the value of [reconciling][crate::model::AwsNodePool::reconciling].
5212    ///
5213    /// # Example
5214    /// ```ignore,no_run
5215    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5216    /// let x = AwsNodePool::new().set_reconciling(true);
5217    /// ```
5218    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
5219        self.reconciling = v.into();
5220        self
5221    }
5222
5223    /// Sets the value of [create_time][crate::model::AwsNodePool::create_time].
5224    ///
5225    /// # Example
5226    /// ```ignore,no_run
5227    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5228    /// use wkt::Timestamp;
5229    /// let x = AwsNodePool::new().set_create_time(Timestamp::default()/* use setters */);
5230    /// ```
5231    pub fn set_create_time<T>(mut self, v: T) -> Self
5232    where
5233        T: std::convert::Into<wkt::Timestamp>,
5234    {
5235        self.create_time = std::option::Option::Some(v.into());
5236        self
5237    }
5238
5239    /// Sets or clears the value of [create_time][crate::model::AwsNodePool::create_time].
5240    ///
5241    /// # Example
5242    /// ```ignore,no_run
5243    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5244    /// use wkt::Timestamp;
5245    /// let x = AwsNodePool::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
5246    /// let x = AwsNodePool::new().set_or_clear_create_time(None::<Timestamp>);
5247    /// ```
5248    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
5249    where
5250        T: std::convert::Into<wkt::Timestamp>,
5251    {
5252        self.create_time = v.map(|x| x.into());
5253        self
5254    }
5255
5256    /// Sets the value of [update_time][crate::model::AwsNodePool::update_time].
5257    ///
5258    /// # Example
5259    /// ```ignore,no_run
5260    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5261    /// use wkt::Timestamp;
5262    /// let x = AwsNodePool::new().set_update_time(Timestamp::default()/* use setters */);
5263    /// ```
5264    pub fn set_update_time<T>(mut self, v: T) -> Self
5265    where
5266        T: std::convert::Into<wkt::Timestamp>,
5267    {
5268        self.update_time = std::option::Option::Some(v.into());
5269        self
5270    }
5271
5272    /// Sets or clears the value of [update_time][crate::model::AwsNodePool::update_time].
5273    ///
5274    /// # Example
5275    /// ```ignore,no_run
5276    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5277    /// use wkt::Timestamp;
5278    /// let x = AwsNodePool::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
5279    /// let x = AwsNodePool::new().set_or_clear_update_time(None::<Timestamp>);
5280    /// ```
5281    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
5282    where
5283        T: std::convert::Into<wkt::Timestamp>,
5284    {
5285        self.update_time = v.map(|x| x.into());
5286        self
5287    }
5288
5289    /// Sets the value of [etag][crate::model::AwsNodePool::etag].
5290    ///
5291    /// # Example
5292    /// ```ignore,no_run
5293    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5294    /// let x = AwsNodePool::new().set_etag("example");
5295    /// ```
5296    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5297        self.etag = v.into();
5298        self
5299    }
5300
5301    /// Sets the value of [annotations][crate::model::AwsNodePool::annotations].
5302    ///
5303    /// # Example
5304    /// ```ignore,no_run
5305    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5306    /// let x = AwsNodePool::new().set_annotations([
5307    ///     ("key0", "abc"),
5308    ///     ("key1", "xyz"),
5309    /// ]);
5310    /// ```
5311    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
5312    where
5313        T: std::iter::IntoIterator<Item = (K, V)>,
5314        K: std::convert::Into<std::string::String>,
5315        V: std::convert::Into<std::string::String>,
5316    {
5317        use std::iter::Iterator;
5318        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
5319        self
5320    }
5321
5322    /// Sets the value of [max_pods_constraint][crate::model::AwsNodePool::max_pods_constraint].
5323    ///
5324    /// # Example
5325    /// ```ignore,no_run
5326    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5327    /// use google_cloud_gkemulticloud_v1::model::MaxPodsConstraint;
5328    /// let x = AwsNodePool::new().set_max_pods_constraint(MaxPodsConstraint::default()/* use setters */);
5329    /// ```
5330    pub fn set_max_pods_constraint<T>(mut self, v: T) -> Self
5331    where
5332        T: std::convert::Into<crate::model::MaxPodsConstraint>,
5333    {
5334        self.max_pods_constraint = std::option::Option::Some(v.into());
5335        self
5336    }
5337
5338    /// Sets or clears the value of [max_pods_constraint][crate::model::AwsNodePool::max_pods_constraint].
5339    ///
5340    /// # Example
5341    /// ```ignore,no_run
5342    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5343    /// use google_cloud_gkemulticloud_v1::model::MaxPodsConstraint;
5344    /// let x = AwsNodePool::new().set_or_clear_max_pods_constraint(Some(MaxPodsConstraint::default()/* use setters */));
5345    /// let x = AwsNodePool::new().set_or_clear_max_pods_constraint(None::<MaxPodsConstraint>);
5346    /// ```
5347    pub fn set_or_clear_max_pods_constraint<T>(mut self, v: std::option::Option<T>) -> Self
5348    where
5349        T: std::convert::Into<crate::model::MaxPodsConstraint>,
5350    {
5351        self.max_pods_constraint = v.map(|x| x.into());
5352        self
5353    }
5354
5355    /// Sets the value of [errors][crate::model::AwsNodePool::errors].
5356    ///
5357    /// # Example
5358    /// ```ignore,no_run
5359    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5360    /// use google_cloud_gkemulticloud_v1::model::AwsNodePoolError;
5361    /// let x = AwsNodePool::new()
5362    ///     .set_errors([
5363    ///         AwsNodePoolError::default()/* use setters */,
5364    ///         AwsNodePoolError::default()/* use (different) setters */,
5365    ///     ]);
5366    /// ```
5367    pub fn set_errors<T, V>(mut self, v: T) -> Self
5368    where
5369        T: std::iter::IntoIterator<Item = V>,
5370        V: std::convert::Into<crate::model::AwsNodePoolError>,
5371    {
5372        use std::iter::Iterator;
5373        self.errors = v.into_iter().map(|i| i.into()).collect();
5374        self
5375    }
5376
5377    /// Sets the value of [management][crate::model::AwsNodePool::management].
5378    ///
5379    /// # Example
5380    /// ```ignore,no_run
5381    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5382    /// use google_cloud_gkemulticloud_v1::model::AwsNodeManagement;
5383    /// let x = AwsNodePool::new().set_management(AwsNodeManagement::default()/* use setters */);
5384    /// ```
5385    pub fn set_management<T>(mut self, v: T) -> Self
5386    where
5387        T: std::convert::Into<crate::model::AwsNodeManagement>,
5388    {
5389        self.management = std::option::Option::Some(v.into());
5390        self
5391    }
5392
5393    /// Sets or clears the value of [management][crate::model::AwsNodePool::management].
5394    ///
5395    /// # Example
5396    /// ```ignore,no_run
5397    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5398    /// use google_cloud_gkemulticloud_v1::model::AwsNodeManagement;
5399    /// let x = AwsNodePool::new().set_or_clear_management(Some(AwsNodeManagement::default()/* use setters */));
5400    /// let x = AwsNodePool::new().set_or_clear_management(None::<AwsNodeManagement>);
5401    /// ```
5402    pub fn set_or_clear_management<T>(mut self, v: std::option::Option<T>) -> Self
5403    where
5404        T: std::convert::Into<crate::model::AwsNodeManagement>,
5405    {
5406        self.management = v.map(|x| x.into());
5407        self
5408    }
5409
5410    /// Sets the value of [kubelet_config][crate::model::AwsNodePool::kubelet_config].
5411    ///
5412    /// # Example
5413    /// ```ignore,no_run
5414    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5415    /// use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
5416    /// let x = AwsNodePool::new().set_kubelet_config(NodeKubeletConfig::default()/* use setters */);
5417    /// ```
5418    pub fn set_kubelet_config<T>(mut self, v: T) -> Self
5419    where
5420        T: std::convert::Into<crate::model::NodeKubeletConfig>,
5421    {
5422        self.kubelet_config = std::option::Option::Some(v.into());
5423        self
5424    }
5425
5426    /// Sets or clears the value of [kubelet_config][crate::model::AwsNodePool::kubelet_config].
5427    ///
5428    /// # Example
5429    /// ```ignore,no_run
5430    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5431    /// use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
5432    /// let x = AwsNodePool::new().set_or_clear_kubelet_config(Some(NodeKubeletConfig::default()/* use setters */));
5433    /// let x = AwsNodePool::new().set_or_clear_kubelet_config(None::<NodeKubeletConfig>);
5434    /// ```
5435    pub fn set_or_clear_kubelet_config<T>(mut self, v: std::option::Option<T>) -> Self
5436    where
5437        T: std::convert::Into<crate::model::NodeKubeletConfig>,
5438    {
5439        self.kubelet_config = v.map(|x| x.into());
5440        self
5441    }
5442
5443    /// Sets the value of [update_settings][crate::model::AwsNodePool::update_settings].
5444    ///
5445    /// # Example
5446    /// ```ignore,no_run
5447    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5448    /// use google_cloud_gkemulticloud_v1::model::UpdateSettings;
5449    /// let x = AwsNodePool::new().set_update_settings(UpdateSettings::default()/* use setters */);
5450    /// ```
5451    pub fn set_update_settings<T>(mut self, v: T) -> Self
5452    where
5453        T: std::convert::Into<crate::model::UpdateSettings>,
5454    {
5455        self.update_settings = std::option::Option::Some(v.into());
5456        self
5457    }
5458
5459    /// Sets or clears the value of [update_settings][crate::model::AwsNodePool::update_settings].
5460    ///
5461    /// # Example
5462    /// ```ignore,no_run
5463    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePool;
5464    /// use google_cloud_gkemulticloud_v1::model::UpdateSettings;
5465    /// let x = AwsNodePool::new().set_or_clear_update_settings(Some(UpdateSettings::default()/* use setters */));
5466    /// let x = AwsNodePool::new().set_or_clear_update_settings(None::<UpdateSettings>);
5467    /// ```
5468    pub fn set_or_clear_update_settings<T>(mut self, v: std::option::Option<T>) -> Self
5469    where
5470        T: std::convert::Into<crate::model::UpdateSettings>,
5471    {
5472        self.update_settings = v.map(|x| x.into());
5473        self
5474    }
5475}
5476
5477impl wkt::message::Message for AwsNodePool {
5478    fn typename() -> &'static str {
5479        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsNodePool"
5480    }
5481}
5482
5483/// Defines additional types related to [AwsNodePool].
5484pub mod aws_node_pool {
5485    #[allow(unused_imports)]
5486    use super::*;
5487
5488    /// The lifecycle state of the node pool.
5489    ///
5490    /// # Working with unknown values
5491    ///
5492    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
5493    /// additional enum variants at any time. Adding new variants is not considered
5494    /// a breaking change. Applications should write their code in anticipation of:
5495    ///
5496    /// - New values appearing in future releases of the client library, **and**
5497    /// - New values received dynamically, without application changes.
5498    ///
5499    /// Please consult the [Working with enums] section in the user guide for some
5500    /// guidelines.
5501    ///
5502    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
5503    #[derive(Clone, Debug, PartialEq)]
5504    #[non_exhaustive]
5505    pub enum State {
5506        /// Not set.
5507        Unspecified,
5508        /// The PROVISIONING state indicates the node pool is being created.
5509        Provisioning,
5510        /// The RUNNING state indicates the node pool has been created
5511        /// and is fully usable.
5512        Running,
5513        /// The RECONCILING state indicates that the node pool is being reconciled.
5514        Reconciling,
5515        /// The STOPPING state indicates the node pool is being deleted.
5516        Stopping,
5517        /// The ERROR state indicates the node pool is in a broken unrecoverable
5518        /// state.
5519        Error,
5520        /// The DEGRADED state indicates the node pool requires user action to
5521        /// restore full functionality.
5522        Degraded,
5523        /// If set, the enum was initialized with an unknown value.
5524        ///
5525        /// Applications can examine the value using [State::value] or
5526        /// [State::name].
5527        UnknownValue(state::UnknownValue),
5528    }
5529
5530    #[doc(hidden)]
5531    pub mod state {
5532        #[allow(unused_imports)]
5533        use super::*;
5534        #[derive(Clone, Debug, PartialEq)]
5535        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
5536    }
5537
5538    impl State {
5539        /// Gets the enum value.
5540        ///
5541        /// Returns `None` if the enum contains an unknown value deserialized from
5542        /// the string representation of enums.
5543        pub fn value(&self) -> std::option::Option<i32> {
5544            match self {
5545                Self::Unspecified => std::option::Option::Some(0),
5546                Self::Provisioning => std::option::Option::Some(1),
5547                Self::Running => std::option::Option::Some(2),
5548                Self::Reconciling => std::option::Option::Some(3),
5549                Self::Stopping => std::option::Option::Some(4),
5550                Self::Error => std::option::Option::Some(5),
5551                Self::Degraded => std::option::Option::Some(6),
5552                Self::UnknownValue(u) => u.0.value(),
5553            }
5554        }
5555
5556        /// Gets the enum value as a string.
5557        ///
5558        /// Returns `None` if the enum contains an unknown value deserialized from
5559        /// the integer representation of enums.
5560        pub fn name(&self) -> std::option::Option<&str> {
5561            match self {
5562                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
5563                Self::Provisioning => std::option::Option::Some("PROVISIONING"),
5564                Self::Running => std::option::Option::Some("RUNNING"),
5565                Self::Reconciling => std::option::Option::Some("RECONCILING"),
5566                Self::Stopping => std::option::Option::Some("STOPPING"),
5567                Self::Error => std::option::Option::Some("ERROR"),
5568                Self::Degraded => std::option::Option::Some("DEGRADED"),
5569                Self::UnknownValue(u) => u.0.name(),
5570            }
5571        }
5572    }
5573
5574    impl std::default::Default for State {
5575        fn default() -> Self {
5576            use std::convert::From;
5577            Self::from(0)
5578        }
5579    }
5580
5581    impl std::fmt::Display for State {
5582        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
5583            wkt::internal::display_enum(f, self.name(), self.value())
5584        }
5585    }
5586
5587    impl std::convert::From<i32> for State {
5588        fn from(value: i32) -> Self {
5589            match value {
5590                0 => Self::Unspecified,
5591                1 => Self::Provisioning,
5592                2 => Self::Running,
5593                3 => Self::Reconciling,
5594                4 => Self::Stopping,
5595                5 => Self::Error,
5596                6 => Self::Degraded,
5597                _ => Self::UnknownValue(state::UnknownValue(
5598                    wkt::internal::UnknownEnumValue::Integer(value),
5599                )),
5600            }
5601        }
5602    }
5603
5604    impl std::convert::From<&str> for State {
5605        fn from(value: &str) -> Self {
5606            use std::string::ToString;
5607            match value {
5608                "STATE_UNSPECIFIED" => Self::Unspecified,
5609                "PROVISIONING" => Self::Provisioning,
5610                "RUNNING" => Self::Running,
5611                "RECONCILING" => Self::Reconciling,
5612                "STOPPING" => Self::Stopping,
5613                "ERROR" => Self::Error,
5614                "DEGRADED" => Self::Degraded,
5615                _ => Self::UnknownValue(state::UnknownValue(
5616                    wkt::internal::UnknownEnumValue::String(value.to_string()),
5617                )),
5618            }
5619        }
5620    }
5621
5622    impl serde::ser::Serialize for State {
5623        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5624        where
5625            S: serde::Serializer,
5626        {
5627            match self {
5628                Self::Unspecified => serializer.serialize_i32(0),
5629                Self::Provisioning => serializer.serialize_i32(1),
5630                Self::Running => serializer.serialize_i32(2),
5631                Self::Reconciling => serializer.serialize_i32(3),
5632                Self::Stopping => serializer.serialize_i32(4),
5633                Self::Error => serializer.serialize_i32(5),
5634                Self::Degraded => serializer.serialize_i32(6),
5635                Self::UnknownValue(u) => u.0.serialize(serializer),
5636            }
5637        }
5638    }
5639
5640    impl<'de> serde::de::Deserialize<'de> for State {
5641        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5642        where
5643            D: serde::Deserializer<'de>,
5644        {
5645            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
5646                ".google.cloud.gkemulticloud.v1.AwsNodePool.State",
5647            ))
5648        }
5649    }
5650}
5651
5652/// UpdateSettings control the level of parallelism and the level of
5653/// disruption caused during the update of a node pool.
5654///
5655/// These settings are applicable when the node pool update requires replacing
5656/// the existing node pool nodes with the updated ones.
5657///
5658/// UpdateSettings are optional. When UpdateSettings are not specified during the
5659/// node pool creation, a default is chosen based on the parent cluster's
5660/// version. For clusters with minor version 1.27 and later, a default
5661/// surge_settings configuration with max_surge = 1 and max_unavailable = 0 is
5662/// used. For clusters with older versions, node pool updates use the traditional
5663/// rolling update mechanism of updating one node at a time in a
5664/// "terminate before create" fashion and update_settings is not applicable.
5665///
5666/// Set the surge_settings parameter to use the Surge Update mechanism for
5667/// the rolling update of node pool nodes.
5668///
5669/// 1. max_surge controls the number of additional nodes that can be created
5670///    beyond the current size of the node pool temporarily for the time of the
5671///    update to increase the number of available nodes.
5672/// 1. max_unavailable controls the number of nodes that can be simultaneously
5673///    unavailable during the update.
5674/// 1. (max_surge + max_unavailable) determines the level of parallelism (i.e.,
5675///    the number of nodes being updated at the same time).
5676#[derive(Clone, Default, PartialEq)]
5677#[non_exhaustive]
5678#[deprecated]
5679pub struct UpdateSettings {
5680    /// Optional. Settings for surge update.
5681    pub surge_settings: std::option::Option<crate::model::SurgeSettings>,
5682
5683    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5684}
5685
5686impl UpdateSettings {
5687    pub fn new() -> Self {
5688        std::default::Default::default()
5689    }
5690
5691    /// Sets the value of [surge_settings][crate::model::UpdateSettings::surge_settings].
5692    ///
5693    /// # Example
5694    /// ```ignore,no_run
5695    /// # use google_cloud_gkemulticloud_v1::model::UpdateSettings;
5696    /// use google_cloud_gkemulticloud_v1::model::SurgeSettings;
5697    /// let x = UpdateSettings::new().set_surge_settings(SurgeSettings::default()/* use setters */);
5698    /// ```
5699    pub fn set_surge_settings<T>(mut self, v: T) -> Self
5700    where
5701        T: std::convert::Into<crate::model::SurgeSettings>,
5702    {
5703        self.surge_settings = std::option::Option::Some(v.into());
5704        self
5705    }
5706
5707    /// Sets or clears the value of [surge_settings][crate::model::UpdateSettings::surge_settings].
5708    ///
5709    /// # Example
5710    /// ```ignore,no_run
5711    /// # use google_cloud_gkemulticloud_v1::model::UpdateSettings;
5712    /// use google_cloud_gkemulticloud_v1::model::SurgeSettings;
5713    /// let x = UpdateSettings::new().set_or_clear_surge_settings(Some(SurgeSettings::default()/* use setters */));
5714    /// let x = UpdateSettings::new().set_or_clear_surge_settings(None::<SurgeSettings>);
5715    /// ```
5716    pub fn set_or_clear_surge_settings<T>(mut self, v: std::option::Option<T>) -> Self
5717    where
5718        T: std::convert::Into<crate::model::SurgeSettings>,
5719    {
5720        self.surge_settings = v.map(|x| x.into());
5721        self
5722    }
5723}
5724
5725impl wkt::message::Message for UpdateSettings {
5726    fn typename() -> &'static str {
5727        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateSettings"
5728    }
5729}
5730
5731/// SurgeSettings contains the parameters for Surge update.
5732#[derive(Clone, Default, PartialEq)]
5733#[non_exhaustive]
5734#[deprecated]
5735pub struct SurgeSettings {
5736    /// Optional. The maximum number of nodes that can be created beyond the
5737    /// current size of the node pool during the update process.
5738    pub max_surge: i32,
5739
5740    /// Optional. The maximum number of nodes that can be simultaneously
5741    /// unavailable during the update process. A node is considered unavailable if
5742    /// its status is not Ready.
5743    pub max_unavailable: i32,
5744
5745    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5746}
5747
5748impl SurgeSettings {
5749    pub fn new() -> Self {
5750        std::default::Default::default()
5751    }
5752
5753    /// Sets the value of [max_surge][crate::model::SurgeSettings::max_surge].
5754    ///
5755    /// # Example
5756    /// ```ignore,no_run
5757    /// # use google_cloud_gkemulticloud_v1::model::SurgeSettings;
5758    /// let x = SurgeSettings::new().set_max_surge(42);
5759    /// ```
5760    pub fn set_max_surge<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
5761        self.max_surge = v.into();
5762        self
5763    }
5764
5765    /// Sets the value of [max_unavailable][crate::model::SurgeSettings::max_unavailable].
5766    ///
5767    /// # Example
5768    /// ```ignore,no_run
5769    /// # use google_cloud_gkemulticloud_v1::model::SurgeSettings;
5770    /// let x = SurgeSettings::new().set_max_unavailable(42);
5771    /// ```
5772    pub fn set_max_unavailable<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
5773        self.max_unavailable = v.into();
5774        self
5775    }
5776}
5777
5778impl wkt::message::Message for SurgeSettings {
5779    fn typename() -> &'static str {
5780        "type.googleapis.com/google.cloud.gkemulticloud.v1.SurgeSettings"
5781    }
5782}
5783
5784/// AwsNodeManagement defines the set of node management features turned on for
5785/// an AWS node pool.
5786#[derive(Clone, Default, PartialEq)]
5787#[non_exhaustive]
5788#[deprecated]
5789pub struct AwsNodeManagement {
5790    /// Optional. Whether or not the nodes will be automatically repaired. When set
5791    /// to true, the nodes in this node pool will be monitored and if they fail
5792    /// health checks consistently over a period of time, an automatic repair
5793    /// action will be triggered to replace them with new nodes.
5794    pub auto_repair: bool,
5795
5796    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5797}
5798
5799impl AwsNodeManagement {
5800    pub fn new() -> Self {
5801        std::default::Default::default()
5802    }
5803
5804    /// Sets the value of [auto_repair][crate::model::AwsNodeManagement::auto_repair].
5805    ///
5806    /// # Example
5807    /// ```ignore,no_run
5808    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeManagement;
5809    /// let x = AwsNodeManagement::new().set_auto_repair(true);
5810    /// ```
5811    pub fn set_auto_repair<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
5812        self.auto_repair = v.into();
5813        self
5814    }
5815}
5816
5817impl wkt::message::Message for AwsNodeManagement {
5818    fn typename() -> &'static str {
5819        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsNodeManagement"
5820    }
5821}
5822
5823/// Parameters that describe the nodes in a cluster.
5824#[derive(Clone, Default, PartialEq)]
5825#[non_exhaustive]
5826#[deprecated]
5827pub struct AwsNodeConfig {
5828    /// Optional. The EC2 instance type when creating on-Demand instances.
5829    ///
5830    /// If unspecified during node pool creation, a default will be chosen based on
5831    /// the node pool version, and assigned to this field.
5832    pub instance_type: std::string::String,
5833
5834    /// Optional. Template for the root volume provisioned for node pool nodes.
5835    /// Volumes will be provisioned in the availability zone assigned
5836    /// to the node pool subnet.
5837    ///
5838    /// When unspecified, it defaults to 32 GiB with the GP2 volume type.
5839    pub root_volume: std::option::Option<crate::model::AwsVolumeTemplate>,
5840
5841    /// Optional. The initial taints assigned to nodes of this node pool.
5842    pub taints: std::vec::Vec<crate::model::NodeTaint>,
5843
5844    /// Optional. The initial labels assigned to nodes of this node pool. An object
5845    /// containing a list of "key": value pairs. Example: { "name": "wrench",
5846    /// "mass": "1.3kg", "count": "3" }.
5847    pub labels: std::collections::HashMap<std::string::String, std::string::String>,
5848
5849    /// Optional. Key/value metadata to assign to each underlying AWS resource.
5850    /// Specify at most 50 pairs containing alphanumerics, spaces, and symbols
5851    /// (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to
5852    /// 255 Unicode characters.
5853    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
5854
5855    /// Required. The name or ARN of the AWS IAM instance profile to assign to
5856    /// nodes in the pool.
5857    pub iam_instance_profile: std::string::String,
5858
5859    /// Optional. The OS image type to use on node pool instances.
5860    /// Can be unspecified, or have a value of `ubuntu`.
5861    ///
5862    /// When unspecified, it defaults to `ubuntu`.
5863    pub image_type: std::string::String,
5864
5865    /// Optional. The SSH configuration.
5866    pub ssh_config: std::option::Option<crate::model::AwsSshConfig>,
5867
5868    /// Optional. The IDs of additional security groups to add to nodes in this
5869    /// pool. The manager will automatically create security groups with minimum
5870    /// rules needed for a functioning cluster.
5871    pub security_group_ids: std::vec::Vec<std::string::String>,
5872
5873    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
5874    pub proxy_config: std::option::Option<crate::model::AwsProxyConfig>,
5875
5876    /// Required. Config encryption for user data.
5877    pub config_encryption: std::option::Option<crate::model::AwsConfigEncryption>,
5878
5879    /// Optional. Placement related info for this node.
5880    /// When unspecified, the VPC's default tenancy will be used.
5881    pub instance_placement: std::option::Option<crate::model::AwsInstancePlacement>,
5882
5883    /// Optional. Configuration related to CloudWatch metrics collection on the
5884    /// Auto Scaling group of the node pool.
5885    ///
5886    /// When unspecified, metrics collection is disabled.
5887    pub autoscaling_metrics_collection:
5888        std::option::Option<crate::model::AwsAutoscalingGroupMetricsCollection>,
5889
5890    /// Optional. Configuration for provisioning EC2 Spot instances
5891    ///
5892    /// When specified, the node pool will provision Spot instances from the set
5893    /// of spot_config.instance_types.
5894    /// This field is mutually exclusive with `instance_type`.
5895    pub spot_config: std::option::Option<crate::model::SpotConfig>,
5896
5897    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
5898}
5899
5900impl AwsNodeConfig {
5901    pub fn new() -> Self {
5902        std::default::Default::default()
5903    }
5904
5905    /// Sets the value of [instance_type][crate::model::AwsNodeConfig::instance_type].
5906    ///
5907    /// # Example
5908    /// ```ignore,no_run
5909    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5910    /// let x = AwsNodeConfig::new().set_instance_type("example");
5911    /// ```
5912    pub fn set_instance_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
5913        self.instance_type = v.into();
5914        self
5915    }
5916
5917    /// Sets the value of [root_volume][crate::model::AwsNodeConfig::root_volume].
5918    ///
5919    /// # Example
5920    /// ```ignore,no_run
5921    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5922    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
5923    /// let x = AwsNodeConfig::new().set_root_volume(AwsVolumeTemplate::default()/* use setters */);
5924    /// ```
5925    pub fn set_root_volume<T>(mut self, v: T) -> Self
5926    where
5927        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
5928    {
5929        self.root_volume = std::option::Option::Some(v.into());
5930        self
5931    }
5932
5933    /// Sets or clears the value of [root_volume][crate::model::AwsNodeConfig::root_volume].
5934    ///
5935    /// # Example
5936    /// ```ignore,no_run
5937    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5938    /// use google_cloud_gkemulticloud_v1::model::AwsVolumeTemplate;
5939    /// let x = AwsNodeConfig::new().set_or_clear_root_volume(Some(AwsVolumeTemplate::default()/* use setters */));
5940    /// let x = AwsNodeConfig::new().set_or_clear_root_volume(None::<AwsVolumeTemplate>);
5941    /// ```
5942    pub fn set_or_clear_root_volume<T>(mut self, v: std::option::Option<T>) -> Self
5943    where
5944        T: std::convert::Into<crate::model::AwsVolumeTemplate>,
5945    {
5946        self.root_volume = v.map(|x| x.into());
5947        self
5948    }
5949
5950    /// Sets the value of [taints][crate::model::AwsNodeConfig::taints].
5951    ///
5952    /// # Example
5953    /// ```ignore,no_run
5954    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5955    /// use google_cloud_gkemulticloud_v1::model::NodeTaint;
5956    /// let x = AwsNodeConfig::new()
5957    ///     .set_taints([
5958    ///         NodeTaint::default()/* use setters */,
5959    ///         NodeTaint::default()/* use (different) setters */,
5960    ///     ]);
5961    /// ```
5962    pub fn set_taints<T, V>(mut self, v: T) -> Self
5963    where
5964        T: std::iter::IntoIterator<Item = V>,
5965        V: std::convert::Into<crate::model::NodeTaint>,
5966    {
5967        use std::iter::Iterator;
5968        self.taints = v.into_iter().map(|i| i.into()).collect();
5969        self
5970    }
5971
5972    /// Sets the value of [labels][crate::model::AwsNodeConfig::labels].
5973    ///
5974    /// # Example
5975    /// ```ignore,no_run
5976    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5977    /// let x = AwsNodeConfig::new().set_labels([
5978    ///     ("key0", "abc"),
5979    ///     ("key1", "xyz"),
5980    /// ]);
5981    /// ```
5982    pub fn set_labels<T, K, V>(mut self, v: T) -> Self
5983    where
5984        T: std::iter::IntoIterator<Item = (K, V)>,
5985        K: std::convert::Into<std::string::String>,
5986        V: std::convert::Into<std::string::String>,
5987    {
5988        use std::iter::Iterator;
5989        self.labels = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
5990        self
5991    }
5992
5993    /// Sets the value of [tags][crate::model::AwsNodeConfig::tags].
5994    ///
5995    /// # Example
5996    /// ```ignore,no_run
5997    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
5998    /// let x = AwsNodeConfig::new().set_tags([
5999    ///     ("key0", "abc"),
6000    ///     ("key1", "xyz"),
6001    /// ]);
6002    /// ```
6003    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
6004    where
6005        T: std::iter::IntoIterator<Item = (K, V)>,
6006        K: std::convert::Into<std::string::String>,
6007        V: std::convert::Into<std::string::String>,
6008    {
6009        use std::iter::Iterator;
6010        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
6011        self
6012    }
6013
6014    /// Sets the value of [iam_instance_profile][crate::model::AwsNodeConfig::iam_instance_profile].
6015    ///
6016    /// # Example
6017    /// ```ignore,no_run
6018    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6019    /// let x = AwsNodeConfig::new().set_iam_instance_profile("example");
6020    /// ```
6021    pub fn set_iam_instance_profile<T: std::convert::Into<std::string::String>>(
6022        mut self,
6023        v: T,
6024    ) -> Self {
6025        self.iam_instance_profile = v.into();
6026        self
6027    }
6028
6029    /// Sets the value of [image_type][crate::model::AwsNodeConfig::image_type].
6030    ///
6031    /// # Example
6032    /// ```ignore,no_run
6033    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6034    /// let x = AwsNodeConfig::new().set_image_type("example");
6035    /// ```
6036    pub fn set_image_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6037        self.image_type = v.into();
6038        self
6039    }
6040
6041    /// Sets the value of [ssh_config][crate::model::AwsNodeConfig::ssh_config].
6042    ///
6043    /// # Example
6044    /// ```ignore,no_run
6045    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6046    /// use google_cloud_gkemulticloud_v1::model::AwsSshConfig;
6047    /// let x = AwsNodeConfig::new().set_ssh_config(AwsSshConfig::default()/* use setters */);
6048    /// ```
6049    pub fn set_ssh_config<T>(mut self, v: T) -> Self
6050    where
6051        T: std::convert::Into<crate::model::AwsSshConfig>,
6052    {
6053        self.ssh_config = std::option::Option::Some(v.into());
6054        self
6055    }
6056
6057    /// Sets or clears the value of [ssh_config][crate::model::AwsNodeConfig::ssh_config].
6058    ///
6059    /// # Example
6060    /// ```ignore,no_run
6061    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6062    /// use google_cloud_gkemulticloud_v1::model::AwsSshConfig;
6063    /// let x = AwsNodeConfig::new().set_or_clear_ssh_config(Some(AwsSshConfig::default()/* use setters */));
6064    /// let x = AwsNodeConfig::new().set_or_clear_ssh_config(None::<AwsSshConfig>);
6065    /// ```
6066    pub fn set_or_clear_ssh_config<T>(mut self, v: std::option::Option<T>) -> Self
6067    where
6068        T: std::convert::Into<crate::model::AwsSshConfig>,
6069    {
6070        self.ssh_config = v.map(|x| x.into());
6071        self
6072    }
6073
6074    /// Sets the value of [security_group_ids][crate::model::AwsNodeConfig::security_group_ids].
6075    ///
6076    /// # Example
6077    /// ```ignore,no_run
6078    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6079    /// let x = AwsNodeConfig::new().set_security_group_ids(["a", "b", "c"]);
6080    /// ```
6081    pub fn set_security_group_ids<T, V>(mut self, v: T) -> Self
6082    where
6083        T: std::iter::IntoIterator<Item = V>,
6084        V: std::convert::Into<std::string::String>,
6085    {
6086        use std::iter::Iterator;
6087        self.security_group_ids = v.into_iter().map(|i| i.into()).collect();
6088        self
6089    }
6090
6091    /// Sets the value of [proxy_config][crate::model::AwsNodeConfig::proxy_config].
6092    ///
6093    /// # Example
6094    /// ```ignore,no_run
6095    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6096    /// use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
6097    /// let x = AwsNodeConfig::new().set_proxy_config(AwsProxyConfig::default()/* use setters */);
6098    /// ```
6099    pub fn set_proxy_config<T>(mut self, v: T) -> Self
6100    where
6101        T: std::convert::Into<crate::model::AwsProxyConfig>,
6102    {
6103        self.proxy_config = std::option::Option::Some(v.into());
6104        self
6105    }
6106
6107    /// Sets or clears the value of [proxy_config][crate::model::AwsNodeConfig::proxy_config].
6108    ///
6109    /// # Example
6110    /// ```ignore,no_run
6111    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6112    /// use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
6113    /// let x = AwsNodeConfig::new().set_or_clear_proxy_config(Some(AwsProxyConfig::default()/* use setters */));
6114    /// let x = AwsNodeConfig::new().set_or_clear_proxy_config(None::<AwsProxyConfig>);
6115    /// ```
6116    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
6117    where
6118        T: std::convert::Into<crate::model::AwsProxyConfig>,
6119    {
6120        self.proxy_config = v.map(|x| x.into());
6121        self
6122    }
6123
6124    /// Sets the value of [config_encryption][crate::model::AwsNodeConfig::config_encryption].
6125    ///
6126    /// # Example
6127    /// ```ignore,no_run
6128    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6129    /// use google_cloud_gkemulticloud_v1::model::AwsConfigEncryption;
6130    /// let x = AwsNodeConfig::new().set_config_encryption(AwsConfigEncryption::default()/* use setters */);
6131    /// ```
6132    pub fn set_config_encryption<T>(mut self, v: T) -> Self
6133    where
6134        T: std::convert::Into<crate::model::AwsConfigEncryption>,
6135    {
6136        self.config_encryption = std::option::Option::Some(v.into());
6137        self
6138    }
6139
6140    /// Sets or clears the value of [config_encryption][crate::model::AwsNodeConfig::config_encryption].
6141    ///
6142    /// # Example
6143    /// ```ignore,no_run
6144    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6145    /// use google_cloud_gkemulticloud_v1::model::AwsConfigEncryption;
6146    /// let x = AwsNodeConfig::new().set_or_clear_config_encryption(Some(AwsConfigEncryption::default()/* use setters */));
6147    /// let x = AwsNodeConfig::new().set_or_clear_config_encryption(None::<AwsConfigEncryption>);
6148    /// ```
6149    pub fn set_or_clear_config_encryption<T>(mut self, v: std::option::Option<T>) -> Self
6150    where
6151        T: std::convert::Into<crate::model::AwsConfigEncryption>,
6152    {
6153        self.config_encryption = v.map(|x| x.into());
6154        self
6155    }
6156
6157    /// Sets the value of [instance_placement][crate::model::AwsNodeConfig::instance_placement].
6158    ///
6159    /// # Example
6160    /// ```ignore,no_run
6161    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6162    /// use google_cloud_gkemulticloud_v1::model::AwsInstancePlacement;
6163    /// let x = AwsNodeConfig::new().set_instance_placement(AwsInstancePlacement::default()/* use setters */);
6164    /// ```
6165    pub fn set_instance_placement<T>(mut self, v: T) -> Self
6166    where
6167        T: std::convert::Into<crate::model::AwsInstancePlacement>,
6168    {
6169        self.instance_placement = std::option::Option::Some(v.into());
6170        self
6171    }
6172
6173    /// Sets or clears the value of [instance_placement][crate::model::AwsNodeConfig::instance_placement].
6174    ///
6175    /// # Example
6176    /// ```ignore,no_run
6177    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6178    /// use google_cloud_gkemulticloud_v1::model::AwsInstancePlacement;
6179    /// let x = AwsNodeConfig::new().set_or_clear_instance_placement(Some(AwsInstancePlacement::default()/* use setters */));
6180    /// let x = AwsNodeConfig::new().set_or_clear_instance_placement(None::<AwsInstancePlacement>);
6181    /// ```
6182    pub fn set_or_clear_instance_placement<T>(mut self, v: std::option::Option<T>) -> Self
6183    where
6184        T: std::convert::Into<crate::model::AwsInstancePlacement>,
6185    {
6186        self.instance_placement = v.map(|x| x.into());
6187        self
6188    }
6189
6190    /// Sets the value of [autoscaling_metrics_collection][crate::model::AwsNodeConfig::autoscaling_metrics_collection].
6191    ///
6192    /// # Example
6193    /// ```ignore,no_run
6194    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6195    /// use google_cloud_gkemulticloud_v1::model::AwsAutoscalingGroupMetricsCollection;
6196    /// let x = AwsNodeConfig::new().set_autoscaling_metrics_collection(AwsAutoscalingGroupMetricsCollection::default()/* use setters */);
6197    /// ```
6198    pub fn set_autoscaling_metrics_collection<T>(mut self, v: T) -> Self
6199    where
6200        T: std::convert::Into<crate::model::AwsAutoscalingGroupMetricsCollection>,
6201    {
6202        self.autoscaling_metrics_collection = std::option::Option::Some(v.into());
6203        self
6204    }
6205
6206    /// Sets or clears the value of [autoscaling_metrics_collection][crate::model::AwsNodeConfig::autoscaling_metrics_collection].
6207    ///
6208    /// # Example
6209    /// ```ignore,no_run
6210    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6211    /// use google_cloud_gkemulticloud_v1::model::AwsAutoscalingGroupMetricsCollection;
6212    /// let x = AwsNodeConfig::new().set_or_clear_autoscaling_metrics_collection(Some(AwsAutoscalingGroupMetricsCollection::default()/* use setters */));
6213    /// let x = AwsNodeConfig::new().set_or_clear_autoscaling_metrics_collection(None::<AwsAutoscalingGroupMetricsCollection>);
6214    /// ```
6215    pub fn set_or_clear_autoscaling_metrics_collection<T>(
6216        mut self,
6217        v: std::option::Option<T>,
6218    ) -> Self
6219    where
6220        T: std::convert::Into<crate::model::AwsAutoscalingGroupMetricsCollection>,
6221    {
6222        self.autoscaling_metrics_collection = v.map(|x| x.into());
6223        self
6224    }
6225
6226    /// Sets the value of [spot_config][crate::model::AwsNodeConfig::spot_config].
6227    ///
6228    /// # Example
6229    /// ```ignore,no_run
6230    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6231    /// use google_cloud_gkemulticloud_v1::model::SpotConfig;
6232    /// let x = AwsNodeConfig::new().set_spot_config(SpotConfig::default()/* use setters */);
6233    /// ```
6234    pub fn set_spot_config<T>(mut self, v: T) -> Self
6235    where
6236        T: std::convert::Into<crate::model::SpotConfig>,
6237    {
6238        self.spot_config = std::option::Option::Some(v.into());
6239        self
6240    }
6241
6242    /// Sets or clears the value of [spot_config][crate::model::AwsNodeConfig::spot_config].
6243    ///
6244    /// # Example
6245    /// ```ignore,no_run
6246    /// # use google_cloud_gkemulticloud_v1::model::AwsNodeConfig;
6247    /// use google_cloud_gkemulticloud_v1::model::SpotConfig;
6248    /// let x = AwsNodeConfig::new().set_or_clear_spot_config(Some(SpotConfig::default()/* use setters */));
6249    /// let x = AwsNodeConfig::new().set_or_clear_spot_config(None::<SpotConfig>);
6250    /// ```
6251    pub fn set_or_clear_spot_config<T>(mut self, v: std::option::Option<T>) -> Self
6252    where
6253        T: std::convert::Into<crate::model::SpotConfig>,
6254    {
6255        self.spot_config = v.map(|x| x.into());
6256        self
6257    }
6258}
6259
6260impl wkt::message::Message for AwsNodeConfig {
6261    fn typename() -> &'static str {
6262        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsNodeConfig"
6263    }
6264}
6265
6266/// AwsNodePoolAutoscaling contains information required by cluster autoscaler
6267/// to adjust the size of the node pool to the current cluster usage.
6268#[derive(Clone, Default, PartialEq)]
6269#[non_exhaustive]
6270#[deprecated]
6271pub struct AwsNodePoolAutoscaling {
6272    /// Required. Minimum number of nodes in the node pool. Must be greater than or
6273    /// equal to 1 and less than or equal to max_node_count.
6274    pub min_node_count: i32,
6275
6276    /// Required. Maximum number of nodes in the node pool. Must be greater than or
6277    /// equal to min_node_count and less than or equal to 50.
6278    pub max_node_count: i32,
6279
6280    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6281}
6282
6283impl AwsNodePoolAutoscaling {
6284    pub fn new() -> Self {
6285        std::default::Default::default()
6286    }
6287
6288    /// Sets the value of [min_node_count][crate::model::AwsNodePoolAutoscaling::min_node_count].
6289    ///
6290    /// # Example
6291    /// ```ignore,no_run
6292    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePoolAutoscaling;
6293    /// let x = AwsNodePoolAutoscaling::new().set_min_node_count(42);
6294    /// ```
6295    pub fn set_min_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
6296        self.min_node_count = v.into();
6297        self
6298    }
6299
6300    /// Sets the value of [max_node_count][crate::model::AwsNodePoolAutoscaling::max_node_count].
6301    ///
6302    /// # Example
6303    /// ```ignore,no_run
6304    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePoolAutoscaling;
6305    /// let x = AwsNodePoolAutoscaling::new().set_max_node_count(42);
6306    /// ```
6307    pub fn set_max_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
6308        self.max_node_count = v.into();
6309        self
6310    }
6311}
6312
6313impl wkt::message::Message for AwsNodePoolAutoscaling {
6314    fn typename() -> &'static str {
6315        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsNodePoolAutoscaling"
6316    }
6317}
6318
6319/// AwsOpenIdConfig is an OIDC discovery document for the cluster.
6320/// See the OpenID Connect Discovery 1.0 specification for details.
6321#[derive(Clone, Default, PartialEq)]
6322#[non_exhaustive]
6323#[deprecated]
6324pub struct AwsOpenIdConfig {
6325    /// OIDC Issuer.
6326    pub issuer: std::string::String,
6327
6328    /// JSON Web Key uri.
6329    pub jwks_uri: std::string::String,
6330
6331    /// Supported response types.
6332    pub response_types_supported: std::vec::Vec<std::string::String>,
6333
6334    /// Supported subject types.
6335    pub subject_types_supported: std::vec::Vec<std::string::String>,
6336
6337    /// supported ID Token signing Algorithms.
6338    pub id_token_signing_alg_values_supported: std::vec::Vec<std::string::String>,
6339
6340    /// Supported claims.
6341    pub claims_supported: std::vec::Vec<std::string::String>,
6342
6343    /// Supported grant types.
6344    pub grant_types: std::vec::Vec<std::string::String>,
6345
6346    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6347}
6348
6349impl AwsOpenIdConfig {
6350    pub fn new() -> Self {
6351        std::default::Default::default()
6352    }
6353
6354    /// Sets the value of [issuer][crate::model::AwsOpenIdConfig::issuer].
6355    ///
6356    /// # Example
6357    /// ```ignore,no_run
6358    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6359    /// let x = AwsOpenIdConfig::new().set_issuer("example");
6360    /// ```
6361    pub fn set_issuer<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6362        self.issuer = v.into();
6363        self
6364    }
6365
6366    /// Sets the value of [jwks_uri][crate::model::AwsOpenIdConfig::jwks_uri].
6367    ///
6368    /// # Example
6369    /// ```ignore,no_run
6370    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6371    /// let x = AwsOpenIdConfig::new().set_jwks_uri("example");
6372    /// ```
6373    pub fn set_jwks_uri<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6374        self.jwks_uri = v.into();
6375        self
6376    }
6377
6378    /// Sets the value of [response_types_supported][crate::model::AwsOpenIdConfig::response_types_supported].
6379    ///
6380    /// # Example
6381    /// ```ignore,no_run
6382    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6383    /// let x = AwsOpenIdConfig::new().set_response_types_supported(["a", "b", "c"]);
6384    /// ```
6385    pub fn set_response_types_supported<T, V>(mut self, v: T) -> Self
6386    where
6387        T: std::iter::IntoIterator<Item = V>,
6388        V: std::convert::Into<std::string::String>,
6389    {
6390        use std::iter::Iterator;
6391        self.response_types_supported = v.into_iter().map(|i| i.into()).collect();
6392        self
6393    }
6394
6395    /// Sets the value of [subject_types_supported][crate::model::AwsOpenIdConfig::subject_types_supported].
6396    ///
6397    /// # Example
6398    /// ```ignore,no_run
6399    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6400    /// let x = AwsOpenIdConfig::new().set_subject_types_supported(["a", "b", "c"]);
6401    /// ```
6402    pub fn set_subject_types_supported<T, V>(mut self, v: T) -> Self
6403    where
6404        T: std::iter::IntoIterator<Item = V>,
6405        V: std::convert::Into<std::string::String>,
6406    {
6407        use std::iter::Iterator;
6408        self.subject_types_supported = v.into_iter().map(|i| i.into()).collect();
6409        self
6410    }
6411
6412    /// Sets the value of [id_token_signing_alg_values_supported][crate::model::AwsOpenIdConfig::id_token_signing_alg_values_supported].
6413    ///
6414    /// # Example
6415    /// ```ignore,no_run
6416    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6417    /// let x = AwsOpenIdConfig::new().set_id_token_signing_alg_values_supported(["a", "b", "c"]);
6418    /// ```
6419    pub fn set_id_token_signing_alg_values_supported<T, V>(mut self, v: T) -> Self
6420    where
6421        T: std::iter::IntoIterator<Item = V>,
6422        V: std::convert::Into<std::string::String>,
6423    {
6424        use std::iter::Iterator;
6425        self.id_token_signing_alg_values_supported = v.into_iter().map(|i| i.into()).collect();
6426        self
6427    }
6428
6429    /// Sets the value of [claims_supported][crate::model::AwsOpenIdConfig::claims_supported].
6430    ///
6431    /// # Example
6432    /// ```ignore,no_run
6433    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6434    /// let x = AwsOpenIdConfig::new().set_claims_supported(["a", "b", "c"]);
6435    /// ```
6436    pub fn set_claims_supported<T, V>(mut self, v: T) -> Self
6437    where
6438        T: std::iter::IntoIterator<Item = V>,
6439        V: std::convert::Into<std::string::String>,
6440    {
6441        use std::iter::Iterator;
6442        self.claims_supported = v.into_iter().map(|i| i.into()).collect();
6443        self
6444    }
6445
6446    /// Sets the value of [grant_types][crate::model::AwsOpenIdConfig::grant_types].
6447    ///
6448    /// # Example
6449    /// ```ignore,no_run
6450    /// # use google_cloud_gkemulticloud_v1::model::AwsOpenIdConfig;
6451    /// let x = AwsOpenIdConfig::new().set_grant_types(["a", "b", "c"]);
6452    /// ```
6453    pub fn set_grant_types<T, V>(mut self, v: T) -> Self
6454    where
6455        T: std::iter::IntoIterator<Item = V>,
6456        V: std::convert::Into<std::string::String>,
6457    {
6458        use std::iter::Iterator;
6459        self.grant_types = v.into_iter().map(|i| i.into()).collect();
6460        self
6461    }
6462}
6463
6464impl wkt::message::Message for AwsOpenIdConfig {
6465    fn typename() -> &'static str {
6466        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsOpenIdConfig"
6467    }
6468}
6469
6470/// AwsJsonWebKeys is a valid JSON Web Key Set as specififed in RFC 7517.
6471#[derive(Clone, Default, PartialEq)]
6472#[non_exhaustive]
6473#[deprecated]
6474pub struct AwsJsonWebKeys {
6475    /// The public component of the keys used by the cluster to sign token
6476    /// requests.
6477    pub keys: std::vec::Vec<crate::model::Jwk>,
6478
6479    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6480}
6481
6482impl AwsJsonWebKeys {
6483    pub fn new() -> Self {
6484        std::default::Default::default()
6485    }
6486
6487    /// Sets the value of [keys][crate::model::AwsJsonWebKeys::keys].
6488    ///
6489    /// # Example
6490    /// ```ignore,no_run
6491    /// # use google_cloud_gkemulticloud_v1::model::AwsJsonWebKeys;
6492    /// use google_cloud_gkemulticloud_v1::model::Jwk;
6493    /// let x = AwsJsonWebKeys::new()
6494    ///     .set_keys([
6495    ///         Jwk::default()/* use setters */,
6496    ///         Jwk::default()/* use (different) setters */,
6497    ///     ]);
6498    /// ```
6499    pub fn set_keys<T, V>(mut self, v: T) -> Self
6500    where
6501        T: std::iter::IntoIterator<Item = V>,
6502        V: std::convert::Into<crate::model::Jwk>,
6503    {
6504        use std::iter::Iterator;
6505        self.keys = v.into_iter().map(|i| i.into()).collect();
6506        self
6507    }
6508}
6509
6510impl wkt::message::Message for AwsJsonWebKeys {
6511    fn typename() -> &'static str {
6512        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsJsonWebKeys"
6513    }
6514}
6515
6516/// AwsServerConfig is the configuration of GKE cluster on AWS.
6517#[derive(Clone, Default, PartialEq)]
6518#[non_exhaustive]
6519#[deprecated]
6520pub struct AwsServerConfig {
6521    /// The resource name of the config.
6522    pub name: std::string::String,
6523
6524    /// List of all released Kubernetes versions, including ones which are end of
6525    /// life and can no longer be used.  Filter by the `enabled`
6526    /// property to limit to currently available versions.
6527    /// Valid versions supported for both create and update operations
6528    pub valid_versions: std::vec::Vec<crate::model::AwsK8sVersionInfo>,
6529
6530    /// The list of supported AWS regions.
6531    pub supported_aws_regions: std::vec::Vec<std::string::String>,
6532
6533    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6534}
6535
6536impl AwsServerConfig {
6537    pub fn new() -> Self {
6538        std::default::Default::default()
6539    }
6540
6541    /// Sets the value of [name][crate::model::AwsServerConfig::name].
6542    ///
6543    /// # Example
6544    /// ```ignore,no_run
6545    /// # use google_cloud_gkemulticloud_v1::model::AwsServerConfig;
6546    /// let x = AwsServerConfig::new().set_name("example");
6547    /// ```
6548    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6549        self.name = v.into();
6550        self
6551    }
6552
6553    /// Sets the value of [valid_versions][crate::model::AwsServerConfig::valid_versions].
6554    ///
6555    /// # Example
6556    /// ```ignore,no_run
6557    /// # use google_cloud_gkemulticloud_v1::model::AwsServerConfig;
6558    /// use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6559    /// let x = AwsServerConfig::new()
6560    ///     .set_valid_versions([
6561    ///         AwsK8sVersionInfo::default()/* use setters */,
6562    ///         AwsK8sVersionInfo::default()/* use (different) setters */,
6563    ///     ]);
6564    /// ```
6565    pub fn set_valid_versions<T, V>(mut self, v: T) -> Self
6566    where
6567        T: std::iter::IntoIterator<Item = V>,
6568        V: std::convert::Into<crate::model::AwsK8sVersionInfo>,
6569    {
6570        use std::iter::Iterator;
6571        self.valid_versions = v.into_iter().map(|i| i.into()).collect();
6572        self
6573    }
6574
6575    /// Sets the value of [supported_aws_regions][crate::model::AwsServerConfig::supported_aws_regions].
6576    ///
6577    /// # Example
6578    /// ```ignore,no_run
6579    /// # use google_cloud_gkemulticloud_v1::model::AwsServerConfig;
6580    /// let x = AwsServerConfig::new().set_supported_aws_regions(["a", "b", "c"]);
6581    /// ```
6582    pub fn set_supported_aws_regions<T, V>(mut self, v: T) -> Self
6583    where
6584        T: std::iter::IntoIterator<Item = V>,
6585        V: std::convert::Into<std::string::String>,
6586    {
6587        use std::iter::Iterator;
6588        self.supported_aws_regions = v.into_iter().map(|i| i.into()).collect();
6589        self
6590    }
6591}
6592
6593impl wkt::message::Message for AwsServerConfig {
6594    fn typename() -> &'static str {
6595        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsServerConfig"
6596    }
6597}
6598
6599/// Kubernetes version information of GKE cluster on AWS.
6600#[derive(Clone, Default, PartialEq)]
6601#[non_exhaustive]
6602#[deprecated]
6603pub struct AwsK8sVersionInfo {
6604    /// Kubernetes version name.
6605    pub version: std::string::String,
6606
6607    /// Optional. True if the version is available for cluster creation. If a
6608    /// version is enabled for creation, it can be used to create new clusters.
6609    /// Otherwise, cluster creation will fail. However, cluster upgrade operations
6610    /// may succeed, even if the version is not enabled.
6611    pub enabled: bool,
6612
6613    /// Optional. True if this cluster version belongs to a minor version that has
6614    /// reached its end of life and is no longer in scope to receive security and
6615    /// bug fixes.
6616    pub end_of_life: bool,
6617
6618    /// Optional. The estimated date (in Pacific Time) when this cluster version
6619    /// will reach its end of life. Or if this version is no longer supported (the
6620    /// `end_of_life` field is true), this is the actual date (in Pacific time)
6621    /// when the version reached its end of life.
6622    pub end_of_life_date: std::option::Option<google_cloud_type::model::Date>,
6623
6624    /// Optional. The date (in Pacific Time) when the cluster version was released.
6625    pub release_date: std::option::Option<google_cloud_type::model::Date>,
6626
6627    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6628}
6629
6630impl AwsK8sVersionInfo {
6631    pub fn new() -> Self {
6632        std::default::Default::default()
6633    }
6634
6635    /// Sets the value of [version][crate::model::AwsK8sVersionInfo::version].
6636    ///
6637    /// # Example
6638    /// ```ignore,no_run
6639    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6640    /// let x = AwsK8sVersionInfo::new().set_version("example");
6641    /// ```
6642    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6643        self.version = v.into();
6644        self
6645    }
6646
6647    /// Sets the value of [enabled][crate::model::AwsK8sVersionInfo::enabled].
6648    ///
6649    /// # Example
6650    /// ```ignore,no_run
6651    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6652    /// let x = AwsK8sVersionInfo::new().set_enabled(true);
6653    /// ```
6654    pub fn set_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
6655        self.enabled = v.into();
6656        self
6657    }
6658
6659    /// Sets the value of [end_of_life][crate::model::AwsK8sVersionInfo::end_of_life].
6660    ///
6661    /// # Example
6662    /// ```ignore,no_run
6663    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6664    /// let x = AwsK8sVersionInfo::new().set_end_of_life(true);
6665    /// ```
6666    pub fn set_end_of_life<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
6667        self.end_of_life = v.into();
6668        self
6669    }
6670
6671    /// Sets the value of [end_of_life_date][crate::model::AwsK8sVersionInfo::end_of_life_date].
6672    ///
6673    /// # Example
6674    /// ```ignore,no_run
6675    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6676    /// use google_cloud_type::model::Date;
6677    /// let x = AwsK8sVersionInfo::new().set_end_of_life_date(Date::default()/* use setters */);
6678    /// ```
6679    pub fn set_end_of_life_date<T>(mut self, v: T) -> Self
6680    where
6681        T: std::convert::Into<google_cloud_type::model::Date>,
6682    {
6683        self.end_of_life_date = std::option::Option::Some(v.into());
6684        self
6685    }
6686
6687    /// Sets or clears the value of [end_of_life_date][crate::model::AwsK8sVersionInfo::end_of_life_date].
6688    ///
6689    /// # Example
6690    /// ```ignore,no_run
6691    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6692    /// use google_cloud_type::model::Date;
6693    /// let x = AwsK8sVersionInfo::new().set_or_clear_end_of_life_date(Some(Date::default()/* use setters */));
6694    /// let x = AwsK8sVersionInfo::new().set_or_clear_end_of_life_date(None::<Date>);
6695    /// ```
6696    pub fn set_or_clear_end_of_life_date<T>(mut self, v: std::option::Option<T>) -> Self
6697    where
6698        T: std::convert::Into<google_cloud_type::model::Date>,
6699    {
6700        self.end_of_life_date = v.map(|x| x.into());
6701        self
6702    }
6703
6704    /// Sets the value of [release_date][crate::model::AwsK8sVersionInfo::release_date].
6705    ///
6706    /// # Example
6707    /// ```ignore,no_run
6708    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6709    /// use google_cloud_type::model::Date;
6710    /// let x = AwsK8sVersionInfo::new().set_release_date(Date::default()/* use setters */);
6711    /// ```
6712    pub fn set_release_date<T>(mut self, v: T) -> Self
6713    where
6714        T: std::convert::Into<google_cloud_type::model::Date>,
6715    {
6716        self.release_date = std::option::Option::Some(v.into());
6717        self
6718    }
6719
6720    /// Sets or clears the value of [release_date][crate::model::AwsK8sVersionInfo::release_date].
6721    ///
6722    /// # Example
6723    /// ```ignore,no_run
6724    /// # use google_cloud_gkemulticloud_v1::model::AwsK8sVersionInfo;
6725    /// use google_cloud_type::model::Date;
6726    /// let x = AwsK8sVersionInfo::new().set_or_clear_release_date(Some(Date::default()/* use setters */));
6727    /// let x = AwsK8sVersionInfo::new().set_or_clear_release_date(None::<Date>);
6728    /// ```
6729    pub fn set_or_clear_release_date<T>(mut self, v: std::option::Option<T>) -> Self
6730    where
6731        T: std::convert::Into<google_cloud_type::model::Date>,
6732    {
6733        self.release_date = v.map(|x| x.into());
6734        self
6735    }
6736}
6737
6738impl wkt::message::Message for AwsK8sVersionInfo {
6739    fn typename() -> &'static str {
6740        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsK8sVersionInfo"
6741    }
6742}
6743
6744/// SSH configuration for AWS resources.
6745#[derive(Clone, Default, PartialEq)]
6746#[non_exhaustive]
6747#[deprecated]
6748pub struct AwsSshConfig {
6749    /// Required. The name of the EC2 key pair used to login into cluster machines.
6750    pub ec2_key_pair: std::string::String,
6751
6752    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6753}
6754
6755impl AwsSshConfig {
6756    pub fn new() -> Self {
6757        std::default::Default::default()
6758    }
6759
6760    /// Sets the value of [ec2_key_pair][crate::model::AwsSshConfig::ec2_key_pair].
6761    ///
6762    /// # Example
6763    /// ```ignore,no_run
6764    /// # use google_cloud_gkemulticloud_v1::model::AwsSshConfig;
6765    /// let x = AwsSshConfig::new().set_ec2_key_pair("example");
6766    /// ```
6767    pub fn set_ec2_key_pair<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6768        self.ec2_key_pair = v.into();
6769        self
6770    }
6771}
6772
6773impl wkt::message::Message for AwsSshConfig {
6774    fn typename() -> &'static str {
6775        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsSshConfig"
6776    }
6777}
6778
6779/// Details of a proxy config stored in AWS Secret Manager.
6780#[derive(Clone, Default, PartialEq)]
6781#[non_exhaustive]
6782#[deprecated]
6783pub struct AwsProxyConfig {
6784    /// The ARN of the AWS Secret Manager secret that contains the HTTP(S) proxy
6785    /// configuration.
6786    ///
6787    /// The secret must be a JSON encoded proxy configuration
6788    /// as described in
6789    /// <https://cloud.google.com/kubernetes-engine/multi-cloud/docs/aws/how-to/use-a-proxy#create_a_proxy_configuration_file>
6790    pub secret_arn: std::string::String,
6791
6792    /// The version string of the AWS Secret Manager secret that contains the
6793    /// HTTP(S) proxy configuration.
6794    pub secret_version: std::string::String,
6795
6796    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6797}
6798
6799impl AwsProxyConfig {
6800    pub fn new() -> Self {
6801        std::default::Default::default()
6802    }
6803
6804    /// Sets the value of [secret_arn][crate::model::AwsProxyConfig::secret_arn].
6805    ///
6806    /// # Example
6807    /// ```ignore,no_run
6808    /// # use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
6809    /// let x = AwsProxyConfig::new().set_secret_arn("example");
6810    /// ```
6811    pub fn set_secret_arn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6812        self.secret_arn = v.into();
6813        self
6814    }
6815
6816    /// Sets the value of [secret_version][crate::model::AwsProxyConfig::secret_version].
6817    ///
6818    /// # Example
6819    /// ```ignore,no_run
6820    /// # use google_cloud_gkemulticloud_v1::model::AwsProxyConfig;
6821    /// let x = AwsProxyConfig::new().set_secret_version("example");
6822    /// ```
6823    pub fn set_secret_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6824        self.secret_version = v.into();
6825        self
6826    }
6827}
6828
6829impl wkt::message::Message for AwsProxyConfig {
6830    fn typename() -> &'static str {
6831        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsProxyConfig"
6832    }
6833}
6834
6835/// Config encryption for user data.
6836#[derive(Clone, Default, PartialEq)]
6837#[non_exhaustive]
6838#[deprecated]
6839pub struct AwsConfigEncryption {
6840    /// Required. The ARN of the AWS KMS key used to encrypt user data.
6841    pub kms_key_arn: std::string::String,
6842
6843    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6844}
6845
6846impl AwsConfigEncryption {
6847    pub fn new() -> Self {
6848        std::default::Default::default()
6849    }
6850
6851    /// Sets the value of [kms_key_arn][crate::model::AwsConfigEncryption::kms_key_arn].
6852    ///
6853    /// # Example
6854    /// ```ignore,no_run
6855    /// # use google_cloud_gkemulticloud_v1::model::AwsConfigEncryption;
6856    /// let x = AwsConfigEncryption::new().set_kms_key_arn("example");
6857    /// ```
6858    pub fn set_kms_key_arn<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
6859        self.kms_key_arn = v.into();
6860        self
6861    }
6862}
6863
6864impl wkt::message::Message for AwsConfigEncryption {
6865    fn typename() -> &'static str {
6866        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsConfigEncryption"
6867    }
6868}
6869
6870/// Details of placement information for an instance.
6871/// Limitations for using the `host` tenancy:
6872///
6873/// * T3 instances that use the unlimited CPU credit option don't support host
6874///   tenancy.
6875#[derive(Clone, Default, PartialEq)]
6876#[non_exhaustive]
6877#[deprecated]
6878pub struct AwsInstancePlacement {
6879    /// Required. The tenancy for instance.
6880    pub tenancy: crate::model::aws_instance_placement::Tenancy,
6881
6882    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
6883}
6884
6885impl AwsInstancePlacement {
6886    pub fn new() -> Self {
6887        std::default::Default::default()
6888    }
6889
6890    /// Sets the value of [tenancy][crate::model::AwsInstancePlacement::tenancy].
6891    ///
6892    /// # Example
6893    /// ```ignore,no_run
6894    /// # use google_cloud_gkemulticloud_v1::model::AwsInstancePlacement;
6895    /// use google_cloud_gkemulticloud_v1::model::aws_instance_placement::Tenancy;
6896    /// let x0 = AwsInstancePlacement::new().set_tenancy(Tenancy::Default);
6897    /// let x1 = AwsInstancePlacement::new().set_tenancy(Tenancy::Dedicated);
6898    /// let x2 = AwsInstancePlacement::new().set_tenancy(Tenancy::Host);
6899    /// ```
6900    pub fn set_tenancy<T: std::convert::Into<crate::model::aws_instance_placement::Tenancy>>(
6901        mut self,
6902        v: T,
6903    ) -> Self {
6904        self.tenancy = v.into();
6905        self
6906    }
6907}
6908
6909impl wkt::message::Message for AwsInstancePlacement {
6910    fn typename() -> &'static str {
6911        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsInstancePlacement"
6912    }
6913}
6914
6915/// Defines additional types related to [AwsInstancePlacement].
6916pub mod aws_instance_placement {
6917    #[allow(unused_imports)]
6918    use super::*;
6919
6920    /// Tenancy defines how EC2 instances are distributed across physical hardware.
6921    ///
6922    /// # Working with unknown values
6923    ///
6924    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
6925    /// additional enum variants at any time. Adding new variants is not considered
6926    /// a breaking change. Applications should write their code in anticipation of:
6927    ///
6928    /// - New values appearing in future releases of the client library, **and**
6929    /// - New values received dynamically, without application changes.
6930    ///
6931    /// Please consult the [Working with enums] section in the user guide for some
6932    /// guidelines.
6933    ///
6934    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
6935    #[derive(Clone, Debug, PartialEq)]
6936    #[non_exhaustive]
6937    pub enum Tenancy {
6938        /// Not set.
6939        Unspecified,
6940        /// Use default VPC tenancy.
6941        Default,
6942        /// Run a dedicated instance.
6943        Dedicated,
6944        /// Launch this instance to a dedicated host.
6945        Host,
6946        /// If set, the enum was initialized with an unknown value.
6947        ///
6948        /// Applications can examine the value using [Tenancy::value] or
6949        /// [Tenancy::name].
6950        UnknownValue(tenancy::UnknownValue),
6951    }
6952
6953    #[doc(hidden)]
6954    pub mod tenancy {
6955        #[allow(unused_imports)]
6956        use super::*;
6957        #[derive(Clone, Debug, PartialEq)]
6958        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
6959    }
6960
6961    impl Tenancy {
6962        /// Gets the enum value.
6963        ///
6964        /// Returns `None` if the enum contains an unknown value deserialized from
6965        /// the string representation of enums.
6966        pub fn value(&self) -> std::option::Option<i32> {
6967            match self {
6968                Self::Unspecified => std::option::Option::Some(0),
6969                Self::Default => std::option::Option::Some(1),
6970                Self::Dedicated => std::option::Option::Some(2),
6971                Self::Host => std::option::Option::Some(3),
6972                Self::UnknownValue(u) => u.0.value(),
6973            }
6974        }
6975
6976        /// Gets the enum value as a string.
6977        ///
6978        /// Returns `None` if the enum contains an unknown value deserialized from
6979        /// the integer representation of enums.
6980        pub fn name(&self) -> std::option::Option<&str> {
6981            match self {
6982                Self::Unspecified => std::option::Option::Some("TENANCY_UNSPECIFIED"),
6983                Self::Default => std::option::Option::Some("DEFAULT"),
6984                Self::Dedicated => std::option::Option::Some("DEDICATED"),
6985                Self::Host => std::option::Option::Some("HOST"),
6986                Self::UnknownValue(u) => u.0.name(),
6987            }
6988        }
6989    }
6990
6991    impl std::default::Default for Tenancy {
6992        fn default() -> Self {
6993            use std::convert::From;
6994            Self::from(0)
6995        }
6996    }
6997
6998    impl std::fmt::Display for Tenancy {
6999        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
7000            wkt::internal::display_enum(f, self.name(), self.value())
7001        }
7002    }
7003
7004    impl std::convert::From<i32> for Tenancy {
7005        fn from(value: i32) -> Self {
7006            match value {
7007                0 => Self::Unspecified,
7008                1 => Self::Default,
7009                2 => Self::Dedicated,
7010                3 => Self::Host,
7011                _ => Self::UnknownValue(tenancy::UnknownValue(
7012                    wkt::internal::UnknownEnumValue::Integer(value),
7013                )),
7014            }
7015        }
7016    }
7017
7018    impl std::convert::From<&str> for Tenancy {
7019        fn from(value: &str) -> Self {
7020            use std::string::ToString;
7021            match value {
7022                "TENANCY_UNSPECIFIED" => Self::Unspecified,
7023                "DEFAULT" => Self::Default,
7024                "DEDICATED" => Self::Dedicated,
7025                "HOST" => Self::Host,
7026                _ => Self::UnknownValue(tenancy::UnknownValue(
7027                    wkt::internal::UnknownEnumValue::String(value.to_string()),
7028                )),
7029            }
7030        }
7031    }
7032
7033    impl serde::ser::Serialize for Tenancy {
7034        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7035        where
7036            S: serde::Serializer,
7037        {
7038            match self {
7039                Self::Unspecified => serializer.serialize_i32(0),
7040                Self::Default => serializer.serialize_i32(1),
7041                Self::Dedicated => serializer.serialize_i32(2),
7042                Self::Host => serializer.serialize_i32(3),
7043                Self::UnknownValue(u) => u.0.serialize(serializer),
7044            }
7045        }
7046    }
7047
7048    impl<'de> serde::de::Deserialize<'de> for Tenancy {
7049        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7050        where
7051            D: serde::Deserializer<'de>,
7052        {
7053            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Tenancy>::new(
7054                ".google.cloud.gkemulticloud.v1.AwsInstancePlacement.Tenancy",
7055            ))
7056        }
7057    }
7058}
7059
7060/// Configuration related to CloudWatch metrics collection in an AWS
7061/// Auto Scaling group.
7062#[derive(Clone, Default, PartialEq)]
7063#[non_exhaustive]
7064#[deprecated]
7065pub struct AwsAutoscalingGroupMetricsCollection {
7066    /// Required. The frequency at which EC2 Auto Scaling sends aggregated data to
7067    /// AWS CloudWatch. The only valid value is "1Minute".
7068    pub granularity: std::string::String,
7069
7070    /// Optional. The metrics to enable. For a list of valid metrics, see
7071    /// <https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_EnableMetricsCollection.html>.
7072    /// If you specify Granularity and don't specify any metrics, all metrics are
7073    /// enabled.
7074    pub metrics: std::vec::Vec<std::string::String>,
7075
7076    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7077}
7078
7079impl AwsAutoscalingGroupMetricsCollection {
7080    pub fn new() -> Self {
7081        std::default::Default::default()
7082    }
7083
7084    /// Sets the value of [granularity][crate::model::AwsAutoscalingGroupMetricsCollection::granularity].
7085    ///
7086    /// # Example
7087    /// ```ignore,no_run
7088    /// # use google_cloud_gkemulticloud_v1::model::AwsAutoscalingGroupMetricsCollection;
7089    /// let x = AwsAutoscalingGroupMetricsCollection::new().set_granularity("example");
7090    /// ```
7091    pub fn set_granularity<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7092        self.granularity = v.into();
7093        self
7094    }
7095
7096    /// Sets the value of [metrics][crate::model::AwsAutoscalingGroupMetricsCollection::metrics].
7097    ///
7098    /// # Example
7099    /// ```ignore,no_run
7100    /// # use google_cloud_gkemulticloud_v1::model::AwsAutoscalingGroupMetricsCollection;
7101    /// let x = AwsAutoscalingGroupMetricsCollection::new().set_metrics(["a", "b", "c"]);
7102    /// ```
7103    pub fn set_metrics<T, V>(mut self, v: T) -> Self
7104    where
7105        T: std::iter::IntoIterator<Item = V>,
7106        V: std::convert::Into<std::string::String>,
7107    {
7108        use std::iter::Iterator;
7109        self.metrics = v.into_iter().map(|i| i.into()).collect();
7110        self
7111    }
7112}
7113
7114impl wkt::message::Message for AwsAutoscalingGroupMetricsCollection {
7115    fn typename() -> &'static str {
7116        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsAutoscalingGroupMetricsCollection"
7117    }
7118}
7119
7120/// SpotConfig has configuration info for Spot node.
7121#[derive(Clone, Default, PartialEq)]
7122#[non_exhaustive]
7123#[deprecated]
7124pub struct SpotConfig {
7125    /// Required. A list of instance types for creating spot node pool.
7126    pub instance_types: std::vec::Vec<std::string::String>,
7127
7128    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7129}
7130
7131impl SpotConfig {
7132    pub fn new() -> Self {
7133        std::default::Default::default()
7134    }
7135
7136    /// Sets the value of [instance_types][crate::model::SpotConfig::instance_types].
7137    ///
7138    /// # Example
7139    /// ```ignore,no_run
7140    /// # use google_cloud_gkemulticloud_v1::model::SpotConfig;
7141    /// let x = SpotConfig::new().set_instance_types(["a", "b", "c"]);
7142    /// ```
7143    pub fn set_instance_types<T, V>(mut self, v: T) -> Self
7144    where
7145        T: std::iter::IntoIterator<Item = V>,
7146        V: std::convert::Into<std::string::String>,
7147    {
7148        use std::iter::Iterator;
7149        self.instance_types = v.into_iter().map(|i| i.into()).collect();
7150        self
7151    }
7152}
7153
7154impl wkt::message::Message for SpotConfig {
7155    fn typename() -> &'static str {
7156        "type.googleapis.com/google.cloud.gkemulticloud.v1.SpotConfig"
7157    }
7158}
7159
7160/// AwsClusterError describes errors found on AWS clusters.
7161#[derive(Clone, Default, PartialEq)]
7162#[non_exhaustive]
7163#[deprecated]
7164pub struct AwsClusterError {
7165    /// Human-friendly description of the error.
7166    pub message: std::string::String,
7167
7168    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7169}
7170
7171impl AwsClusterError {
7172    pub fn new() -> Self {
7173        std::default::Default::default()
7174    }
7175
7176    /// Sets the value of [message][crate::model::AwsClusterError::message].
7177    ///
7178    /// # Example
7179    /// ```ignore,no_run
7180    /// # use google_cloud_gkemulticloud_v1::model::AwsClusterError;
7181    /// let x = AwsClusterError::new().set_message("example");
7182    /// ```
7183    pub fn set_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7184        self.message = v.into();
7185        self
7186    }
7187}
7188
7189impl wkt::message::Message for AwsClusterError {
7190    fn typename() -> &'static str {
7191        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsClusterError"
7192    }
7193}
7194
7195/// AwsNodePoolError describes errors found on AWS node pools.
7196#[derive(Clone, Default, PartialEq)]
7197#[non_exhaustive]
7198#[deprecated]
7199pub struct AwsNodePoolError {
7200    /// Human-friendly description of the error.
7201    pub message: std::string::String,
7202
7203    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7204}
7205
7206impl AwsNodePoolError {
7207    pub fn new() -> Self {
7208        std::default::Default::default()
7209    }
7210
7211    /// Sets the value of [message][crate::model::AwsNodePoolError::message].
7212    ///
7213    /// # Example
7214    /// ```ignore,no_run
7215    /// # use google_cloud_gkemulticloud_v1::model::AwsNodePoolError;
7216    /// let x = AwsNodePoolError::new().set_message("example");
7217    /// ```
7218    pub fn set_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7219        self.message = v.into();
7220        self
7221    }
7222}
7223
7224impl wkt::message::Message for AwsNodePoolError {
7225    fn typename() -> &'static str {
7226        "type.googleapis.com/google.cloud.gkemulticloud.v1.AwsNodePoolError"
7227    }
7228}
7229
7230/// Request message for `AwsClusters.CreateAwsCluster` method.
7231#[derive(Clone, Default, PartialEq)]
7232#[non_exhaustive]
7233#[deprecated]
7234pub struct CreateAwsClusterRequest {
7235    /// Required. The parent location where this
7236    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource will be
7237    /// created.
7238    ///
7239    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
7240    ///
7241    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
7242    /// for more details on Google Cloud resource names.
7243    ///
7244    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7245    pub parent: std::string::String,
7246
7247    /// Required. The specification of the
7248    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] to create.
7249    ///
7250    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7251    pub aws_cluster: std::option::Option<crate::model::AwsCluster>,
7252
7253    /// Required. A client provided ID the resource. Must be unique within the
7254    /// parent resource.
7255    ///
7256    /// The provided ID will be part of the
7257    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource name
7258    /// formatted as
7259    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
7260    ///
7261    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
7262    ///
7263    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7264    pub aws_cluster_id: std::string::String,
7265
7266    /// If set, only validate the request, but do not actually create the cluster.
7267    pub validate_only: bool,
7268
7269    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7270}
7271
7272impl CreateAwsClusterRequest {
7273    pub fn new() -> Self {
7274        std::default::Default::default()
7275    }
7276
7277    /// Sets the value of [parent][crate::model::CreateAwsClusterRequest::parent].
7278    ///
7279    /// # Example
7280    /// ```ignore,no_run
7281    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsClusterRequest;
7282    /// let x = CreateAwsClusterRequest::new().set_parent("example");
7283    /// ```
7284    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7285        self.parent = v.into();
7286        self
7287    }
7288
7289    /// Sets the value of [aws_cluster][crate::model::CreateAwsClusterRequest::aws_cluster].
7290    ///
7291    /// # Example
7292    /// ```ignore,no_run
7293    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsClusterRequest;
7294    /// use google_cloud_gkemulticloud_v1::model::AwsCluster;
7295    /// let x = CreateAwsClusterRequest::new().set_aws_cluster(AwsCluster::default()/* use setters */);
7296    /// ```
7297    pub fn set_aws_cluster<T>(mut self, v: T) -> Self
7298    where
7299        T: std::convert::Into<crate::model::AwsCluster>,
7300    {
7301        self.aws_cluster = std::option::Option::Some(v.into());
7302        self
7303    }
7304
7305    /// Sets or clears the value of [aws_cluster][crate::model::CreateAwsClusterRequest::aws_cluster].
7306    ///
7307    /// # Example
7308    /// ```ignore,no_run
7309    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsClusterRequest;
7310    /// use google_cloud_gkemulticloud_v1::model::AwsCluster;
7311    /// let x = CreateAwsClusterRequest::new().set_or_clear_aws_cluster(Some(AwsCluster::default()/* use setters */));
7312    /// let x = CreateAwsClusterRequest::new().set_or_clear_aws_cluster(None::<AwsCluster>);
7313    /// ```
7314    pub fn set_or_clear_aws_cluster<T>(mut self, v: std::option::Option<T>) -> Self
7315    where
7316        T: std::convert::Into<crate::model::AwsCluster>,
7317    {
7318        self.aws_cluster = v.map(|x| x.into());
7319        self
7320    }
7321
7322    /// Sets the value of [aws_cluster_id][crate::model::CreateAwsClusterRequest::aws_cluster_id].
7323    ///
7324    /// # Example
7325    /// ```ignore,no_run
7326    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsClusterRequest;
7327    /// let x = CreateAwsClusterRequest::new().set_aws_cluster_id("example");
7328    /// ```
7329    pub fn set_aws_cluster_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7330        self.aws_cluster_id = v.into();
7331        self
7332    }
7333
7334    /// Sets the value of [validate_only][crate::model::CreateAwsClusterRequest::validate_only].
7335    ///
7336    /// # Example
7337    /// ```ignore,no_run
7338    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsClusterRequest;
7339    /// let x = CreateAwsClusterRequest::new().set_validate_only(true);
7340    /// ```
7341    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7342        self.validate_only = v.into();
7343        self
7344    }
7345}
7346
7347impl wkt::message::Message for CreateAwsClusterRequest {
7348    fn typename() -> &'static str {
7349        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAwsClusterRequest"
7350    }
7351}
7352
7353/// Request message for `AwsClusters.UpdateAwsCluster` method.
7354#[derive(Clone, Default, PartialEq)]
7355#[non_exhaustive]
7356#[deprecated]
7357pub struct UpdateAwsClusterRequest {
7358    /// Required. The [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster]
7359    /// resource to update.
7360    ///
7361    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7362    pub aws_cluster: std::option::Option<crate::model::AwsCluster>,
7363
7364    /// If set, only validate the request, but do not actually update the cluster.
7365    pub validate_only: bool,
7366
7367    /// Required. Mask of fields to update. At least one path must be supplied in
7368    /// this field. The elements of the repeated paths field can only include these
7369    /// fields from [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster]:
7370    ///
7371    /// * `description`.
7372    /// * `annotations`.
7373    /// * `control_plane.version`.
7374    /// * `authorization.admin_users`.
7375    /// * `authorization.admin_groups`.
7376    /// * `binary_authorization.evaluation_mode`.
7377    /// * `control_plane.aws_services_authentication.role_arn`.
7378    /// * `control_plane.aws_services_authentication.role_session_name`.
7379    /// * `control_plane.config_encryption.kms_key_arn`.
7380    /// * `control_plane.instance_type`.
7381    /// * `control_plane.security_group_ids`.
7382    /// * `control_plane.proxy_config`.
7383    /// * `control_plane.proxy_config.secret_arn`.
7384    /// * `control_plane.proxy_config.secret_version`.
7385    /// * `control_plane.root_volume.size_gib`.
7386    /// * `control_plane.root_volume.volume_type`.
7387    /// * `control_plane.root_volume.iops`.
7388    /// * `control_plane.root_volume.throughput`.
7389    /// * `control_plane.root_volume.kms_key_arn`.
7390    /// * `control_plane.ssh_config`.
7391    /// * `control_plane.ssh_config.ec2_key_pair`.
7392    /// * `control_plane.instance_placement.tenancy`.
7393    /// * `control_plane.iam_instance_profile`.
7394    /// * `logging_config.component_config.enable_components`.
7395    /// * `control_plane.tags`.
7396    /// * `monitoring_config.managed_prometheus_config.enabled`.
7397    /// * `networking.per_node_pool_sg_rules_disabled`.
7398    ///
7399    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7400    pub update_mask: std::option::Option<wkt::FieldMask>,
7401
7402    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7403}
7404
7405impl UpdateAwsClusterRequest {
7406    pub fn new() -> Self {
7407        std::default::Default::default()
7408    }
7409
7410    /// Sets the value of [aws_cluster][crate::model::UpdateAwsClusterRequest::aws_cluster].
7411    ///
7412    /// # Example
7413    /// ```ignore,no_run
7414    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsClusterRequest;
7415    /// use google_cloud_gkemulticloud_v1::model::AwsCluster;
7416    /// let x = UpdateAwsClusterRequest::new().set_aws_cluster(AwsCluster::default()/* use setters */);
7417    /// ```
7418    pub fn set_aws_cluster<T>(mut self, v: T) -> Self
7419    where
7420        T: std::convert::Into<crate::model::AwsCluster>,
7421    {
7422        self.aws_cluster = std::option::Option::Some(v.into());
7423        self
7424    }
7425
7426    /// Sets or clears the value of [aws_cluster][crate::model::UpdateAwsClusterRequest::aws_cluster].
7427    ///
7428    /// # Example
7429    /// ```ignore,no_run
7430    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsClusterRequest;
7431    /// use google_cloud_gkemulticloud_v1::model::AwsCluster;
7432    /// let x = UpdateAwsClusterRequest::new().set_or_clear_aws_cluster(Some(AwsCluster::default()/* use setters */));
7433    /// let x = UpdateAwsClusterRequest::new().set_or_clear_aws_cluster(None::<AwsCluster>);
7434    /// ```
7435    pub fn set_or_clear_aws_cluster<T>(mut self, v: std::option::Option<T>) -> Self
7436    where
7437        T: std::convert::Into<crate::model::AwsCluster>,
7438    {
7439        self.aws_cluster = v.map(|x| x.into());
7440        self
7441    }
7442
7443    /// Sets the value of [validate_only][crate::model::UpdateAwsClusterRequest::validate_only].
7444    ///
7445    /// # Example
7446    /// ```ignore,no_run
7447    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsClusterRequest;
7448    /// let x = UpdateAwsClusterRequest::new().set_validate_only(true);
7449    /// ```
7450    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7451        self.validate_only = v.into();
7452        self
7453    }
7454
7455    /// Sets the value of [update_mask][crate::model::UpdateAwsClusterRequest::update_mask].
7456    ///
7457    /// # Example
7458    /// ```ignore,no_run
7459    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsClusterRequest;
7460    /// use wkt::FieldMask;
7461    /// let x = UpdateAwsClusterRequest::new().set_update_mask(FieldMask::default()/* use setters */);
7462    /// ```
7463    pub fn set_update_mask<T>(mut self, v: T) -> Self
7464    where
7465        T: std::convert::Into<wkt::FieldMask>,
7466    {
7467        self.update_mask = std::option::Option::Some(v.into());
7468        self
7469    }
7470
7471    /// Sets or clears the value of [update_mask][crate::model::UpdateAwsClusterRequest::update_mask].
7472    ///
7473    /// # Example
7474    /// ```ignore,no_run
7475    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsClusterRequest;
7476    /// use wkt::FieldMask;
7477    /// let x = UpdateAwsClusterRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
7478    /// let x = UpdateAwsClusterRequest::new().set_or_clear_update_mask(None::<FieldMask>);
7479    /// ```
7480    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
7481    where
7482        T: std::convert::Into<wkt::FieldMask>,
7483    {
7484        self.update_mask = v.map(|x| x.into());
7485        self
7486    }
7487}
7488
7489impl wkt::message::Message for UpdateAwsClusterRequest {
7490    fn typename() -> &'static str {
7491        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateAwsClusterRequest"
7492    }
7493}
7494
7495/// Request message for `AwsClusters.GetAwsCluster` method.
7496#[derive(Clone, Default, PartialEq)]
7497#[non_exhaustive]
7498#[deprecated]
7499pub struct GetAwsClusterRequest {
7500    /// Required. The name of the
7501    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource to
7502    /// describe.
7503    ///
7504    /// `AwsCluster` names are formatted as
7505    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
7506    ///
7507    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
7508    /// for more details on Google Cloud Platform resource names.
7509    ///
7510    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7511    pub name: std::string::String,
7512
7513    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7514}
7515
7516impl GetAwsClusterRequest {
7517    pub fn new() -> Self {
7518        std::default::Default::default()
7519    }
7520
7521    /// Sets the value of [name][crate::model::GetAwsClusterRequest::name].
7522    ///
7523    /// # Example
7524    /// ```ignore,no_run
7525    /// # use google_cloud_gkemulticloud_v1::model::GetAwsClusterRequest;
7526    /// let x = GetAwsClusterRequest::new().set_name("example");
7527    /// ```
7528    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7529        self.name = v.into();
7530        self
7531    }
7532}
7533
7534impl wkt::message::Message for GetAwsClusterRequest {
7535    fn typename() -> &'static str {
7536        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAwsClusterRequest"
7537    }
7538}
7539
7540/// Request message for `AwsClusters.ListAwsClusters` method.
7541#[derive(Clone, Default, PartialEq)]
7542#[non_exhaustive]
7543#[deprecated]
7544pub struct ListAwsClustersRequest {
7545    /// Required. The parent location which owns this collection of
7546    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resources.
7547    ///
7548    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
7549    ///
7550    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
7551    /// for more details on Google Cloud Platform resource names.
7552    ///
7553    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7554    pub parent: std::string::String,
7555
7556    /// The maximum number of items to return.
7557    ///
7558    /// If not specified, a default value of 50 will be used by the service.
7559    /// Regardless of the pageSize value, the response can include a partial list
7560    /// and a caller should only rely on response's
7561    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAwsClustersResponse.next_page_token]
7562    /// to determine if there are more instances left to be queried.
7563    ///
7564    /// [google.cloud.gkemulticloud.v1.ListAwsClustersResponse.next_page_token]: crate::model::ListAwsClustersResponse::next_page_token
7565    pub page_size: i32,
7566
7567    /// The `nextPageToken` value returned from a previous
7568    /// [awsClusters.list][google.cloud.gkemulticloud.v1.AwsClusters.ListAwsClusters]
7569    /// request, if any.
7570    ///
7571    /// [google.cloud.gkemulticloud.v1.AwsClusters.ListAwsClusters]: crate::client::AwsClusters::list_aws_clusters
7572    pub page_token: std::string::String,
7573
7574    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7575}
7576
7577impl ListAwsClustersRequest {
7578    pub fn new() -> Self {
7579        std::default::Default::default()
7580    }
7581
7582    /// Sets the value of [parent][crate::model::ListAwsClustersRequest::parent].
7583    ///
7584    /// # Example
7585    /// ```ignore,no_run
7586    /// # use google_cloud_gkemulticloud_v1::model::ListAwsClustersRequest;
7587    /// let x = ListAwsClustersRequest::new().set_parent("example");
7588    /// ```
7589    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7590        self.parent = v.into();
7591        self
7592    }
7593
7594    /// Sets the value of [page_size][crate::model::ListAwsClustersRequest::page_size].
7595    ///
7596    /// # Example
7597    /// ```ignore,no_run
7598    /// # use google_cloud_gkemulticloud_v1::model::ListAwsClustersRequest;
7599    /// let x = ListAwsClustersRequest::new().set_page_size(42);
7600    /// ```
7601    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
7602        self.page_size = v.into();
7603        self
7604    }
7605
7606    /// Sets the value of [page_token][crate::model::ListAwsClustersRequest::page_token].
7607    ///
7608    /// # Example
7609    /// ```ignore,no_run
7610    /// # use google_cloud_gkemulticloud_v1::model::ListAwsClustersRequest;
7611    /// let x = ListAwsClustersRequest::new().set_page_token("example");
7612    /// ```
7613    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7614        self.page_token = v.into();
7615        self
7616    }
7617}
7618
7619impl wkt::message::Message for ListAwsClustersRequest {
7620    fn typename() -> &'static str {
7621        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAwsClustersRequest"
7622    }
7623}
7624
7625/// Response message for `AwsClusters.ListAwsClusters` method.
7626#[derive(Clone, Default, PartialEq)]
7627#[non_exhaustive]
7628#[deprecated]
7629pub struct ListAwsClustersResponse {
7630    /// A list of [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resources
7631    /// in the specified Google Cloud Platform project and region region.
7632    ///
7633    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7634    pub aws_clusters: std::vec::Vec<crate::model::AwsCluster>,
7635
7636    /// Token to retrieve the next page of results, or empty if there are no more
7637    /// results in the list.
7638    pub next_page_token: std::string::String,
7639
7640    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7641}
7642
7643impl ListAwsClustersResponse {
7644    pub fn new() -> Self {
7645        std::default::Default::default()
7646    }
7647
7648    /// Sets the value of [aws_clusters][crate::model::ListAwsClustersResponse::aws_clusters].
7649    ///
7650    /// # Example
7651    /// ```ignore,no_run
7652    /// # use google_cloud_gkemulticloud_v1::model::ListAwsClustersResponse;
7653    /// use google_cloud_gkemulticloud_v1::model::AwsCluster;
7654    /// let x = ListAwsClustersResponse::new()
7655    ///     .set_aws_clusters([
7656    ///         AwsCluster::default()/* use setters */,
7657    ///         AwsCluster::default()/* use (different) setters */,
7658    ///     ]);
7659    /// ```
7660    pub fn set_aws_clusters<T, V>(mut self, v: T) -> Self
7661    where
7662        T: std::iter::IntoIterator<Item = V>,
7663        V: std::convert::Into<crate::model::AwsCluster>,
7664    {
7665        use std::iter::Iterator;
7666        self.aws_clusters = v.into_iter().map(|i| i.into()).collect();
7667        self
7668    }
7669
7670    /// Sets the value of [next_page_token][crate::model::ListAwsClustersResponse::next_page_token].
7671    ///
7672    /// # Example
7673    /// ```ignore,no_run
7674    /// # use google_cloud_gkemulticloud_v1::model::ListAwsClustersResponse;
7675    /// let x = ListAwsClustersResponse::new().set_next_page_token("example");
7676    /// ```
7677    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7678        self.next_page_token = v.into();
7679        self
7680    }
7681}
7682
7683impl wkt::message::Message for ListAwsClustersResponse {
7684    fn typename() -> &'static str {
7685        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAwsClustersResponse"
7686    }
7687}
7688
7689#[doc(hidden)]
7690impl google_cloud_gax::paginator::internal::PageableResponse for ListAwsClustersResponse {
7691    type PageItem = crate::model::AwsCluster;
7692
7693    fn items(self) -> std::vec::Vec<Self::PageItem> {
7694        self.aws_clusters
7695    }
7696
7697    fn next_page_token(&self) -> std::string::String {
7698        use std::clone::Clone;
7699        self.next_page_token.clone()
7700    }
7701}
7702
7703/// Request message for `AwsClusters.DeleteAwsCluster` method.
7704#[derive(Clone, Default, PartialEq)]
7705#[non_exhaustive]
7706#[deprecated]
7707pub struct DeleteAwsClusterRequest {
7708    /// Required. The resource name the
7709    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] to delete.
7710    ///
7711    /// `AwsCluster` names are formatted as
7712    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
7713    ///
7714    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
7715    /// for more details on Google Cloud Platform resource names.
7716    ///
7717    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7718    pub name: std::string::String,
7719
7720    /// If set, only validate the request, but do not actually delete the resource.
7721    pub validate_only: bool,
7722
7723    /// If set to true, and the
7724    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource is not
7725    /// found, the request will succeed but no action will be taken on the server
7726    /// and a completed [Operation][google.longrunning.Operation] will be returned.
7727    ///
7728    /// Useful for idempotent deletion.
7729    ///
7730    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7731    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
7732    pub allow_missing: bool,
7733
7734    /// Optional. If set to true, the deletion of
7735    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource will
7736    /// succeed even if errors occur during deleting in cluster resources. Using
7737    /// this parameter may result in orphaned resources in the cluster.
7738    ///
7739    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7740    pub ignore_errors: bool,
7741
7742    /// The current etag of the
7743    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster].
7744    ///
7745    /// Allows clients to perform deletions through optimistic concurrency control.
7746    ///
7747    /// If the provided etag does not match the current etag of the cluster,
7748    /// the request will fail and an ABORTED error will be returned.
7749    ///
7750    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7751    pub etag: std::string::String,
7752
7753    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7754}
7755
7756impl DeleteAwsClusterRequest {
7757    pub fn new() -> Self {
7758        std::default::Default::default()
7759    }
7760
7761    /// Sets the value of [name][crate::model::DeleteAwsClusterRequest::name].
7762    ///
7763    /// # Example
7764    /// ```ignore,no_run
7765    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsClusterRequest;
7766    /// let x = DeleteAwsClusterRequest::new().set_name("example");
7767    /// ```
7768    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7769        self.name = v.into();
7770        self
7771    }
7772
7773    /// Sets the value of [validate_only][crate::model::DeleteAwsClusterRequest::validate_only].
7774    ///
7775    /// # Example
7776    /// ```ignore,no_run
7777    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsClusterRequest;
7778    /// let x = DeleteAwsClusterRequest::new().set_validate_only(true);
7779    /// ```
7780    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7781        self.validate_only = v.into();
7782        self
7783    }
7784
7785    /// Sets the value of [allow_missing][crate::model::DeleteAwsClusterRequest::allow_missing].
7786    ///
7787    /// # Example
7788    /// ```ignore,no_run
7789    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsClusterRequest;
7790    /// let x = DeleteAwsClusterRequest::new().set_allow_missing(true);
7791    /// ```
7792    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7793        self.allow_missing = v.into();
7794        self
7795    }
7796
7797    /// Sets the value of [ignore_errors][crate::model::DeleteAwsClusterRequest::ignore_errors].
7798    ///
7799    /// # Example
7800    /// ```ignore,no_run
7801    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsClusterRequest;
7802    /// let x = DeleteAwsClusterRequest::new().set_ignore_errors(true);
7803    /// ```
7804    pub fn set_ignore_errors<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7805        self.ignore_errors = v.into();
7806        self
7807    }
7808
7809    /// Sets the value of [etag][crate::model::DeleteAwsClusterRequest::etag].
7810    ///
7811    /// # Example
7812    /// ```ignore,no_run
7813    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsClusterRequest;
7814    /// let x = DeleteAwsClusterRequest::new().set_etag("example");
7815    /// ```
7816    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7817        self.etag = v.into();
7818        self
7819    }
7820}
7821
7822impl wkt::message::Message for DeleteAwsClusterRequest {
7823    fn typename() -> &'static str {
7824        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAwsClusterRequest"
7825    }
7826}
7827
7828/// Response message for `AwsClusters.CreateAwsNodePool` method.
7829#[derive(Clone, Default, PartialEq)]
7830#[non_exhaustive]
7831#[deprecated]
7832pub struct CreateAwsNodePoolRequest {
7833    /// Required. The [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster]
7834    /// resource where this node pool will be created.
7835    ///
7836    /// `AwsCluster` names are formatted as
7837    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
7838    ///
7839    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
7840    /// for more details on Google Cloud resource names.
7841    ///
7842    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
7843    pub parent: std::string::String,
7844
7845    /// Required. The specification of the
7846    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] to create.
7847    ///
7848    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
7849    pub aws_node_pool: std::option::Option<crate::model::AwsNodePool>,
7850
7851    /// Required. A client provided ID the resource. Must be unique within the
7852    /// parent resource.
7853    ///
7854    /// The provided ID will be part of the
7855    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resource name
7856    /// formatted as
7857    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
7858    ///
7859    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
7860    ///
7861    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
7862    pub aws_node_pool_id: std::string::String,
7863
7864    /// If set, only validate the request, but do not actually create the node
7865    /// pool.
7866    pub validate_only: bool,
7867
7868    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
7869}
7870
7871impl CreateAwsNodePoolRequest {
7872    pub fn new() -> Self {
7873        std::default::Default::default()
7874    }
7875
7876    /// Sets the value of [parent][crate::model::CreateAwsNodePoolRequest::parent].
7877    ///
7878    /// # Example
7879    /// ```ignore,no_run
7880    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsNodePoolRequest;
7881    /// let x = CreateAwsNodePoolRequest::new().set_parent("example");
7882    /// ```
7883    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
7884        self.parent = v.into();
7885        self
7886    }
7887
7888    /// Sets the value of [aws_node_pool][crate::model::CreateAwsNodePoolRequest::aws_node_pool].
7889    ///
7890    /// # Example
7891    /// ```ignore,no_run
7892    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsNodePoolRequest;
7893    /// use google_cloud_gkemulticloud_v1::model::AwsNodePool;
7894    /// let x = CreateAwsNodePoolRequest::new().set_aws_node_pool(AwsNodePool::default()/* use setters */);
7895    /// ```
7896    pub fn set_aws_node_pool<T>(mut self, v: T) -> Self
7897    where
7898        T: std::convert::Into<crate::model::AwsNodePool>,
7899    {
7900        self.aws_node_pool = std::option::Option::Some(v.into());
7901        self
7902    }
7903
7904    /// Sets or clears the value of [aws_node_pool][crate::model::CreateAwsNodePoolRequest::aws_node_pool].
7905    ///
7906    /// # Example
7907    /// ```ignore,no_run
7908    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsNodePoolRequest;
7909    /// use google_cloud_gkemulticloud_v1::model::AwsNodePool;
7910    /// let x = CreateAwsNodePoolRequest::new().set_or_clear_aws_node_pool(Some(AwsNodePool::default()/* use setters */));
7911    /// let x = CreateAwsNodePoolRequest::new().set_or_clear_aws_node_pool(None::<AwsNodePool>);
7912    /// ```
7913    pub fn set_or_clear_aws_node_pool<T>(mut self, v: std::option::Option<T>) -> Self
7914    where
7915        T: std::convert::Into<crate::model::AwsNodePool>,
7916    {
7917        self.aws_node_pool = v.map(|x| x.into());
7918        self
7919    }
7920
7921    /// Sets the value of [aws_node_pool_id][crate::model::CreateAwsNodePoolRequest::aws_node_pool_id].
7922    ///
7923    /// # Example
7924    /// ```ignore,no_run
7925    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsNodePoolRequest;
7926    /// let x = CreateAwsNodePoolRequest::new().set_aws_node_pool_id("example");
7927    /// ```
7928    pub fn set_aws_node_pool_id<T: std::convert::Into<std::string::String>>(
7929        mut self,
7930        v: T,
7931    ) -> Self {
7932        self.aws_node_pool_id = v.into();
7933        self
7934    }
7935
7936    /// Sets the value of [validate_only][crate::model::CreateAwsNodePoolRequest::validate_only].
7937    ///
7938    /// # Example
7939    /// ```ignore,no_run
7940    /// # use google_cloud_gkemulticloud_v1::model::CreateAwsNodePoolRequest;
7941    /// let x = CreateAwsNodePoolRequest::new().set_validate_only(true);
7942    /// ```
7943    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
7944        self.validate_only = v.into();
7945        self
7946    }
7947}
7948
7949impl wkt::message::Message for CreateAwsNodePoolRequest {
7950    fn typename() -> &'static str {
7951        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAwsNodePoolRequest"
7952    }
7953}
7954
7955/// Request message for `AwsClusters.UpdateAwsNodePool` method.
7956#[derive(Clone, Default, PartialEq)]
7957#[non_exhaustive]
7958#[deprecated]
7959pub struct UpdateAwsNodePoolRequest {
7960    /// Required. The [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool]
7961    /// resource to update.
7962    ///
7963    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
7964    pub aws_node_pool: std::option::Option<crate::model::AwsNodePool>,
7965
7966    /// If set, only validate the request, but don't actually update the node pool.
7967    pub validate_only: bool,
7968
7969    /// Required. Mask of fields to update. At least one path must be supplied in
7970    /// this field. The elements of the repeated paths field can only include these
7971    /// fields from [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool]:
7972    ///
7973    /// * `annotations`.
7974    /// * `version`.
7975    /// * `autoscaling.min_node_count`.
7976    /// * `autoscaling.max_node_count`.
7977    /// * `config.config_encryption.kms_key_arn`.
7978    /// * `config.security_group_ids`.
7979    /// * `config.root_volume.iops`.
7980    /// * `config.root_volume.throughput`.
7981    /// * `config.root_volume.kms_key_arn`.
7982    /// * `config.root_volume.volume_type`.
7983    /// * `config.root_volume.size_gib`.
7984    /// * `config.proxy_config`.
7985    /// * `config.proxy_config.secret_arn`.
7986    /// * `config.proxy_config.secret_version`.
7987    /// * `config.ssh_config`.
7988    /// * `config.ssh_config.ec2_key_pair`.
7989    /// * `config.instance_placement.tenancy`.
7990    /// * `config.iam_instance_profile`.
7991    /// * `config.labels`.
7992    /// * `config.tags`.
7993    /// * `config.autoscaling_metrics_collection`.
7994    /// * `config.autoscaling_metrics_collection.granularity`.
7995    /// * `config.autoscaling_metrics_collection.metrics`.
7996    /// * `config.instance_type`.
7997    /// * `management.auto_repair`.
7998    /// * `management`.
7999    /// * `update_settings`.
8000    /// * `update_settings.surge_settings`.
8001    /// * `update_settings.surge_settings.max_surge`.
8002    /// * `update_settings.surge_settings.max_unavailable`.
8003    ///
8004    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8005    pub update_mask: std::option::Option<wkt::FieldMask>,
8006
8007    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8008}
8009
8010impl UpdateAwsNodePoolRequest {
8011    pub fn new() -> Self {
8012        std::default::Default::default()
8013    }
8014
8015    /// Sets the value of [aws_node_pool][crate::model::UpdateAwsNodePoolRequest::aws_node_pool].
8016    ///
8017    /// # Example
8018    /// ```ignore,no_run
8019    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsNodePoolRequest;
8020    /// use google_cloud_gkemulticloud_v1::model::AwsNodePool;
8021    /// let x = UpdateAwsNodePoolRequest::new().set_aws_node_pool(AwsNodePool::default()/* use setters */);
8022    /// ```
8023    pub fn set_aws_node_pool<T>(mut self, v: T) -> Self
8024    where
8025        T: std::convert::Into<crate::model::AwsNodePool>,
8026    {
8027        self.aws_node_pool = std::option::Option::Some(v.into());
8028        self
8029    }
8030
8031    /// Sets or clears the value of [aws_node_pool][crate::model::UpdateAwsNodePoolRequest::aws_node_pool].
8032    ///
8033    /// # Example
8034    /// ```ignore,no_run
8035    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsNodePoolRequest;
8036    /// use google_cloud_gkemulticloud_v1::model::AwsNodePool;
8037    /// let x = UpdateAwsNodePoolRequest::new().set_or_clear_aws_node_pool(Some(AwsNodePool::default()/* use setters */));
8038    /// let x = UpdateAwsNodePoolRequest::new().set_or_clear_aws_node_pool(None::<AwsNodePool>);
8039    /// ```
8040    pub fn set_or_clear_aws_node_pool<T>(mut self, v: std::option::Option<T>) -> Self
8041    where
8042        T: std::convert::Into<crate::model::AwsNodePool>,
8043    {
8044        self.aws_node_pool = v.map(|x| x.into());
8045        self
8046    }
8047
8048    /// Sets the value of [validate_only][crate::model::UpdateAwsNodePoolRequest::validate_only].
8049    ///
8050    /// # Example
8051    /// ```ignore,no_run
8052    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsNodePoolRequest;
8053    /// let x = UpdateAwsNodePoolRequest::new().set_validate_only(true);
8054    /// ```
8055    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8056        self.validate_only = v.into();
8057        self
8058    }
8059
8060    /// Sets the value of [update_mask][crate::model::UpdateAwsNodePoolRequest::update_mask].
8061    ///
8062    /// # Example
8063    /// ```ignore,no_run
8064    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsNodePoolRequest;
8065    /// use wkt::FieldMask;
8066    /// let x = UpdateAwsNodePoolRequest::new().set_update_mask(FieldMask::default()/* use setters */);
8067    /// ```
8068    pub fn set_update_mask<T>(mut self, v: T) -> Self
8069    where
8070        T: std::convert::Into<wkt::FieldMask>,
8071    {
8072        self.update_mask = std::option::Option::Some(v.into());
8073        self
8074    }
8075
8076    /// Sets or clears the value of [update_mask][crate::model::UpdateAwsNodePoolRequest::update_mask].
8077    ///
8078    /// # Example
8079    /// ```ignore,no_run
8080    /// # use google_cloud_gkemulticloud_v1::model::UpdateAwsNodePoolRequest;
8081    /// use wkt::FieldMask;
8082    /// let x = UpdateAwsNodePoolRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
8083    /// let x = UpdateAwsNodePoolRequest::new().set_or_clear_update_mask(None::<FieldMask>);
8084    /// ```
8085    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
8086    where
8087        T: std::convert::Into<wkt::FieldMask>,
8088    {
8089        self.update_mask = v.map(|x| x.into());
8090        self
8091    }
8092}
8093
8094impl wkt::message::Message for UpdateAwsNodePoolRequest {
8095    fn typename() -> &'static str {
8096        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateAwsNodePoolRequest"
8097    }
8098}
8099
8100/// Request message for `AwsClusters.RollbackAwsNodePoolUpdate` method.
8101#[derive(Clone, Default, PartialEq)]
8102#[non_exhaustive]
8103#[deprecated]
8104pub struct RollbackAwsNodePoolUpdateRequest {
8105    /// Required. The name of the
8106    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resource to
8107    /// rollback.
8108    ///
8109    /// `AwsNodePool` names are formatted as
8110    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
8111    ///
8112    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8113    /// for more details on Google Cloud resource names.
8114    ///
8115    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8116    pub name: std::string::String,
8117
8118    /// Optional. Option for rollback to ignore the PodDisruptionBudget when
8119    /// draining the node pool nodes. Default value is false.
8120    pub respect_pdb: bool,
8121
8122    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8123}
8124
8125impl RollbackAwsNodePoolUpdateRequest {
8126    pub fn new() -> Self {
8127        std::default::Default::default()
8128    }
8129
8130    /// Sets the value of [name][crate::model::RollbackAwsNodePoolUpdateRequest::name].
8131    ///
8132    /// # Example
8133    /// ```ignore,no_run
8134    /// # use google_cloud_gkemulticloud_v1::model::RollbackAwsNodePoolUpdateRequest;
8135    /// let x = RollbackAwsNodePoolUpdateRequest::new().set_name("example");
8136    /// ```
8137    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8138        self.name = v.into();
8139        self
8140    }
8141
8142    /// Sets the value of [respect_pdb][crate::model::RollbackAwsNodePoolUpdateRequest::respect_pdb].
8143    ///
8144    /// # Example
8145    /// ```ignore,no_run
8146    /// # use google_cloud_gkemulticloud_v1::model::RollbackAwsNodePoolUpdateRequest;
8147    /// let x = RollbackAwsNodePoolUpdateRequest::new().set_respect_pdb(true);
8148    /// ```
8149    pub fn set_respect_pdb<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8150        self.respect_pdb = v.into();
8151        self
8152    }
8153}
8154
8155impl wkt::message::Message for RollbackAwsNodePoolUpdateRequest {
8156    fn typename() -> &'static str {
8157        "type.googleapis.com/google.cloud.gkemulticloud.v1.RollbackAwsNodePoolUpdateRequest"
8158    }
8159}
8160
8161/// Request message for `AwsClusters.GetAwsNodePool` method.
8162#[derive(Clone, Default, PartialEq)]
8163#[non_exhaustive]
8164#[deprecated]
8165pub struct GetAwsNodePoolRequest {
8166    /// Required. The name of the
8167    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resource to
8168    /// describe.
8169    ///
8170    /// `AwsNodePool` names are formatted as
8171    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
8172    ///
8173    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8174    /// for more details on Google Cloud resource names.
8175    ///
8176    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8177    pub name: std::string::String,
8178
8179    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8180}
8181
8182impl GetAwsNodePoolRequest {
8183    pub fn new() -> Self {
8184        std::default::Default::default()
8185    }
8186
8187    /// Sets the value of [name][crate::model::GetAwsNodePoolRequest::name].
8188    ///
8189    /// # Example
8190    /// ```ignore,no_run
8191    /// # use google_cloud_gkemulticloud_v1::model::GetAwsNodePoolRequest;
8192    /// let x = GetAwsNodePoolRequest::new().set_name("example");
8193    /// ```
8194    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8195        self.name = v.into();
8196        self
8197    }
8198}
8199
8200impl wkt::message::Message for GetAwsNodePoolRequest {
8201    fn typename() -> &'static str {
8202        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAwsNodePoolRequest"
8203    }
8204}
8205
8206/// Request message for `AwsClusters.ListAwsNodePools` method.
8207#[derive(Clone, Default, PartialEq)]
8208#[non_exhaustive]
8209#[deprecated]
8210pub struct ListAwsNodePoolsRequest {
8211    /// Required. The parent `AwsCluster` which owns this collection of
8212    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resources.
8213    ///
8214    /// `AwsCluster` names are formatted as
8215    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
8216    ///
8217    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8218    /// for more details on Google Cloud resource names.
8219    ///
8220    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8221    pub parent: std::string::String,
8222
8223    /// The maximum number of items to return.
8224    ///
8225    /// If not specified, a default value of 50 will be used by the service.
8226    /// Regardless of the pageSize value, the response can include a partial list
8227    /// and a caller should only rely on response's
8228    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAwsNodePoolsResponse.next_page_token]
8229    /// to determine if there are more instances left to be queried.
8230    ///
8231    /// [google.cloud.gkemulticloud.v1.ListAwsNodePoolsResponse.next_page_token]: crate::model::ListAwsNodePoolsResponse::next_page_token
8232    pub page_size: i32,
8233
8234    /// The `nextPageToken` value returned from a previous
8235    /// [awsNodePools.list][google.cloud.gkemulticloud.v1.AwsClusters.ListAwsNodePools]
8236    /// request, if any.
8237    ///
8238    /// [google.cloud.gkemulticloud.v1.AwsClusters.ListAwsNodePools]: crate::client::AwsClusters::list_aws_node_pools
8239    pub page_token: std::string::String,
8240
8241    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8242}
8243
8244impl ListAwsNodePoolsRequest {
8245    pub fn new() -> Self {
8246        std::default::Default::default()
8247    }
8248
8249    /// Sets the value of [parent][crate::model::ListAwsNodePoolsRequest::parent].
8250    ///
8251    /// # Example
8252    /// ```ignore,no_run
8253    /// # use google_cloud_gkemulticloud_v1::model::ListAwsNodePoolsRequest;
8254    /// let x = ListAwsNodePoolsRequest::new().set_parent("example");
8255    /// ```
8256    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8257        self.parent = v.into();
8258        self
8259    }
8260
8261    /// Sets the value of [page_size][crate::model::ListAwsNodePoolsRequest::page_size].
8262    ///
8263    /// # Example
8264    /// ```ignore,no_run
8265    /// # use google_cloud_gkemulticloud_v1::model::ListAwsNodePoolsRequest;
8266    /// let x = ListAwsNodePoolsRequest::new().set_page_size(42);
8267    /// ```
8268    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
8269        self.page_size = v.into();
8270        self
8271    }
8272
8273    /// Sets the value of [page_token][crate::model::ListAwsNodePoolsRequest::page_token].
8274    ///
8275    /// # Example
8276    /// ```ignore,no_run
8277    /// # use google_cloud_gkemulticloud_v1::model::ListAwsNodePoolsRequest;
8278    /// let x = ListAwsNodePoolsRequest::new().set_page_token("example");
8279    /// ```
8280    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8281        self.page_token = v.into();
8282        self
8283    }
8284}
8285
8286impl wkt::message::Message for ListAwsNodePoolsRequest {
8287    fn typename() -> &'static str {
8288        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAwsNodePoolsRequest"
8289    }
8290}
8291
8292/// Response message for `AwsClusters.ListAwsNodePools` method.
8293#[derive(Clone, Default, PartialEq)]
8294#[non_exhaustive]
8295#[deprecated]
8296pub struct ListAwsNodePoolsResponse {
8297    /// A list of [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool]
8298    /// resources in the specified `AwsCluster`.
8299    ///
8300    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8301    pub aws_node_pools: std::vec::Vec<crate::model::AwsNodePool>,
8302
8303    /// Token to retrieve the next page of results, or empty if there are no more
8304    /// results in the list.
8305    pub next_page_token: std::string::String,
8306
8307    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8308}
8309
8310impl ListAwsNodePoolsResponse {
8311    pub fn new() -> Self {
8312        std::default::Default::default()
8313    }
8314
8315    /// Sets the value of [aws_node_pools][crate::model::ListAwsNodePoolsResponse::aws_node_pools].
8316    ///
8317    /// # Example
8318    /// ```ignore,no_run
8319    /// # use google_cloud_gkemulticloud_v1::model::ListAwsNodePoolsResponse;
8320    /// use google_cloud_gkemulticloud_v1::model::AwsNodePool;
8321    /// let x = ListAwsNodePoolsResponse::new()
8322    ///     .set_aws_node_pools([
8323    ///         AwsNodePool::default()/* use setters */,
8324    ///         AwsNodePool::default()/* use (different) setters */,
8325    ///     ]);
8326    /// ```
8327    pub fn set_aws_node_pools<T, V>(mut self, v: T) -> Self
8328    where
8329        T: std::iter::IntoIterator<Item = V>,
8330        V: std::convert::Into<crate::model::AwsNodePool>,
8331    {
8332        use std::iter::Iterator;
8333        self.aws_node_pools = v.into_iter().map(|i| i.into()).collect();
8334        self
8335    }
8336
8337    /// Sets the value of [next_page_token][crate::model::ListAwsNodePoolsResponse::next_page_token].
8338    ///
8339    /// # Example
8340    /// ```ignore,no_run
8341    /// # use google_cloud_gkemulticloud_v1::model::ListAwsNodePoolsResponse;
8342    /// let x = ListAwsNodePoolsResponse::new().set_next_page_token("example");
8343    /// ```
8344    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8345        self.next_page_token = v.into();
8346        self
8347    }
8348}
8349
8350impl wkt::message::Message for ListAwsNodePoolsResponse {
8351    fn typename() -> &'static str {
8352        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAwsNodePoolsResponse"
8353    }
8354}
8355
8356#[doc(hidden)]
8357impl google_cloud_gax::paginator::internal::PageableResponse for ListAwsNodePoolsResponse {
8358    type PageItem = crate::model::AwsNodePool;
8359
8360    fn items(self) -> std::vec::Vec<Self::PageItem> {
8361        self.aws_node_pools
8362    }
8363
8364    fn next_page_token(&self) -> std::string::String {
8365        use std::clone::Clone;
8366        self.next_page_token.clone()
8367    }
8368}
8369
8370/// Request message for `AwsClusters.DeleteAwsNodePool` method.
8371#[derive(Clone, Default, PartialEq)]
8372#[non_exhaustive]
8373#[deprecated]
8374pub struct DeleteAwsNodePoolRequest {
8375    /// Required. The resource name the
8376    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] to delete.
8377    ///
8378    /// `AwsNodePool` names are formatted as
8379    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>/awsNodePools/<node-pool-id>`.
8380    ///
8381    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8382    /// for more details on Google Cloud resource names.
8383    ///
8384    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8385    pub name: std::string::String,
8386
8387    /// If set, only validate the request, but do not actually delete the node
8388    /// pool.
8389    pub validate_only: bool,
8390
8391    /// If set to true, and the
8392    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resource is not
8393    /// found, the request will succeed but no action will be taken on the server
8394    /// and a completed [Operation][google.longrunning.Operation] will be returned.
8395    ///
8396    /// Useful for idempotent deletion.
8397    ///
8398    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8399    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
8400    pub allow_missing: bool,
8401
8402    /// Optional. If set to true, the deletion of
8403    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool] resource will
8404    /// succeed even if errors occur during deleting in node pool resources. Using
8405    /// this parameter may result in orphaned resources in the node pool.
8406    ///
8407    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8408    pub ignore_errors: bool,
8409
8410    /// The current ETag of the
8411    /// [AwsNodePool][google.cloud.gkemulticloud.v1.AwsNodePool].
8412    ///
8413    /// Allows clients to perform deletions through optimistic concurrency control.
8414    ///
8415    /// If the provided ETag does not match the current etag of the node pool,
8416    /// the request will fail and an ABORTED error will be returned.
8417    ///
8418    /// [google.cloud.gkemulticloud.v1.AwsNodePool]: crate::model::AwsNodePool
8419    pub etag: std::string::String,
8420
8421    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8422}
8423
8424impl DeleteAwsNodePoolRequest {
8425    pub fn new() -> Self {
8426        std::default::Default::default()
8427    }
8428
8429    /// Sets the value of [name][crate::model::DeleteAwsNodePoolRequest::name].
8430    ///
8431    /// # Example
8432    /// ```ignore,no_run
8433    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsNodePoolRequest;
8434    /// let x = DeleteAwsNodePoolRequest::new().set_name("example");
8435    /// ```
8436    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8437        self.name = v.into();
8438        self
8439    }
8440
8441    /// Sets the value of [validate_only][crate::model::DeleteAwsNodePoolRequest::validate_only].
8442    ///
8443    /// # Example
8444    /// ```ignore,no_run
8445    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsNodePoolRequest;
8446    /// let x = DeleteAwsNodePoolRequest::new().set_validate_only(true);
8447    /// ```
8448    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8449        self.validate_only = v.into();
8450        self
8451    }
8452
8453    /// Sets the value of [allow_missing][crate::model::DeleteAwsNodePoolRequest::allow_missing].
8454    ///
8455    /// # Example
8456    /// ```ignore,no_run
8457    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsNodePoolRequest;
8458    /// let x = DeleteAwsNodePoolRequest::new().set_allow_missing(true);
8459    /// ```
8460    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8461        self.allow_missing = v.into();
8462        self
8463    }
8464
8465    /// Sets the value of [ignore_errors][crate::model::DeleteAwsNodePoolRequest::ignore_errors].
8466    ///
8467    /// # Example
8468    /// ```ignore,no_run
8469    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsNodePoolRequest;
8470    /// let x = DeleteAwsNodePoolRequest::new().set_ignore_errors(true);
8471    /// ```
8472    pub fn set_ignore_errors<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
8473        self.ignore_errors = v.into();
8474        self
8475    }
8476
8477    /// Sets the value of [etag][crate::model::DeleteAwsNodePoolRequest::etag].
8478    ///
8479    /// # Example
8480    /// ```ignore,no_run
8481    /// # use google_cloud_gkemulticloud_v1::model::DeleteAwsNodePoolRequest;
8482    /// let x = DeleteAwsNodePoolRequest::new().set_etag("example");
8483    /// ```
8484    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8485        self.etag = v.into();
8486        self
8487    }
8488}
8489
8490impl wkt::message::Message for DeleteAwsNodePoolRequest {
8491    fn typename() -> &'static str {
8492        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAwsNodePoolRequest"
8493    }
8494}
8495
8496/// GetAwsOpenIdConfigRequest gets the OIDC discovery document for the
8497/// cluster. See the OpenID Connect Discovery 1.0 specification for details.
8498#[derive(Clone, Default, PartialEq)]
8499#[non_exhaustive]
8500#[deprecated]
8501pub struct GetAwsOpenIdConfigRequest {
8502    /// Required. The AwsCluster, which owns the OIDC discovery document.
8503    /// Format:
8504    /// projects/{project}/locations/{location}/awsClusters/{cluster}
8505    pub aws_cluster: std::string::String,
8506
8507    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8508}
8509
8510impl GetAwsOpenIdConfigRequest {
8511    pub fn new() -> Self {
8512        std::default::Default::default()
8513    }
8514
8515    /// Sets the value of [aws_cluster][crate::model::GetAwsOpenIdConfigRequest::aws_cluster].
8516    ///
8517    /// # Example
8518    /// ```ignore,no_run
8519    /// # use google_cloud_gkemulticloud_v1::model::GetAwsOpenIdConfigRequest;
8520    /// let x = GetAwsOpenIdConfigRequest::new().set_aws_cluster("example");
8521    /// ```
8522    pub fn set_aws_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8523        self.aws_cluster = v.into();
8524        self
8525    }
8526}
8527
8528impl wkt::message::Message for GetAwsOpenIdConfigRequest {
8529    fn typename() -> &'static str {
8530        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAwsOpenIdConfigRequest"
8531    }
8532}
8533
8534/// GetAwsJsonWebKeysRequest gets the public component of the keys used by the
8535/// cluster to sign token requests. This will be the jwks_uri for the discover
8536/// document returned by getOpenIDConfig. See the OpenID Connect
8537/// Discovery 1.0 specification for details.
8538#[derive(Clone, Default, PartialEq)]
8539#[non_exhaustive]
8540#[deprecated]
8541pub struct GetAwsJsonWebKeysRequest {
8542    /// Required. The AwsCluster, which owns the JsonWebKeys.
8543    /// Format:
8544    /// projects/{project}/locations/{location}/awsClusters/{cluster}
8545    pub aws_cluster: std::string::String,
8546
8547    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8548}
8549
8550impl GetAwsJsonWebKeysRequest {
8551    pub fn new() -> Self {
8552        std::default::Default::default()
8553    }
8554
8555    /// Sets the value of [aws_cluster][crate::model::GetAwsJsonWebKeysRequest::aws_cluster].
8556    ///
8557    /// # Example
8558    /// ```ignore,no_run
8559    /// # use google_cloud_gkemulticloud_v1::model::GetAwsJsonWebKeysRequest;
8560    /// let x = GetAwsJsonWebKeysRequest::new().set_aws_cluster("example");
8561    /// ```
8562    pub fn set_aws_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8563        self.aws_cluster = v.into();
8564        self
8565    }
8566}
8567
8568impl wkt::message::Message for GetAwsJsonWebKeysRequest {
8569    fn typename() -> &'static str {
8570        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAwsJsonWebKeysRequest"
8571    }
8572}
8573
8574/// GetAwsServerConfigRequest gets the server config of GKE cluster on AWS.
8575#[derive(Clone, Default, PartialEq)]
8576#[non_exhaustive]
8577#[deprecated]
8578pub struct GetAwsServerConfigRequest {
8579    /// Required. The name of the
8580    /// [AwsServerConfig][google.cloud.gkemulticloud.v1.AwsServerConfig] resource
8581    /// to describe.
8582    ///
8583    /// `AwsServerConfig` names are formatted as
8584    /// `projects/<project-id>/locations/<region>/awsServerConfig`.
8585    ///
8586    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8587    /// for more details on Google Cloud resource names.
8588    ///
8589    /// [google.cloud.gkemulticloud.v1.AwsServerConfig]: crate::model::AwsServerConfig
8590    pub name: std::string::String,
8591
8592    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8593}
8594
8595impl GetAwsServerConfigRequest {
8596    pub fn new() -> Self {
8597        std::default::Default::default()
8598    }
8599
8600    /// Sets the value of [name][crate::model::GetAwsServerConfigRequest::name].
8601    ///
8602    /// # Example
8603    /// ```ignore,no_run
8604    /// # use google_cloud_gkemulticloud_v1::model::GetAwsServerConfigRequest;
8605    /// let x = GetAwsServerConfigRequest::new().set_name("example");
8606    /// ```
8607    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8608        self.name = v.into();
8609        self
8610    }
8611}
8612
8613impl wkt::message::Message for GetAwsServerConfigRequest {
8614    fn typename() -> &'static str {
8615        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAwsServerConfigRequest"
8616    }
8617}
8618
8619/// Request message for `AwsClusters.GenerateAwsAccessToken` method.
8620#[derive(Clone, Default, PartialEq)]
8621#[non_exhaustive]
8622#[deprecated]
8623pub struct GenerateAwsAccessTokenRequest {
8624    /// Required. The name of the
8625    /// [AwsCluster][google.cloud.gkemulticloud.v1.AwsCluster] resource to
8626    /// authenticate to.
8627    ///
8628    /// `AwsCluster` names are formatted as
8629    /// `projects/<project-id>/locations/<region>/awsClusters/<cluster-id>`.
8630    ///
8631    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8632    /// for more details on Google Cloud resource names.
8633    ///
8634    /// [google.cloud.gkemulticloud.v1.AwsCluster]: crate::model::AwsCluster
8635    pub aws_cluster: std::string::String,
8636
8637    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8638}
8639
8640impl GenerateAwsAccessTokenRequest {
8641    pub fn new() -> Self {
8642        std::default::Default::default()
8643    }
8644
8645    /// Sets the value of [aws_cluster][crate::model::GenerateAwsAccessTokenRequest::aws_cluster].
8646    ///
8647    /// # Example
8648    /// ```ignore,no_run
8649    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsAccessTokenRequest;
8650    /// let x = GenerateAwsAccessTokenRequest::new().set_aws_cluster("example");
8651    /// ```
8652    pub fn set_aws_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8653        self.aws_cluster = v.into();
8654        self
8655    }
8656}
8657
8658impl wkt::message::Message for GenerateAwsAccessTokenRequest {
8659    fn typename() -> &'static str {
8660        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAwsAccessTokenRequest"
8661    }
8662}
8663
8664/// Response message for `AwsClusters.GenerateAwsAccessToken` method.
8665#[derive(Clone, Default, PartialEq)]
8666#[non_exhaustive]
8667#[deprecated]
8668pub struct GenerateAwsAccessTokenResponse {
8669    /// Output only. Access token to authenticate to k8s api-server.
8670    pub access_token: std::string::String,
8671
8672    /// Output only. Timestamp at which the token will expire.
8673    pub expiration_time: std::option::Option<wkt::Timestamp>,
8674
8675    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8676}
8677
8678impl GenerateAwsAccessTokenResponse {
8679    pub fn new() -> Self {
8680        std::default::Default::default()
8681    }
8682
8683    /// Sets the value of [access_token][crate::model::GenerateAwsAccessTokenResponse::access_token].
8684    ///
8685    /// # Example
8686    /// ```ignore,no_run
8687    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsAccessTokenResponse;
8688    /// let x = GenerateAwsAccessTokenResponse::new().set_access_token("example");
8689    /// ```
8690    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8691        self.access_token = v.into();
8692        self
8693    }
8694
8695    /// Sets the value of [expiration_time][crate::model::GenerateAwsAccessTokenResponse::expiration_time].
8696    ///
8697    /// # Example
8698    /// ```ignore,no_run
8699    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsAccessTokenResponse;
8700    /// use wkt::Timestamp;
8701    /// let x = GenerateAwsAccessTokenResponse::new().set_expiration_time(Timestamp::default()/* use setters */);
8702    /// ```
8703    pub fn set_expiration_time<T>(mut self, v: T) -> Self
8704    where
8705        T: std::convert::Into<wkt::Timestamp>,
8706    {
8707        self.expiration_time = std::option::Option::Some(v.into());
8708        self
8709    }
8710
8711    /// Sets or clears the value of [expiration_time][crate::model::GenerateAwsAccessTokenResponse::expiration_time].
8712    ///
8713    /// # Example
8714    /// ```ignore,no_run
8715    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsAccessTokenResponse;
8716    /// use wkt::Timestamp;
8717    /// let x = GenerateAwsAccessTokenResponse::new().set_or_clear_expiration_time(Some(Timestamp::default()/* use setters */));
8718    /// let x = GenerateAwsAccessTokenResponse::new().set_or_clear_expiration_time(None::<Timestamp>);
8719    /// ```
8720    pub fn set_or_clear_expiration_time<T>(mut self, v: std::option::Option<T>) -> Self
8721    where
8722        T: std::convert::Into<wkt::Timestamp>,
8723    {
8724        self.expiration_time = v.map(|x| x.into());
8725        self
8726    }
8727}
8728
8729impl wkt::message::Message for GenerateAwsAccessTokenResponse {
8730    fn typename() -> &'static str {
8731        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAwsAccessTokenResponse"
8732    }
8733}
8734
8735#[derive(Clone, Default, PartialEq)]
8736#[non_exhaustive]
8737#[deprecated]
8738pub struct GenerateAwsClusterAgentTokenRequest {
8739    /// Required.
8740    pub aws_cluster: std::string::String,
8741
8742    /// Required.
8743    pub subject_token: std::string::String,
8744
8745    /// Required.
8746    pub subject_token_type: std::string::String,
8747
8748    /// Required.
8749    pub version: std::string::String,
8750
8751    /// Optional.
8752    pub node_pool_id: std::string::String,
8753
8754    /// Optional.
8755    pub grant_type: std::string::String,
8756
8757    /// Optional.
8758    pub audience: std::string::String,
8759
8760    /// Optional.
8761    pub scope: std::string::String,
8762
8763    /// Optional.
8764    pub requested_token_type: std::string::String,
8765
8766    /// Optional.
8767    pub options: std::string::String,
8768
8769    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8770}
8771
8772impl GenerateAwsClusterAgentTokenRequest {
8773    pub fn new() -> Self {
8774        std::default::Default::default()
8775    }
8776
8777    /// Sets the value of [aws_cluster][crate::model::GenerateAwsClusterAgentTokenRequest::aws_cluster].
8778    ///
8779    /// # Example
8780    /// ```ignore,no_run
8781    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8782    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_aws_cluster("example");
8783    /// ```
8784    pub fn set_aws_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8785        self.aws_cluster = v.into();
8786        self
8787    }
8788
8789    /// Sets the value of [subject_token][crate::model::GenerateAwsClusterAgentTokenRequest::subject_token].
8790    ///
8791    /// # Example
8792    /// ```ignore,no_run
8793    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8794    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_subject_token("example");
8795    /// ```
8796    pub fn set_subject_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8797        self.subject_token = v.into();
8798        self
8799    }
8800
8801    /// Sets the value of [subject_token_type][crate::model::GenerateAwsClusterAgentTokenRequest::subject_token_type].
8802    ///
8803    /// # Example
8804    /// ```ignore,no_run
8805    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8806    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_subject_token_type("example");
8807    /// ```
8808    pub fn set_subject_token_type<T: std::convert::Into<std::string::String>>(
8809        mut self,
8810        v: T,
8811    ) -> Self {
8812        self.subject_token_type = v.into();
8813        self
8814    }
8815
8816    /// Sets the value of [version][crate::model::GenerateAwsClusterAgentTokenRequest::version].
8817    ///
8818    /// # Example
8819    /// ```ignore,no_run
8820    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8821    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_version("example");
8822    /// ```
8823    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8824        self.version = v.into();
8825        self
8826    }
8827
8828    /// Sets the value of [node_pool_id][crate::model::GenerateAwsClusterAgentTokenRequest::node_pool_id].
8829    ///
8830    /// # Example
8831    /// ```ignore,no_run
8832    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8833    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_node_pool_id("example");
8834    /// ```
8835    pub fn set_node_pool_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8836        self.node_pool_id = v.into();
8837        self
8838    }
8839
8840    /// Sets the value of [grant_type][crate::model::GenerateAwsClusterAgentTokenRequest::grant_type].
8841    ///
8842    /// # Example
8843    /// ```ignore,no_run
8844    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8845    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_grant_type("example");
8846    /// ```
8847    pub fn set_grant_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8848        self.grant_type = v.into();
8849        self
8850    }
8851
8852    /// Sets the value of [audience][crate::model::GenerateAwsClusterAgentTokenRequest::audience].
8853    ///
8854    /// # Example
8855    /// ```ignore,no_run
8856    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8857    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_audience("example");
8858    /// ```
8859    pub fn set_audience<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8860        self.audience = v.into();
8861        self
8862    }
8863
8864    /// Sets the value of [scope][crate::model::GenerateAwsClusterAgentTokenRequest::scope].
8865    ///
8866    /// # Example
8867    /// ```ignore,no_run
8868    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8869    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_scope("example");
8870    /// ```
8871    pub fn set_scope<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8872        self.scope = v.into();
8873        self
8874    }
8875
8876    /// Sets the value of [requested_token_type][crate::model::GenerateAwsClusterAgentTokenRequest::requested_token_type].
8877    ///
8878    /// # Example
8879    /// ```ignore,no_run
8880    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8881    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_requested_token_type("example");
8882    /// ```
8883    pub fn set_requested_token_type<T: std::convert::Into<std::string::String>>(
8884        mut self,
8885        v: T,
8886    ) -> Self {
8887        self.requested_token_type = v.into();
8888        self
8889    }
8890
8891    /// Sets the value of [options][crate::model::GenerateAwsClusterAgentTokenRequest::options].
8892    ///
8893    /// # Example
8894    /// ```ignore,no_run
8895    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenRequest;
8896    /// let x = GenerateAwsClusterAgentTokenRequest::new().set_options("example");
8897    /// ```
8898    pub fn set_options<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8899        self.options = v.into();
8900        self
8901    }
8902}
8903
8904impl wkt::message::Message for GenerateAwsClusterAgentTokenRequest {
8905    fn typename() -> &'static str {
8906        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAwsClusterAgentTokenRequest"
8907    }
8908}
8909
8910#[derive(Clone, Default, PartialEq)]
8911#[non_exhaustive]
8912#[deprecated]
8913pub struct GenerateAwsClusterAgentTokenResponse {
8914    pub access_token: std::string::String,
8915
8916    pub expires_in: i32,
8917
8918    pub token_type: std::string::String,
8919
8920    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
8921}
8922
8923impl GenerateAwsClusterAgentTokenResponse {
8924    pub fn new() -> Self {
8925        std::default::Default::default()
8926    }
8927
8928    /// Sets the value of [access_token][crate::model::GenerateAwsClusterAgentTokenResponse::access_token].
8929    ///
8930    /// # Example
8931    /// ```ignore,no_run
8932    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenResponse;
8933    /// let x = GenerateAwsClusterAgentTokenResponse::new().set_access_token("example");
8934    /// ```
8935    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8936        self.access_token = v.into();
8937        self
8938    }
8939
8940    /// Sets the value of [expires_in][crate::model::GenerateAwsClusterAgentTokenResponse::expires_in].
8941    ///
8942    /// # Example
8943    /// ```ignore,no_run
8944    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenResponse;
8945    /// let x = GenerateAwsClusterAgentTokenResponse::new().set_expires_in(42);
8946    /// ```
8947    pub fn set_expires_in<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
8948        self.expires_in = v.into();
8949        self
8950    }
8951
8952    /// Sets the value of [token_type][crate::model::GenerateAwsClusterAgentTokenResponse::token_type].
8953    ///
8954    /// # Example
8955    /// ```ignore,no_run
8956    /// # use google_cloud_gkemulticloud_v1::model::GenerateAwsClusterAgentTokenResponse;
8957    /// let x = GenerateAwsClusterAgentTokenResponse::new().set_token_type("example");
8958    /// ```
8959    pub fn set_token_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
8960        self.token_type = v.into();
8961        self
8962    }
8963}
8964
8965impl wkt::message::Message for GenerateAwsClusterAgentTokenResponse {
8966    fn typename() -> &'static str {
8967        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAwsClusterAgentTokenResponse"
8968    }
8969}
8970
8971/// An Anthos cluster running on Azure.
8972#[derive(Clone, Default, PartialEq)]
8973#[non_exhaustive]
8974#[deprecated]
8975pub struct AzureCluster {
8976    /// The name of this resource.
8977    ///
8978    /// Cluster names are formatted as
8979    /// `projects/<project-number>/locations/<region>/azureClusters/<cluster-id>`.
8980    ///
8981    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
8982    /// for more details on Google Cloud Platform resource names.
8983    pub name: std::string::String,
8984
8985    /// Optional. A human readable description of this cluster.
8986    /// Cannot be longer than 255 UTF-8 encoded bytes.
8987    pub description: std::string::String,
8988
8989    /// Required. The Azure region where the cluster runs.
8990    ///
8991    /// Each Google Cloud region supports a subset of nearby Azure regions.
8992    /// You can call
8993    /// [GetAzureServerConfig][google.cloud.gkemulticloud.v1.AzureClusters.GetAzureServerConfig]
8994    /// to list all supported Azure regions within a given Google Cloud region.
8995    ///
8996    /// [google.cloud.gkemulticloud.v1.AzureClusters.GetAzureServerConfig]: crate::client::AzureClusters::get_azure_server_config
8997    pub azure_region: std::string::String,
8998
8999    /// Required. The ARM ID of the resource group where the cluster resources are
9000    /// deployed. For example:
9001    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>`
9002    pub resource_group_id: std::string::String,
9003
9004    /// Optional. Name of the
9005    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] that contains
9006    /// authentication configuration for how the Anthos Multi-Cloud API connects to
9007    /// Azure APIs.
9008    ///
9009    /// Either azure_client or azure_services_authentication should be provided.
9010    ///
9011    /// The `AzureClient` resource must reside on the same Google Cloud Platform
9012    /// project and region as the `AzureCluster`.
9013    ///
9014    /// `AzureClient` names are formatted as
9015    /// `projects/<project-number>/locations/<region>/azureClients/<client-id>`.
9016    ///
9017    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
9018    /// for more details on Google Cloud resource names.
9019    ///
9020    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
9021    pub azure_client: std::string::String,
9022
9023    /// Required. Cluster-wide networking configuration.
9024    pub networking: std::option::Option<crate::model::AzureClusterNetworking>,
9025
9026    /// Required. Configuration related to the cluster control plane.
9027    pub control_plane: std::option::Option<crate::model::AzureControlPlane>,
9028
9029    /// Required. Configuration related to the cluster RBAC settings.
9030    pub authorization: std::option::Option<crate::model::AzureAuthorization>,
9031
9032    /// Optional. Authentication configuration for management of Azure resources.
9033    ///
9034    /// Either azure_client or azure_services_authentication should be provided.
9035    pub azure_services_authentication:
9036        std::option::Option<crate::model::AzureServicesAuthentication>,
9037
9038    /// Output only. The current state of the cluster.
9039    pub state: crate::model::azure_cluster::State,
9040
9041    /// Output only. The endpoint of the cluster's API server.
9042    pub endpoint: std::string::String,
9043
9044    /// Output only. A globally unique identifier for the cluster.
9045    pub uid: std::string::String,
9046
9047    /// Output only. If set, there are currently changes in flight to the cluster.
9048    pub reconciling: bool,
9049
9050    /// Output only. The time at which this cluster was created.
9051    pub create_time: std::option::Option<wkt::Timestamp>,
9052
9053    /// Output only. The time at which this cluster was last updated.
9054    pub update_time: std::option::Option<wkt::Timestamp>,
9055
9056    /// Allows clients to perform consistent read-modify-writes
9057    /// through optimistic concurrency control.
9058    ///
9059    /// Can be sent on update and delete requests to ensure the
9060    /// client has an up-to-date value before proceeding.
9061    pub etag: std::string::String,
9062
9063    /// Optional. Annotations on the cluster.
9064    ///
9065    /// This field has the same restrictions as Kubernetes annotations.
9066    /// The total size of all keys and values combined is limited to 256k.
9067    /// Keys can have 2 segments: prefix (optional) and name (required),
9068    /// separated by a slash (/).
9069    /// Prefix must be a DNS subdomain.
9070    /// Name must be 63 characters or less, begin and end with alphanumerics,
9071    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
9072    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
9073
9074    /// Output only. Workload Identity settings.
9075    pub workload_identity_config: std::option::Option<crate::model::WorkloadIdentityConfig>,
9076
9077    /// Output only. PEM encoded x509 certificate of the cluster root of trust.
9078    pub cluster_ca_certificate: std::string::String,
9079
9080    /// Required. Fleet configuration.
9081    pub fleet: std::option::Option<crate::model::Fleet>,
9082
9083    /// Output only. Managed Azure resources for this cluster.
9084    pub managed_resources: std::option::Option<crate::model::AzureClusterResources>,
9085
9086    /// Optional. Logging configuration for this cluster.
9087    pub logging_config: std::option::Option<crate::model::LoggingConfig>,
9088
9089    /// Output only. A set of errors found in the cluster.
9090    pub errors: std::vec::Vec<crate::model::AzureClusterError>,
9091
9092    /// Optional. Monitoring configuration for this cluster.
9093    pub monitoring_config: std::option::Option<crate::model::MonitoringConfig>,
9094
9095    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9096}
9097
9098impl AzureCluster {
9099    pub fn new() -> Self {
9100        std::default::Default::default()
9101    }
9102
9103    /// Sets the value of [name][crate::model::AzureCluster::name].
9104    ///
9105    /// # Example
9106    /// ```ignore,no_run
9107    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9108    /// let x = AzureCluster::new().set_name("example");
9109    /// ```
9110    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9111        self.name = v.into();
9112        self
9113    }
9114
9115    /// Sets the value of [description][crate::model::AzureCluster::description].
9116    ///
9117    /// # Example
9118    /// ```ignore,no_run
9119    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9120    /// let x = AzureCluster::new().set_description("example");
9121    /// ```
9122    pub fn set_description<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9123        self.description = v.into();
9124        self
9125    }
9126
9127    /// Sets the value of [azure_region][crate::model::AzureCluster::azure_region].
9128    ///
9129    /// # Example
9130    /// ```ignore,no_run
9131    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9132    /// let x = AzureCluster::new().set_azure_region("example");
9133    /// ```
9134    pub fn set_azure_region<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9135        self.azure_region = v.into();
9136        self
9137    }
9138
9139    /// Sets the value of [resource_group_id][crate::model::AzureCluster::resource_group_id].
9140    ///
9141    /// # Example
9142    /// ```ignore,no_run
9143    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9144    /// let x = AzureCluster::new().set_resource_group_id("example");
9145    /// ```
9146    pub fn set_resource_group_id<T: std::convert::Into<std::string::String>>(
9147        mut self,
9148        v: T,
9149    ) -> Self {
9150        self.resource_group_id = v.into();
9151        self
9152    }
9153
9154    /// Sets the value of [azure_client][crate::model::AzureCluster::azure_client].
9155    ///
9156    /// # Example
9157    /// ```ignore,no_run
9158    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9159    /// let x = AzureCluster::new().set_azure_client("example");
9160    /// ```
9161    pub fn set_azure_client<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9162        self.azure_client = v.into();
9163        self
9164    }
9165
9166    /// Sets the value of [networking][crate::model::AzureCluster::networking].
9167    ///
9168    /// # Example
9169    /// ```ignore,no_run
9170    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9171    /// use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9172    /// let x = AzureCluster::new().set_networking(AzureClusterNetworking::default()/* use setters */);
9173    /// ```
9174    pub fn set_networking<T>(mut self, v: T) -> Self
9175    where
9176        T: std::convert::Into<crate::model::AzureClusterNetworking>,
9177    {
9178        self.networking = std::option::Option::Some(v.into());
9179        self
9180    }
9181
9182    /// Sets or clears the value of [networking][crate::model::AzureCluster::networking].
9183    ///
9184    /// # Example
9185    /// ```ignore,no_run
9186    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9187    /// use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9188    /// let x = AzureCluster::new().set_or_clear_networking(Some(AzureClusterNetworking::default()/* use setters */));
9189    /// let x = AzureCluster::new().set_or_clear_networking(None::<AzureClusterNetworking>);
9190    /// ```
9191    pub fn set_or_clear_networking<T>(mut self, v: std::option::Option<T>) -> Self
9192    where
9193        T: std::convert::Into<crate::model::AzureClusterNetworking>,
9194    {
9195        self.networking = v.map(|x| x.into());
9196        self
9197    }
9198
9199    /// Sets the value of [control_plane][crate::model::AzureCluster::control_plane].
9200    ///
9201    /// # Example
9202    /// ```ignore,no_run
9203    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9204    /// use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
9205    /// let x = AzureCluster::new().set_control_plane(AzureControlPlane::default()/* use setters */);
9206    /// ```
9207    pub fn set_control_plane<T>(mut self, v: T) -> Self
9208    where
9209        T: std::convert::Into<crate::model::AzureControlPlane>,
9210    {
9211        self.control_plane = std::option::Option::Some(v.into());
9212        self
9213    }
9214
9215    /// Sets or clears the value of [control_plane][crate::model::AzureCluster::control_plane].
9216    ///
9217    /// # Example
9218    /// ```ignore,no_run
9219    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9220    /// use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
9221    /// let x = AzureCluster::new().set_or_clear_control_plane(Some(AzureControlPlane::default()/* use setters */));
9222    /// let x = AzureCluster::new().set_or_clear_control_plane(None::<AzureControlPlane>);
9223    /// ```
9224    pub fn set_or_clear_control_plane<T>(mut self, v: std::option::Option<T>) -> Self
9225    where
9226        T: std::convert::Into<crate::model::AzureControlPlane>,
9227    {
9228        self.control_plane = v.map(|x| x.into());
9229        self
9230    }
9231
9232    /// Sets the value of [authorization][crate::model::AzureCluster::authorization].
9233    ///
9234    /// # Example
9235    /// ```ignore,no_run
9236    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9237    /// use google_cloud_gkemulticloud_v1::model::AzureAuthorization;
9238    /// let x = AzureCluster::new().set_authorization(AzureAuthorization::default()/* use setters */);
9239    /// ```
9240    pub fn set_authorization<T>(mut self, v: T) -> Self
9241    where
9242        T: std::convert::Into<crate::model::AzureAuthorization>,
9243    {
9244        self.authorization = std::option::Option::Some(v.into());
9245        self
9246    }
9247
9248    /// Sets or clears the value of [authorization][crate::model::AzureCluster::authorization].
9249    ///
9250    /// # Example
9251    /// ```ignore,no_run
9252    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9253    /// use google_cloud_gkemulticloud_v1::model::AzureAuthorization;
9254    /// let x = AzureCluster::new().set_or_clear_authorization(Some(AzureAuthorization::default()/* use setters */));
9255    /// let x = AzureCluster::new().set_or_clear_authorization(None::<AzureAuthorization>);
9256    /// ```
9257    pub fn set_or_clear_authorization<T>(mut self, v: std::option::Option<T>) -> Self
9258    where
9259        T: std::convert::Into<crate::model::AzureAuthorization>,
9260    {
9261        self.authorization = v.map(|x| x.into());
9262        self
9263    }
9264
9265    /// Sets the value of [azure_services_authentication][crate::model::AzureCluster::azure_services_authentication].
9266    ///
9267    /// # Example
9268    /// ```ignore,no_run
9269    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9270    /// use google_cloud_gkemulticloud_v1::model::AzureServicesAuthentication;
9271    /// let x = AzureCluster::new().set_azure_services_authentication(AzureServicesAuthentication::default()/* use setters */);
9272    /// ```
9273    pub fn set_azure_services_authentication<T>(mut self, v: T) -> Self
9274    where
9275        T: std::convert::Into<crate::model::AzureServicesAuthentication>,
9276    {
9277        self.azure_services_authentication = std::option::Option::Some(v.into());
9278        self
9279    }
9280
9281    /// Sets or clears the value of [azure_services_authentication][crate::model::AzureCluster::azure_services_authentication].
9282    ///
9283    /// # Example
9284    /// ```ignore,no_run
9285    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9286    /// use google_cloud_gkemulticloud_v1::model::AzureServicesAuthentication;
9287    /// let x = AzureCluster::new().set_or_clear_azure_services_authentication(Some(AzureServicesAuthentication::default()/* use setters */));
9288    /// let x = AzureCluster::new().set_or_clear_azure_services_authentication(None::<AzureServicesAuthentication>);
9289    /// ```
9290    pub fn set_or_clear_azure_services_authentication<T>(
9291        mut self,
9292        v: std::option::Option<T>,
9293    ) -> Self
9294    where
9295        T: std::convert::Into<crate::model::AzureServicesAuthentication>,
9296    {
9297        self.azure_services_authentication = v.map(|x| x.into());
9298        self
9299    }
9300
9301    /// Sets the value of [state][crate::model::AzureCluster::state].
9302    ///
9303    /// # Example
9304    /// ```ignore,no_run
9305    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9306    /// use google_cloud_gkemulticloud_v1::model::azure_cluster::State;
9307    /// let x0 = AzureCluster::new().set_state(State::Provisioning);
9308    /// let x1 = AzureCluster::new().set_state(State::Running);
9309    /// let x2 = AzureCluster::new().set_state(State::Reconciling);
9310    /// ```
9311    pub fn set_state<T: std::convert::Into<crate::model::azure_cluster::State>>(
9312        mut self,
9313        v: T,
9314    ) -> Self {
9315        self.state = v.into();
9316        self
9317    }
9318
9319    /// Sets the value of [endpoint][crate::model::AzureCluster::endpoint].
9320    ///
9321    /// # Example
9322    /// ```ignore,no_run
9323    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9324    /// let x = AzureCluster::new().set_endpoint("example");
9325    /// ```
9326    pub fn set_endpoint<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9327        self.endpoint = v.into();
9328        self
9329    }
9330
9331    /// Sets the value of [uid][crate::model::AzureCluster::uid].
9332    ///
9333    /// # Example
9334    /// ```ignore,no_run
9335    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9336    /// let x = AzureCluster::new().set_uid("example");
9337    /// ```
9338    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9339        self.uid = v.into();
9340        self
9341    }
9342
9343    /// Sets the value of [reconciling][crate::model::AzureCluster::reconciling].
9344    ///
9345    /// # Example
9346    /// ```ignore,no_run
9347    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9348    /// let x = AzureCluster::new().set_reconciling(true);
9349    /// ```
9350    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
9351        self.reconciling = v.into();
9352        self
9353    }
9354
9355    /// Sets the value of [create_time][crate::model::AzureCluster::create_time].
9356    ///
9357    /// # Example
9358    /// ```ignore,no_run
9359    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9360    /// use wkt::Timestamp;
9361    /// let x = AzureCluster::new().set_create_time(Timestamp::default()/* use setters */);
9362    /// ```
9363    pub fn set_create_time<T>(mut self, v: T) -> Self
9364    where
9365        T: std::convert::Into<wkt::Timestamp>,
9366    {
9367        self.create_time = std::option::Option::Some(v.into());
9368        self
9369    }
9370
9371    /// Sets or clears the value of [create_time][crate::model::AzureCluster::create_time].
9372    ///
9373    /// # Example
9374    /// ```ignore,no_run
9375    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9376    /// use wkt::Timestamp;
9377    /// let x = AzureCluster::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
9378    /// let x = AzureCluster::new().set_or_clear_create_time(None::<Timestamp>);
9379    /// ```
9380    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
9381    where
9382        T: std::convert::Into<wkt::Timestamp>,
9383    {
9384        self.create_time = v.map(|x| x.into());
9385        self
9386    }
9387
9388    /// Sets the value of [update_time][crate::model::AzureCluster::update_time].
9389    ///
9390    /// # Example
9391    /// ```ignore,no_run
9392    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9393    /// use wkt::Timestamp;
9394    /// let x = AzureCluster::new().set_update_time(Timestamp::default()/* use setters */);
9395    /// ```
9396    pub fn set_update_time<T>(mut self, v: T) -> Self
9397    where
9398        T: std::convert::Into<wkt::Timestamp>,
9399    {
9400        self.update_time = std::option::Option::Some(v.into());
9401        self
9402    }
9403
9404    /// Sets or clears the value of [update_time][crate::model::AzureCluster::update_time].
9405    ///
9406    /// # Example
9407    /// ```ignore,no_run
9408    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9409    /// use wkt::Timestamp;
9410    /// let x = AzureCluster::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
9411    /// let x = AzureCluster::new().set_or_clear_update_time(None::<Timestamp>);
9412    /// ```
9413    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
9414    where
9415        T: std::convert::Into<wkt::Timestamp>,
9416    {
9417        self.update_time = v.map(|x| x.into());
9418        self
9419    }
9420
9421    /// Sets the value of [etag][crate::model::AzureCluster::etag].
9422    ///
9423    /// # Example
9424    /// ```ignore,no_run
9425    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9426    /// let x = AzureCluster::new().set_etag("example");
9427    /// ```
9428    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
9429        self.etag = v.into();
9430        self
9431    }
9432
9433    /// Sets the value of [annotations][crate::model::AzureCluster::annotations].
9434    ///
9435    /// # Example
9436    /// ```ignore,no_run
9437    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9438    /// let x = AzureCluster::new().set_annotations([
9439    ///     ("key0", "abc"),
9440    ///     ("key1", "xyz"),
9441    /// ]);
9442    /// ```
9443    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
9444    where
9445        T: std::iter::IntoIterator<Item = (K, V)>,
9446        K: std::convert::Into<std::string::String>,
9447        V: std::convert::Into<std::string::String>,
9448    {
9449        use std::iter::Iterator;
9450        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
9451        self
9452    }
9453
9454    /// Sets the value of [workload_identity_config][crate::model::AzureCluster::workload_identity_config].
9455    ///
9456    /// # Example
9457    /// ```ignore,no_run
9458    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9459    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
9460    /// let x = AzureCluster::new().set_workload_identity_config(WorkloadIdentityConfig::default()/* use setters */);
9461    /// ```
9462    pub fn set_workload_identity_config<T>(mut self, v: T) -> Self
9463    where
9464        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
9465    {
9466        self.workload_identity_config = std::option::Option::Some(v.into());
9467        self
9468    }
9469
9470    /// Sets or clears the value of [workload_identity_config][crate::model::AzureCluster::workload_identity_config].
9471    ///
9472    /// # Example
9473    /// ```ignore,no_run
9474    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9475    /// use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
9476    /// let x = AzureCluster::new().set_or_clear_workload_identity_config(Some(WorkloadIdentityConfig::default()/* use setters */));
9477    /// let x = AzureCluster::new().set_or_clear_workload_identity_config(None::<WorkloadIdentityConfig>);
9478    /// ```
9479    pub fn set_or_clear_workload_identity_config<T>(mut self, v: std::option::Option<T>) -> Self
9480    where
9481        T: std::convert::Into<crate::model::WorkloadIdentityConfig>,
9482    {
9483        self.workload_identity_config = v.map(|x| x.into());
9484        self
9485    }
9486
9487    /// Sets the value of [cluster_ca_certificate][crate::model::AzureCluster::cluster_ca_certificate].
9488    ///
9489    /// # Example
9490    /// ```ignore,no_run
9491    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9492    /// let x = AzureCluster::new().set_cluster_ca_certificate("example");
9493    /// ```
9494    pub fn set_cluster_ca_certificate<T: std::convert::Into<std::string::String>>(
9495        mut self,
9496        v: T,
9497    ) -> Self {
9498        self.cluster_ca_certificate = v.into();
9499        self
9500    }
9501
9502    /// Sets the value of [fleet][crate::model::AzureCluster::fleet].
9503    ///
9504    /// # Example
9505    /// ```ignore,no_run
9506    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9507    /// use google_cloud_gkemulticloud_v1::model::Fleet;
9508    /// let x = AzureCluster::new().set_fleet(Fleet::default()/* use setters */);
9509    /// ```
9510    pub fn set_fleet<T>(mut self, v: T) -> Self
9511    where
9512        T: std::convert::Into<crate::model::Fleet>,
9513    {
9514        self.fleet = std::option::Option::Some(v.into());
9515        self
9516    }
9517
9518    /// Sets or clears the value of [fleet][crate::model::AzureCluster::fleet].
9519    ///
9520    /// # Example
9521    /// ```ignore,no_run
9522    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9523    /// use google_cloud_gkemulticloud_v1::model::Fleet;
9524    /// let x = AzureCluster::new().set_or_clear_fleet(Some(Fleet::default()/* use setters */));
9525    /// let x = AzureCluster::new().set_or_clear_fleet(None::<Fleet>);
9526    /// ```
9527    pub fn set_or_clear_fleet<T>(mut self, v: std::option::Option<T>) -> Self
9528    where
9529        T: std::convert::Into<crate::model::Fleet>,
9530    {
9531        self.fleet = v.map(|x| x.into());
9532        self
9533    }
9534
9535    /// Sets the value of [managed_resources][crate::model::AzureCluster::managed_resources].
9536    ///
9537    /// # Example
9538    /// ```ignore,no_run
9539    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9540    /// use google_cloud_gkemulticloud_v1::model::AzureClusterResources;
9541    /// let x = AzureCluster::new().set_managed_resources(AzureClusterResources::default()/* use setters */);
9542    /// ```
9543    pub fn set_managed_resources<T>(mut self, v: T) -> Self
9544    where
9545        T: std::convert::Into<crate::model::AzureClusterResources>,
9546    {
9547        self.managed_resources = std::option::Option::Some(v.into());
9548        self
9549    }
9550
9551    /// Sets or clears the value of [managed_resources][crate::model::AzureCluster::managed_resources].
9552    ///
9553    /// # Example
9554    /// ```ignore,no_run
9555    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9556    /// use google_cloud_gkemulticloud_v1::model::AzureClusterResources;
9557    /// let x = AzureCluster::new().set_or_clear_managed_resources(Some(AzureClusterResources::default()/* use setters */));
9558    /// let x = AzureCluster::new().set_or_clear_managed_resources(None::<AzureClusterResources>);
9559    /// ```
9560    pub fn set_or_clear_managed_resources<T>(mut self, v: std::option::Option<T>) -> Self
9561    where
9562        T: std::convert::Into<crate::model::AzureClusterResources>,
9563    {
9564        self.managed_resources = v.map(|x| x.into());
9565        self
9566    }
9567
9568    /// Sets the value of [logging_config][crate::model::AzureCluster::logging_config].
9569    ///
9570    /// # Example
9571    /// ```ignore,no_run
9572    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9573    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
9574    /// let x = AzureCluster::new().set_logging_config(LoggingConfig::default()/* use setters */);
9575    /// ```
9576    pub fn set_logging_config<T>(mut self, v: T) -> Self
9577    where
9578        T: std::convert::Into<crate::model::LoggingConfig>,
9579    {
9580        self.logging_config = std::option::Option::Some(v.into());
9581        self
9582    }
9583
9584    /// Sets or clears the value of [logging_config][crate::model::AzureCluster::logging_config].
9585    ///
9586    /// # Example
9587    /// ```ignore,no_run
9588    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9589    /// use google_cloud_gkemulticloud_v1::model::LoggingConfig;
9590    /// let x = AzureCluster::new().set_or_clear_logging_config(Some(LoggingConfig::default()/* use setters */));
9591    /// let x = AzureCluster::new().set_or_clear_logging_config(None::<LoggingConfig>);
9592    /// ```
9593    pub fn set_or_clear_logging_config<T>(mut self, v: std::option::Option<T>) -> Self
9594    where
9595        T: std::convert::Into<crate::model::LoggingConfig>,
9596    {
9597        self.logging_config = v.map(|x| x.into());
9598        self
9599    }
9600
9601    /// Sets the value of [errors][crate::model::AzureCluster::errors].
9602    ///
9603    /// # Example
9604    /// ```ignore,no_run
9605    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9606    /// use google_cloud_gkemulticloud_v1::model::AzureClusterError;
9607    /// let x = AzureCluster::new()
9608    ///     .set_errors([
9609    ///         AzureClusterError::default()/* use setters */,
9610    ///         AzureClusterError::default()/* use (different) setters */,
9611    ///     ]);
9612    /// ```
9613    pub fn set_errors<T, V>(mut self, v: T) -> Self
9614    where
9615        T: std::iter::IntoIterator<Item = V>,
9616        V: std::convert::Into<crate::model::AzureClusterError>,
9617    {
9618        use std::iter::Iterator;
9619        self.errors = v.into_iter().map(|i| i.into()).collect();
9620        self
9621    }
9622
9623    /// Sets the value of [monitoring_config][crate::model::AzureCluster::monitoring_config].
9624    ///
9625    /// # Example
9626    /// ```ignore,no_run
9627    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9628    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
9629    /// let x = AzureCluster::new().set_monitoring_config(MonitoringConfig::default()/* use setters */);
9630    /// ```
9631    pub fn set_monitoring_config<T>(mut self, v: T) -> Self
9632    where
9633        T: std::convert::Into<crate::model::MonitoringConfig>,
9634    {
9635        self.monitoring_config = std::option::Option::Some(v.into());
9636        self
9637    }
9638
9639    /// Sets or clears the value of [monitoring_config][crate::model::AzureCluster::monitoring_config].
9640    ///
9641    /// # Example
9642    /// ```ignore,no_run
9643    /// # use google_cloud_gkemulticloud_v1::model::AzureCluster;
9644    /// use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
9645    /// let x = AzureCluster::new().set_or_clear_monitoring_config(Some(MonitoringConfig::default()/* use setters */));
9646    /// let x = AzureCluster::new().set_or_clear_monitoring_config(None::<MonitoringConfig>);
9647    /// ```
9648    pub fn set_or_clear_monitoring_config<T>(mut self, v: std::option::Option<T>) -> Self
9649    where
9650        T: std::convert::Into<crate::model::MonitoringConfig>,
9651    {
9652        self.monitoring_config = v.map(|x| x.into());
9653        self
9654    }
9655}
9656
9657impl wkt::message::Message for AzureCluster {
9658    fn typename() -> &'static str {
9659        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureCluster"
9660    }
9661}
9662
9663/// Defines additional types related to [AzureCluster].
9664pub mod azure_cluster {
9665    #[allow(unused_imports)]
9666    use super::*;
9667
9668    /// The lifecycle state of the cluster.
9669    ///
9670    /// # Working with unknown values
9671    ///
9672    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
9673    /// additional enum variants at any time. Adding new variants is not considered
9674    /// a breaking change. Applications should write their code in anticipation of:
9675    ///
9676    /// - New values appearing in future releases of the client library, **and**
9677    /// - New values received dynamically, without application changes.
9678    ///
9679    /// Please consult the [Working with enums] section in the user guide for some
9680    /// guidelines.
9681    ///
9682    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
9683    #[derive(Clone, Debug, PartialEq)]
9684    #[non_exhaustive]
9685    pub enum State {
9686        /// Not set.
9687        Unspecified,
9688        /// The PROVISIONING state indicates the cluster is being created.
9689        Provisioning,
9690        /// The RUNNING state indicates the cluster has been created and is fully
9691        /// usable.
9692        Running,
9693        /// The RECONCILING state indicates that some work is actively being done on
9694        /// the cluster, such as upgrading the control plane replicas.
9695        Reconciling,
9696        /// The STOPPING state indicates the cluster is being deleted.
9697        Stopping,
9698        /// The ERROR state indicates the cluster is in a broken unrecoverable
9699        /// state.
9700        Error,
9701        /// The DEGRADED state indicates the cluster requires user action to
9702        /// restore full functionality.
9703        Degraded,
9704        /// If set, the enum was initialized with an unknown value.
9705        ///
9706        /// Applications can examine the value using [State::value] or
9707        /// [State::name].
9708        UnknownValue(state::UnknownValue),
9709    }
9710
9711    #[doc(hidden)]
9712    pub mod state {
9713        #[allow(unused_imports)]
9714        use super::*;
9715        #[derive(Clone, Debug, PartialEq)]
9716        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
9717    }
9718
9719    impl State {
9720        /// Gets the enum value.
9721        ///
9722        /// Returns `None` if the enum contains an unknown value deserialized from
9723        /// the string representation of enums.
9724        pub fn value(&self) -> std::option::Option<i32> {
9725            match self {
9726                Self::Unspecified => std::option::Option::Some(0),
9727                Self::Provisioning => std::option::Option::Some(1),
9728                Self::Running => std::option::Option::Some(2),
9729                Self::Reconciling => std::option::Option::Some(3),
9730                Self::Stopping => std::option::Option::Some(4),
9731                Self::Error => std::option::Option::Some(5),
9732                Self::Degraded => std::option::Option::Some(6),
9733                Self::UnknownValue(u) => u.0.value(),
9734            }
9735        }
9736
9737        /// Gets the enum value as a string.
9738        ///
9739        /// Returns `None` if the enum contains an unknown value deserialized from
9740        /// the integer representation of enums.
9741        pub fn name(&self) -> std::option::Option<&str> {
9742            match self {
9743                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
9744                Self::Provisioning => std::option::Option::Some("PROVISIONING"),
9745                Self::Running => std::option::Option::Some("RUNNING"),
9746                Self::Reconciling => std::option::Option::Some("RECONCILING"),
9747                Self::Stopping => std::option::Option::Some("STOPPING"),
9748                Self::Error => std::option::Option::Some("ERROR"),
9749                Self::Degraded => std::option::Option::Some("DEGRADED"),
9750                Self::UnknownValue(u) => u.0.name(),
9751            }
9752        }
9753    }
9754
9755    impl std::default::Default for State {
9756        fn default() -> Self {
9757            use std::convert::From;
9758            Self::from(0)
9759        }
9760    }
9761
9762    impl std::fmt::Display for State {
9763        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
9764            wkt::internal::display_enum(f, self.name(), self.value())
9765        }
9766    }
9767
9768    impl std::convert::From<i32> for State {
9769        fn from(value: i32) -> Self {
9770            match value {
9771                0 => Self::Unspecified,
9772                1 => Self::Provisioning,
9773                2 => Self::Running,
9774                3 => Self::Reconciling,
9775                4 => Self::Stopping,
9776                5 => Self::Error,
9777                6 => Self::Degraded,
9778                _ => Self::UnknownValue(state::UnknownValue(
9779                    wkt::internal::UnknownEnumValue::Integer(value),
9780                )),
9781            }
9782        }
9783    }
9784
9785    impl std::convert::From<&str> for State {
9786        fn from(value: &str) -> Self {
9787            use std::string::ToString;
9788            match value {
9789                "STATE_UNSPECIFIED" => Self::Unspecified,
9790                "PROVISIONING" => Self::Provisioning,
9791                "RUNNING" => Self::Running,
9792                "RECONCILING" => Self::Reconciling,
9793                "STOPPING" => Self::Stopping,
9794                "ERROR" => Self::Error,
9795                "DEGRADED" => Self::Degraded,
9796                _ => Self::UnknownValue(state::UnknownValue(
9797                    wkt::internal::UnknownEnumValue::String(value.to_string()),
9798                )),
9799            }
9800        }
9801    }
9802
9803    impl serde::ser::Serialize for State {
9804        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9805        where
9806            S: serde::Serializer,
9807        {
9808            match self {
9809                Self::Unspecified => serializer.serialize_i32(0),
9810                Self::Provisioning => serializer.serialize_i32(1),
9811                Self::Running => serializer.serialize_i32(2),
9812                Self::Reconciling => serializer.serialize_i32(3),
9813                Self::Stopping => serializer.serialize_i32(4),
9814                Self::Error => serializer.serialize_i32(5),
9815                Self::Degraded => serializer.serialize_i32(6),
9816                Self::UnknownValue(u) => u.0.serialize(serializer),
9817            }
9818        }
9819    }
9820
9821    impl<'de> serde::de::Deserialize<'de> for State {
9822        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9823        where
9824            D: serde::Deserializer<'de>,
9825        {
9826            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
9827                ".google.cloud.gkemulticloud.v1.AzureCluster.State",
9828            ))
9829        }
9830    }
9831}
9832
9833/// ClusterNetworking contains cluster-wide networking configuration.
9834#[derive(Clone, Default, PartialEq)]
9835#[non_exhaustive]
9836#[deprecated]
9837pub struct AzureClusterNetworking {
9838    /// Required. The Azure Resource Manager (ARM) ID of the VNet associated with
9839    /// your cluster.
9840    ///
9841    /// All components in the cluster (i.e. control plane and node pools) run on a
9842    /// single VNet.
9843    ///
9844    /// Example:
9845    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-id>/providers/Microsoft.Network/virtualNetworks/<vnet-id>`
9846    ///
9847    /// This field cannot be changed after creation.
9848    pub virtual_network_id: std::string::String,
9849
9850    /// Required. The IP address range of the pods in this cluster, in CIDR
9851    /// notation (e.g. `10.96.0.0/14`).
9852    ///
9853    /// All pods in the cluster get assigned a unique IPv4 address from these
9854    /// ranges. Only a single range is supported.
9855    ///
9856    /// This field cannot be changed after creation.
9857    pub pod_address_cidr_blocks: std::vec::Vec<std::string::String>,
9858
9859    /// Required. The IP address range for services in this cluster, in CIDR
9860    /// notation (e.g. `10.96.0.0/14`).
9861    ///
9862    /// All services in the cluster get assigned a unique IPv4 address from these
9863    /// ranges. Only a single range is supported.
9864    ///
9865    /// This field cannot be changed after creating a cluster.
9866    pub service_address_cidr_blocks: std::vec::Vec<std::string::String>,
9867
9868    /// Optional. The ARM ID of the subnet where Kubernetes private service type
9869    /// load balancers are deployed. When unspecified, it defaults to
9870    /// AzureControlPlane.subnet_id.
9871    ///
9872    /// Example:
9873    /// "/subscriptions/d00494d6-6f3c-4280-bbb2-899e163d1d30/resourceGroups/anthos_cluster_gkeust4/providers/Microsoft.Network/virtualNetworks/gke-vnet-gkeust4/subnets/subnetid456"
9874    pub service_load_balancer_subnet_id: std::string::String,
9875
9876    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
9877}
9878
9879impl AzureClusterNetworking {
9880    pub fn new() -> Self {
9881        std::default::Default::default()
9882    }
9883
9884    /// Sets the value of [virtual_network_id][crate::model::AzureClusterNetworking::virtual_network_id].
9885    ///
9886    /// # Example
9887    /// ```ignore,no_run
9888    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9889    /// let x = AzureClusterNetworking::new().set_virtual_network_id("example");
9890    /// ```
9891    pub fn set_virtual_network_id<T: std::convert::Into<std::string::String>>(
9892        mut self,
9893        v: T,
9894    ) -> Self {
9895        self.virtual_network_id = v.into();
9896        self
9897    }
9898
9899    /// Sets the value of [pod_address_cidr_blocks][crate::model::AzureClusterNetworking::pod_address_cidr_blocks].
9900    ///
9901    /// # Example
9902    /// ```ignore,no_run
9903    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9904    /// let x = AzureClusterNetworking::new().set_pod_address_cidr_blocks(["a", "b", "c"]);
9905    /// ```
9906    pub fn set_pod_address_cidr_blocks<T, V>(mut self, v: T) -> Self
9907    where
9908        T: std::iter::IntoIterator<Item = V>,
9909        V: std::convert::Into<std::string::String>,
9910    {
9911        use std::iter::Iterator;
9912        self.pod_address_cidr_blocks = v.into_iter().map(|i| i.into()).collect();
9913        self
9914    }
9915
9916    /// Sets the value of [service_address_cidr_blocks][crate::model::AzureClusterNetworking::service_address_cidr_blocks].
9917    ///
9918    /// # Example
9919    /// ```ignore,no_run
9920    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9921    /// let x = AzureClusterNetworking::new().set_service_address_cidr_blocks(["a", "b", "c"]);
9922    /// ```
9923    pub fn set_service_address_cidr_blocks<T, V>(mut self, v: T) -> Self
9924    where
9925        T: std::iter::IntoIterator<Item = V>,
9926        V: std::convert::Into<std::string::String>,
9927    {
9928        use std::iter::Iterator;
9929        self.service_address_cidr_blocks = v.into_iter().map(|i| i.into()).collect();
9930        self
9931    }
9932
9933    /// Sets the value of [service_load_balancer_subnet_id][crate::model::AzureClusterNetworking::service_load_balancer_subnet_id].
9934    ///
9935    /// # Example
9936    /// ```ignore,no_run
9937    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterNetworking;
9938    /// let x = AzureClusterNetworking::new().set_service_load_balancer_subnet_id("example");
9939    /// ```
9940    pub fn set_service_load_balancer_subnet_id<T: std::convert::Into<std::string::String>>(
9941        mut self,
9942        v: T,
9943    ) -> Self {
9944        self.service_load_balancer_subnet_id = v.into();
9945        self
9946    }
9947}
9948
9949impl wkt::message::Message for AzureClusterNetworking {
9950    fn typename() -> &'static str {
9951        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClusterNetworking"
9952    }
9953}
9954
9955/// AzureControlPlane represents the control plane configurations.
9956#[derive(Clone, Default, PartialEq)]
9957#[non_exhaustive]
9958#[deprecated]
9959pub struct AzureControlPlane {
9960    /// Required. The Kubernetes version to run on control plane replicas
9961    /// (e.g. `1.19.10-gke.1000`).
9962    ///
9963    /// You can list all supported versions on a given Google Cloud region by
9964    /// calling
9965    /// [GetAzureServerConfig][google.cloud.gkemulticloud.v1.AzureClusters.GetAzureServerConfig].
9966    ///
9967    /// [google.cloud.gkemulticloud.v1.AzureClusters.GetAzureServerConfig]: crate::client::AzureClusters::get_azure_server_config
9968    pub version: std::string::String,
9969
9970    /// Optional. The ARM ID of the default subnet for the control plane. The
9971    /// control plane VMs are deployed in this subnet, unless
9972    /// `AzureControlPlane.replica_placements` is specified. This subnet will also
9973    /// be used as default for `AzureControlPlane.endpoint_subnet_id` if
9974    /// `AzureControlPlane.endpoint_subnet_id` is not specified. Similarly it will
9975    /// be used as default for
9976    /// `AzureClusterNetworking.service_load_balancer_subnet_id`.
9977    ///
9978    /// Example:
9979    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-id>/providers/Microsoft.Network/virtualNetworks/<vnet-id>/subnets/default`.
9980    pub subnet_id: std::string::String,
9981
9982    /// Optional. The Azure VM size name. Example: `Standard_DS2_v2`.
9983    ///
9984    /// For available VM sizes, see
9985    /// <https://docs.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions>.
9986    ///
9987    /// When unspecified, it defaults to `Standard_DS2_v2`.
9988    pub vm_size: std::string::String,
9989
9990    /// Required. SSH configuration for how to access the underlying control plane
9991    /// machines.
9992    pub ssh_config: std::option::Option<crate::model::AzureSshConfig>,
9993
9994    /// Optional. Configuration related to the root volume provisioned for each
9995    /// control plane replica.
9996    ///
9997    /// When unspecified, it defaults to 32-GiB Azure Disk.
9998    pub root_volume: std::option::Option<crate::model::AzureDiskTemplate>,
9999
10000    /// Optional. Configuration related to the main volume provisioned for each
10001    /// control plane replica.
10002    /// The main volume is in charge of storing all of the cluster's etcd state.
10003    ///
10004    /// When unspecified, it defaults to a 8-GiB Azure Disk.
10005    pub main_volume: std::option::Option<crate::model::AzureDiskTemplate>,
10006
10007    /// Optional. Configuration related to application-layer secrets encryption.
10008    pub database_encryption: std::option::Option<crate::model::AzureDatabaseEncryption>,
10009
10010    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
10011    pub proxy_config: std::option::Option<crate::model::AzureProxyConfig>,
10012
10013    /// Optional. Configuration related to vm config encryption.
10014    pub config_encryption: std::option::Option<crate::model::AzureConfigEncryption>,
10015
10016    /// Optional. A set of tags to apply to all underlying control plane Azure
10017    /// resources.
10018    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
10019
10020    /// Optional. Configuration for where to place the control plane replicas.
10021    ///
10022    /// Up to three replica placement instances can be specified. If
10023    /// replica_placements is set, the replica placement instances will be applied
10024    /// to the three control plane replicas as evenly as possible.
10025    pub replica_placements: std::vec::Vec<crate::model::ReplicaPlacement>,
10026
10027    /// Optional. The ARM ID of the subnet where the control plane load balancer is
10028    /// deployed. When unspecified, it defaults to AzureControlPlane.subnet_id.
10029    ///
10030    /// Example:
10031    /// "/subscriptions/d00494d6-6f3c-4280-bbb2-899e163d1d30/resourceGroups/anthos_cluster_gkeust4/providers/Microsoft.Network/virtualNetworks/gke-vnet-gkeust4/subnets/subnetid123"
10032    pub endpoint_subnet_id: std::string::String,
10033
10034    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10035}
10036
10037impl AzureControlPlane {
10038    pub fn new() -> Self {
10039        std::default::Default::default()
10040    }
10041
10042    /// Sets the value of [version][crate::model::AzureControlPlane::version].
10043    ///
10044    /// # Example
10045    /// ```ignore,no_run
10046    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10047    /// let x = AzureControlPlane::new().set_version("example");
10048    /// ```
10049    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10050        self.version = v.into();
10051        self
10052    }
10053
10054    /// Sets the value of [subnet_id][crate::model::AzureControlPlane::subnet_id].
10055    ///
10056    /// # Example
10057    /// ```ignore,no_run
10058    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10059    /// let x = AzureControlPlane::new().set_subnet_id("example");
10060    /// ```
10061    pub fn set_subnet_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10062        self.subnet_id = v.into();
10063        self
10064    }
10065
10066    /// Sets the value of [vm_size][crate::model::AzureControlPlane::vm_size].
10067    ///
10068    /// # Example
10069    /// ```ignore,no_run
10070    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10071    /// let x = AzureControlPlane::new().set_vm_size("example");
10072    /// ```
10073    pub fn set_vm_size<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10074        self.vm_size = v.into();
10075        self
10076    }
10077
10078    /// Sets the value of [ssh_config][crate::model::AzureControlPlane::ssh_config].
10079    ///
10080    /// # Example
10081    /// ```ignore,no_run
10082    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10083    /// use google_cloud_gkemulticloud_v1::model::AzureSshConfig;
10084    /// let x = AzureControlPlane::new().set_ssh_config(AzureSshConfig::default()/* use setters */);
10085    /// ```
10086    pub fn set_ssh_config<T>(mut self, v: T) -> Self
10087    where
10088        T: std::convert::Into<crate::model::AzureSshConfig>,
10089    {
10090        self.ssh_config = std::option::Option::Some(v.into());
10091        self
10092    }
10093
10094    /// Sets or clears the value of [ssh_config][crate::model::AzureControlPlane::ssh_config].
10095    ///
10096    /// # Example
10097    /// ```ignore,no_run
10098    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10099    /// use google_cloud_gkemulticloud_v1::model::AzureSshConfig;
10100    /// let x = AzureControlPlane::new().set_or_clear_ssh_config(Some(AzureSshConfig::default()/* use setters */));
10101    /// let x = AzureControlPlane::new().set_or_clear_ssh_config(None::<AzureSshConfig>);
10102    /// ```
10103    pub fn set_or_clear_ssh_config<T>(mut self, v: std::option::Option<T>) -> Self
10104    where
10105        T: std::convert::Into<crate::model::AzureSshConfig>,
10106    {
10107        self.ssh_config = v.map(|x| x.into());
10108        self
10109    }
10110
10111    /// Sets the value of [root_volume][crate::model::AzureControlPlane::root_volume].
10112    ///
10113    /// # Example
10114    /// ```ignore,no_run
10115    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10116    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
10117    /// let x = AzureControlPlane::new().set_root_volume(AzureDiskTemplate::default()/* use setters */);
10118    /// ```
10119    pub fn set_root_volume<T>(mut self, v: T) -> Self
10120    where
10121        T: std::convert::Into<crate::model::AzureDiskTemplate>,
10122    {
10123        self.root_volume = std::option::Option::Some(v.into());
10124        self
10125    }
10126
10127    /// Sets or clears the value of [root_volume][crate::model::AzureControlPlane::root_volume].
10128    ///
10129    /// # Example
10130    /// ```ignore,no_run
10131    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10132    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
10133    /// let x = AzureControlPlane::new().set_or_clear_root_volume(Some(AzureDiskTemplate::default()/* use setters */));
10134    /// let x = AzureControlPlane::new().set_or_clear_root_volume(None::<AzureDiskTemplate>);
10135    /// ```
10136    pub fn set_or_clear_root_volume<T>(mut self, v: std::option::Option<T>) -> Self
10137    where
10138        T: std::convert::Into<crate::model::AzureDiskTemplate>,
10139    {
10140        self.root_volume = v.map(|x| x.into());
10141        self
10142    }
10143
10144    /// Sets the value of [main_volume][crate::model::AzureControlPlane::main_volume].
10145    ///
10146    /// # Example
10147    /// ```ignore,no_run
10148    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10149    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
10150    /// let x = AzureControlPlane::new().set_main_volume(AzureDiskTemplate::default()/* use setters */);
10151    /// ```
10152    pub fn set_main_volume<T>(mut self, v: T) -> Self
10153    where
10154        T: std::convert::Into<crate::model::AzureDiskTemplate>,
10155    {
10156        self.main_volume = std::option::Option::Some(v.into());
10157        self
10158    }
10159
10160    /// Sets or clears the value of [main_volume][crate::model::AzureControlPlane::main_volume].
10161    ///
10162    /// # Example
10163    /// ```ignore,no_run
10164    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10165    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
10166    /// let x = AzureControlPlane::new().set_or_clear_main_volume(Some(AzureDiskTemplate::default()/* use setters */));
10167    /// let x = AzureControlPlane::new().set_or_clear_main_volume(None::<AzureDiskTemplate>);
10168    /// ```
10169    pub fn set_or_clear_main_volume<T>(mut self, v: std::option::Option<T>) -> Self
10170    where
10171        T: std::convert::Into<crate::model::AzureDiskTemplate>,
10172    {
10173        self.main_volume = v.map(|x| x.into());
10174        self
10175    }
10176
10177    /// Sets the value of [database_encryption][crate::model::AzureControlPlane::database_encryption].
10178    ///
10179    /// # Example
10180    /// ```ignore,no_run
10181    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10182    /// use google_cloud_gkemulticloud_v1::model::AzureDatabaseEncryption;
10183    /// let x = AzureControlPlane::new().set_database_encryption(AzureDatabaseEncryption::default()/* use setters */);
10184    /// ```
10185    pub fn set_database_encryption<T>(mut self, v: T) -> Self
10186    where
10187        T: std::convert::Into<crate::model::AzureDatabaseEncryption>,
10188    {
10189        self.database_encryption = std::option::Option::Some(v.into());
10190        self
10191    }
10192
10193    /// Sets or clears the value of [database_encryption][crate::model::AzureControlPlane::database_encryption].
10194    ///
10195    /// # Example
10196    /// ```ignore,no_run
10197    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10198    /// use google_cloud_gkemulticloud_v1::model::AzureDatabaseEncryption;
10199    /// let x = AzureControlPlane::new().set_or_clear_database_encryption(Some(AzureDatabaseEncryption::default()/* use setters */));
10200    /// let x = AzureControlPlane::new().set_or_clear_database_encryption(None::<AzureDatabaseEncryption>);
10201    /// ```
10202    pub fn set_or_clear_database_encryption<T>(mut self, v: std::option::Option<T>) -> Self
10203    where
10204        T: std::convert::Into<crate::model::AzureDatabaseEncryption>,
10205    {
10206        self.database_encryption = v.map(|x| x.into());
10207        self
10208    }
10209
10210    /// Sets the value of [proxy_config][crate::model::AzureControlPlane::proxy_config].
10211    ///
10212    /// # Example
10213    /// ```ignore,no_run
10214    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10215    /// use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
10216    /// let x = AzureControlPlane::new().set_proxy_config(AzureProxyConfig::default()/* use setters */);
10217    /// ```
10218    pub fn set_proxy_config<T>(mut self, v: T) -> Self
10219    where
10220        T: std::convert::Into<crate::model::AzureProxyConfig>,
10221    {
10222        self.proxy_config = std::option::Option::Some(v.into());
10223        self
10224    }
10225
10226    /// Sets or clears the value of [proxy_config][crate::model::AzureControlPlane::proxy_config].
10227    ///
10228    /// # Example
10229    /// ```ignore,no_run
10230    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10231    /// use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
10232    /// let x = AzureControlPlane::new().set_or_clear_proxy_config(Some(AzureProxyConfig::default()/* use setters */));
10233    /// let x = AzureControlPlane::new().set_or_clear_proxy_config(None::<AzureProxyConfig>);
10234    /// ```
10235    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
10236    where
10237        T: std::convert::Into<crate::model::AzureProxyConfig>,
10238    {
10239        self.proxy_config = v.map(|x| x.into());
10240        self
10241    }
10242
10243    /// Sets the value of [config_encryption][crate::model::AzureControlPlane::config_encryption].
10244    ///
10245    /// # Example
10246    /// ```ignore,no_run
10247    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10248    /// use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
10249    /// let x = AzureControlPlane::new().set_config_encryption(AzureConfigEncryption::default()/* use setters */);
10250    /// ```
10251    pub fn set_config_encryption<T>(mut self, v: T) -> Self
10252    where
10253        T: std::convert::Into<crate::model::AzureConfigEncryption>,
10254    {
10255        self.config_encryption = std::option::Option::Some(v.into());
10256        self
10257    }
10258
10259    /// Sets or clears the value of [config_encryption][crate::model::AzureControlPlane::config_encryption].
10260    ///
10261    /// # Example
10262    /// ```ignore,no_run
10263    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10264    /// use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
10265    /// let x = AzureControlPlane::new().set_or_clear_config_encryption(Some(AzureConfigEncryption::default()/* use setters */));
10266    /// let x = AzureControlPlane::new().set_or_clear_config_encryption(None::<AzureConfigEncryption>);
10267    /// ```
10268    pub fn set_or_clear_config_encryption<T>(mut self, v: std::option::Option<T>) -> Self
10269    where
10270        T: std::convert::Into<crate::model::AzureConfigEncryption>,
10271    {
10272        self.config_encryption = v.map(|x| x.into());
10273        self
10274    }
10275
10276    /// Sets the value of [tags][crate::model::AzureControlPlane::tags].
10277    ///
10278    /// # Example
10279    /// ```ignore,no_run
10280    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10281    /// let x = AzureControlPlane::new().set_tags([
10282    ///     ("key0", "abc"),
10283    ///     ("key1", "xyz"),
10284    /// ]);
10285    /// ```
10286    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
10287    where
10288        T: std::iter::IntoIterator<Item = (K, V)>,
10289        K: std::convert::Into<std::string::String>,
10290        V: std::convert::Into<std::string::String>,
10291    {
10292        use std::iter::Iterator;
10293        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
10294        self
10295    }
10296
10297    /// Sets the value of [replica_placements][crate::model::AzureControlPlane::replica_placements].
10298    ///
10299    /// # Example
10300    /// ```ignore,no_run
10301    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10302    /// use google_cloud_gkemulticloud_v1::model::ReplicaPlacement;
10303    /// let x = AzureControlPlane::new()
10304    ///     .set_replica_placements([
10305    ///         ReplicaPlacement::default()/* use setters */,
10306    ///         ReplicaPlacement::default()/* use (different) setters */,
10307    ///     ]);
10308    /// ```
10309    pub fn set_replica_placements<T, V>(mut self, v: T) -> Self
10310    where
10311        T: std::iter::IntoIterator<Item = V>,
10312        V: std::convert::Into<crate::model::ReplicaPlacement>,
10313    {
10314        use std::iter::Iterator;
10315        self.replica_placements = v.into_iter().map(|i| i.into()).collect();
10316        self
10317    }
10318
10319    /// Sets the value of [endpoint_subnet_id][crate::model::AzureControlPlane::endpoint_subnet_id].
10320    ///
10321    /// # Example
10322    /// ```ignore,no_run
10323    /// # use google_cloud_gkemulticloud_v1::model::AzureControlPlane;
10324    /// let x = AzureControlPlane::new().set_endpoint_subnet_id("example");
10325    /// ```
10326    pub fn set_endpoint_subnet_id<T: std::convert::Into<std::string::String>>(
10327        mut self,
10328        v: T,
10329    ) -> Self {
10330        self.endpoint_subnet_id = v.into();
10331        self
10332    }
10333}
10334
10335impl wkt::message::Message for AzureControlPlane {
10336    fn typename() -> &'static str {
10337        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureControlPlane"
10338    }
10339}
10340
10341/// Configuration for the placement of a control plane replica.
10342#[derive(Clone, Default, PartialEq)]
10343#[non_exhaustive]
10344#[deprecated]
10345pub struct ReplicaPlacement {
10346    /// Required. For a given replica, the ARM ID of the subnet where the control
10347    /// plane VM is deployed. Make sure it's a subnet under the virtual network in
10348    /// the cluster configuration.
10349    pub subnet_id: std::string::String,
10350
10351    /// Required. For a given replica, the Azure availability zone where to
10352    /// provision the control plane VM and the ETCD disk.
10353    pub azure_availability_zone: std::string::String,
10354
10355    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10356}
10357
10358impl ReplicaPlacement {
10359    pub fn new() -> Self {
10360        std::default::Default::default()
10361    }
10362
10363    /// Sets the value of [subnet_id][crate::model::ReplicaPlacement::subnet_id].
10364    ///
10365    /// # Example
10366    /// ```ignore,no_run
10367    /// # use google_cloud_gkemulticloud_v1::model::ReplicaPlacement;
10368    /// let x = ReplicaPlacement::new().set_subnet_id("example");
10369    /// ```
10370    pub fn set_subnet_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10371        self.subnet_id = v.into();
10372        self
10373    }
10374
10375    /// Sets the value of [azure_availability_zone][crate::model::ReplicaPlacement::azure_availability_zone].
10376    ///
10377    /// # Example
10378    /// ```ignore,no_run
10379    /// # use google_cloud_gkemulticloud_v1::model::ReplicaPlacement;
10380    /// let x = ReplicaPlacement::new().set_azure_availability_zone("example");
10381    /// ```
10382    pub fn set_azure_availability_zone<T: std::convert::Into<std::string::String>>(
10383        mut self,
10384        v: T,
10385    ) -> Self {
10386        self.azure_availability_zone = v.into();
10387        self
10388    }
10389}
10390
10391impl wkt::message::Message for ReplicaPlacement {
10392    fn typename() -> &'static str {
10393        "type.googleapis.com/google.cloud.gkemulticloud.v1.ReplicaPlacement"
10394    }
10395}
10396
10397/// Details of a proxy config stored in Azure Key Vault.
10398#[derive(Clone, Default, PartialEq)]
10399#[non_exhaustive]
10400#[deprecated]
10401pub struct AzureProxyConfig {
10402    /// The ARM ID the of the resource group containing proxy keyvault.
10403    ///
10404    /// Resource group ids are formatted as
10405    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>`.
10406    pub resource_group_id: std::string::String,
10407
10408    /// The URL the of the proxy setting secret with its version.
10409    ///
10410    /// The secret must be a JSON encoded proxy configuration
10411    /// as described in
10412    /// <https://cloud.google.com/kubernetes-engine/multi-cloud/docs/azure/how-to/use-a-proxy#create_a_proxy_configuration_file>
10413    ///
10414    /// Secret ids are formatted as
10415    /// `https://<key-vault-name>.vault.azure.net/secrets/<secret-name>/<secret-version>`.
10416    pub secret_id: std::string::String,
10417
10418    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10419}
10420
10421impl AzureProxyConfig {
10422    pub fn new() -> Self {
10423        std::default::Default::default()
10424    }
10425
10426    /// Sets the value of [resource_group_id][crate::model::AzureProxyConfig::resource_group_id].
10427    ///
10428    /// # Example
10429    /// ```ignore,no_run
10430    /// # use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
10431    /// let x = AzureProxyConfig::new().set_resource_group_id("example");
10432    /// ```
10433    pub fn set_resource_group_id<T: std::convert::Into<std::string::String>>(
10434        mut self,
10435        v: T,
10436    ) -> Self {
10437        self.resource_group_id = v.into();
10438        self
10439    }
10440
10441    /// Sets the value of [secret_id][crate::model::AzureProxyConfig::secret_id].
10442    ///
10443    /// # Example
10444    /// ```ignore,no_run
10445    /// # use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
10446    /// let x = AzureProxyConfig::new().set_secret_id("example");
10447    /// ```
10448    pub fn set_secret_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10449        self.secret_id = v.into();
10450        self
10451    }
10452}
10453
10454impl wkt::message::Message for AzureProxyConfig {
10455    fn typename() -> &'static str {
10456        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureProxyConfig"
10457    }
10458}
10459
10460/// Configuration related to application-layer secrets encryption.
10461///
10462/// Anthos clusters on Azure encrypts your Kubernetes data at rest
10463/// in etcd using Azure Key Vault.
10464#[derive(Clone, Default, PartialEq)]
10465#[non_exhaustive]
10466#[deprecated]
10467pub struct AzureDatabaseEncryption {
10468    /// Required. The ARM ID of the Azure Key Vault key to encrypt / decrypt data.
10469    ///
10470    /// For example:
10471    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-id>/providers/Microsoft.KeyVault/vaults/<key-vault-id>/keys/<key-name>`
10472    /// Encryption will always take the latest version of the key and hence
10473    /// specific version is not supported.
10474    pub key_id: std::string::String,
10475
10476    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10477}
10478
10479impl AzureDatabaseEncryption {
10480    pub fn new() -> Self {
10481        std::default::Default::default()
10482    }
10483
10484    /// Sets the value of [key_id][crate::model::AzureDatabaseEncryption::key_id].
10485    ///
10486    /// # Example
10487    /// ```ignore,no_run
10488    /// # use google_cloud_gkemulticloud_v1::model::AzureDatabaseEncryption;
10489    /// let x = AzureDatabaseEncryption::new().set_key_id("example");
10490    /// ```
10491    pub fn set_key_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10492        self.key_id = v.into();
10493        self
10494    }
10495}
10496
10497impl wkt::message::Message for AzureDatabaseEncryption {
10498    fn typename() -> &'static str {
10499        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureDatabaseEncryption"
10500    }
10501}
10502
10503/// Configuration related to config data encryption.
10504///
10505/// Azure VM bootstrap secret is envelope encrypted with the provided key vault
10506/// key.
10507#[derive(Clone, Default, PartialEq)]
10508#[non_exhaustive]
10509#[deprecated]
10510pub struct AzureConfigEncryption {
10511    /// Required. The ARM ID of the Azure Key Vault key to encrypt / decrypt config
10512    /// data.
10513    ///
10514    /// For example:
10515    /// `/subscriptions/<subscription-id>/resourceGroups/<resource-group-id>/providers/Microsoft.KeyVault/vaults/<key-vault-id>/keys/<key-name>`
10516    pub key_id: std::string::String,
10517
10518    /// Optional. RSA key of the Azure Key Vault public key to use for encrypting
10519    /// the data.
10520    ///
10521    /// This key must be formatted as a PEM-encoded SubjectPublicKeyInfo (RFC 5280)
10522    /// in ASN.1 DER form. The string must be comprised of a single PEM block of
10523    /// type "PUBLIC KEY".
10524    pub public_key: std::string::String,
10525
10526    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10527}
10528
10529impl AzureConfigEncryption {
10530    pub fn new() -> Self {
10531        std::default::Default::default()
10532    }
10533
10534    /// Sets the value of [key_id][crate::model::AzureConfigEncryption::key_id].
10535    ///
10536    /// # Example
10537    /// ```ignore,no_run
10538    /// # use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
10539    /// let x = AzureConfigEncryption::new().set_key_id("example");
10540    /// ```
10541    pub fn set_key_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10542        self.key_id = v.into();
10543        self
10544    }
10545
10546    /// Sets the value of [public_key][crate::model::AzureConfigEncryption::public_key].
10547    ///
10548    /// # Example
10549    /// ```ignore,no_run
10550    /// # use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
10551    /// let x = AzureConfigEncryption::new().set_public_key("example");
10552    /// ```
10553    pub fn set_public_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10554        self.public_key = v.into();
10555        self
10556    }
10557}
10558
10559impl wkt::message::Message for AzureConfigEncryption {
10560    fn typename() -> &'static str {
10561        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureConfigEncryption"
10562    }
10563}
10564
10565/// Configuration for Azure Disks.
10566#[derive(Clone, Default, PartialEq)]
10567#[non_exhaustive]
10568#[deprecated]
10569pub struct AzureDiskTemplate {
10570    /// Optional. The size of the disk, in GiBs.
10571    ///
10572    /// When unspecified, a default value is provided. See the specific reference
10573    /// in the parent resource.
10574    pub size_gib: i32,
10575
10576    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10577}
10578
10579impl AzureDiskTemplate {
10580    pub fn new() -> Self {
10581        std::default::Default::default()
10582    }
10583
10584    /// Sets the value of [size_gib][crate::model::AzureDiskTemplate::size_gib].
10585    ///
10586    /// # Example
10587    /// ```ignore,no_run
10588    /// # use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
10589    /// let x = AzureDiskTemplate::new().set_size_gib(42);
10590    /// ```
10591    pub fn set_size_gib<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
10592        self.size_gib = v.into();
10593        self
10594    }
10595}
10596
10597impl wkt::message::Message for AzureDiskTemplate {
10598    fn typename() -> &'static str {
10599        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureDiskTemplate"
10600    }
10601}
10602
10603/// `AzureClient` resources hold client authentication information needed by the
10604/// Anthos Multi-Cloud API to manage Azure resources on your Azure subscription.
10605///
10606/// When an [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] is
10607/// created, an `AzureClient` resource needs to be provided and all operations on
10608/// Azure resources associated to that cluster will authenticate to Azure
10609/// services using the given client.
10610///
10611/// `AzureClient` resources are immutable and cannot be modified upon creation.
10612///
10613/// Each `AzureClient` resource is bound to a single Azure Active Directory
10614/// Application and tenant.
10615///
10616/// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
10617#[derive(Clone, Default, PartialEq)]
10618#[non_exhaustive]
10619#[deprecated]
10620pub struct AzureClient {
10621    /// The name of this resource.
10622    ///
10623    /// `AzureClient` resource names are formatted as
10624    /// `projects/<project-number>/locations/<region>/azureClients/<client-id>`.
10625    ///
10626    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
10627    /// for more details on Google Cloud resource names.
10628    pub name: std::string::String,
10629
10630    /// Required. The Azure Active Directory Tenant ID.
10631    pub tenant_id: std::string::String,
10632
10633    /// Required. The Azure Active Directory Application ID.
10634    pub application_id: std::string::String,
10635
10636    /// Output only. If set, there are currently pending changes to the client.
10637    pub reconciling: bool,
10638
10639    /// Optional. Annotations on the resource.
10640    ///
10641    /// This field has the same restrictions as Kubernetes annotations.
10642    /// The total size of all keys and values combined is limited to 256k.
10643    /// Keys can have 2 segments: prefix (optional) and name (required),
10644    /// separated by a slash (/).
10645    /// Prefix must be a DNS subdomain.
10646    /// Name must be 63 characters or less, begin and end with alphanumerics,
10647    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
10648    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
10649
10650    /// Output only. The PEM encoded x509 certificate.
10651    pub pem_certificate: std::string::String,
10652
10653    /// Output only. A globally unique identifier for the client.
10654    pub uid: std::string::String,
10655
10656    /// Output only. The time at which this resource was created.
10657    pub create_time: std::option::Option<wkt::Timestamp>,
10658
10659    /// Output only. The time at which this client was last updated.
10660    pub update_time: std::option::Option<wkt::Timestamp>,
10661
10662    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10663}
10664
10665impl AzureClient {
10666    pub fn new() -> Self {
10667        std::default::Default::default()
10668    }
10669
10670    /// Sets the value of [name][crate::model::AzureClient::name].
10671    ///
10672    /// # Example
10673    /// ```ignore,no_run
10674    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10675    /// let x = AzureClient::new().set_name("example");
10676    /// ```
10677    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10678        self.name = v.into();
10679        self
10680    }
10681
10682    /// Sets the value of [tenant_id][crate::model::AzureClient::tenant_id].
10683    ///
10684    /// # Example
10685    /// ```ignore,no_run
10686    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10687    /// let x = AzureClient::new().set_tenant_id("example");
10688    /// ```
10689    pub fn set_tenant_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10690        self.tenant_id = v.into();
10691        self
10692    }
10693
10694    /// Sets the value of [application_id][crate::model::AzureClient::application_id].
10695    ///
10696    /// # Example
10697    /// ```ignore,no_run
10698    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10699    /// let x = AzureClient::new().set_application_id("example");
10700    /// ```
10701    pub fn set_application_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10702        self.application_id = v.into();
10703        self
10704    }
10705
10706    /// Sets the value of [reconciling][crate::model::AzureClient::reconciling].
10707    ///
10708    /// # Example
10709    /// ```ignore,no_run
10710    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10711    /// let x = AzureClient::new().set_reconciling(true);
10712    /// ```
10713    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
10714        self.reconciling = v.into();
10715        self
10716    }
10717
10718    /// Sets the value of [annotations][crate::model::AzureClient::annotations].
10719    ///
10720    /// # Example
10721    /// ```ignore,no_run
10722    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10723    /// let x = AzureClient::new().set_annotations([
10724    ///     ("key0", "abc"),
10725    ///     ("key1", "xyz"),
10726    /// ]);
10727    /// ```
10728    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
10729    where
10730        T: std::iter::IntoIterator<Item = (K, V)>,
10731        K: std::convert::Into<std::string::String>,
10732        V: std::convert::Into<std::string::String>,
10733    {
10734        use std::iter::Iterator;
10735        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
10736        self
10737    }
10738
10739    /// Sets the value of [pem_certificate][crate::model::AzureClient::pem_certificate].
10740    ///
10741    /// # Example
10742    /// ```ignore,no_run
10743    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10744    /// let x = AzureClient::new().set_pem_certificate("example");
10745    /// ```
10746    pub fn set_pem_certificate<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10747        self.pem_certificate = v.into();
10748        self
10749    }
10750
10751    /// Sets the value of [uid][crate::model::AzureClient::uid].
10752    ///
10753    /// # Example
10754    /// ```ignore,no_run
10755    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10756    /// let x = AzureClient::new().set_uid("example");
10757    /// ```
10758    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10759        self.uid = v.into();
10760        self
10761    }
10762
10763    /// Sets the value of [create_time][crate::model::AzureClient::create_time].
10764    ///
10765    /// # Example
10766    /// ```ignore,no_run
10767    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10768    /// use wkt::Timestamp;
10769    /// let x = AzureClient::new().set_create_time(Timestamp::default()/* use setters */);
10770    /// ```
10771    pub fn set_create_time<T>(mut self, v: T) -> Self
10772    where
10773        T: std::convert::Into<wkt::Timestamp>,
10774    {
10775        self.create_time = std::option::Option::Some(v.into());
10776        self
10777    }
10778
10779    /// Sets or clears the value of [create_time][crate::model::AzureClient::create_time].
10780    ///
10781    /// # Example
10782    /// ```ignore,no_run
10783    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10784    /// use wkt::Timestamp;
10785    /// let x = AzureClient::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
10786    /// let x = AzureClient::new().set_or_clear_create_time(None::<Timestamp>);
10787    /// ```
10788    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
10789    where
10790        T: std::convert::Into<wkt::Timestamp>,
10791    {
10792        self.create_time = v.map(|x| x.into());
10793        self
10794    }
10795
10796    /// Sets the value of [update_time][crate::model::AzureClient::update_time].
10797    ///
10798    /// # Example
10799    /// ```ignore,no_run
10800    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10801    /// use wkt::Timestamp;
10802    /// let x = AzureClient::new().set_update_time(Timestamp::default()/* use setters */);
10803    /// ```
10804    pub fn set_update_time<T>(mut self, v: T) -> Self
10805    where
10806        T: std::convert::Into<wkt::Timestamp>,
10807    {
10808        self.update_time = std::option::Option::Some(v.into());
10809        self
10810    }
10811
10812    /// Sets or clears the value of [update_time][crate::model::AzureClient::update_time].
10813    ///
10814    /// # Example
10815    /// ```ignore,no_run
10816    /// # use google_cloud_gkemulticloud_v1::model::AzureClient;
10817    /// use wkt::Timestamp;
10818    /// let x = AzureClient::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
10819    /// let x = AzureClient::new().set_or_clear_update_time(None::<Timestamp>);
10820    /// ```
10821    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
10822    where
10823        T: std::convert::Into<wkt::Timestamp>,
10824    {
10825        self.update_time = v.map(|x| x.into());
10826        self
10827    }
10828}
10829
10830impl wkt::message::Message for AzureClient {
10831    fn typename() -> &'static str {
10832        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClient"
10833    }
10834}
10835
10836/// Configuration related to the cluster RBAC settings.
10837#[derive(Clone, Default, PartialEq)]
10838#[non_exhaustive]
10839#[deprecated]
10840pub struct AzureAuthorization {
10841    /// Optional. Users that can perform operations as a cluster admin. A managed
10842    /// ClusterRoleBinding will be created to grant the `cluster-admin` ClusterRole
10843    /// to the users. Up to ten admin users can be provided.
10844    ///
10845    /// For more info on RBAC, see
10846    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
10847    pub admin_users: std::vec::Vec<crate::model::AzureClusterUser>,
10848
10849    /// Optional. Groups of users that can perform operations as a cluster admin. A
10850    /// managed ClusterRoleBinding will be created to grant the `cluster-admin`
10851    /// ClusterRole to the groups. Up to ten admin groups can be provided.
10852    ///
10853    /// For more info on RBAC, see
10854    /// <https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles>
10855    pub admin_groups: std::vec::Vec<crate::model::AzureClusterGroup>,
10856
10857    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10858}
10859
10860impl AzureAuthorization {
10861    pub fn new() -> Self {
10862        std::default::Default::default()
10863    }
10864
10865    /// Sets the value of [admin_users][crate::model::AzureAuthorization::admin_users].
10866    ///
10867    /// # Example
10868    /// ```ignore,no_run
10869    /// # use google_cloud_gkemulticloud_v1::model::AzureAuthorization;
10870    /// use google_cloud_gkemulticloud_v1::model::AzureClusterUser;
10871    /// let x = AzureAuthorization::new()
10872    ///     .set_admin_users([
10873    ///         AzureClusterUser::default()/* use setters */,
10874    ///         AzureClusterUser::default()/* use (different) setters */,
10875    ///     ]);
10876    /// ```
10877    pub fn set_admin_users<T, V>(mut self, v: T) -> Self
10878    where
10879        T: std::iter::IntoIterator<Item = V>,
10880        V: std::convert::Into<crate::model::AzureClusterUser>,
10881    {
10882        use std::iter::Iterator;
10883        self.admin_users = v.into_iter().map(|i| i.into()).collect();
10884        self
10885    }
10886
10887    /// Sets the value of [admin_groups][crate::model::AzureAuthorization::admin_groups].
10888    ///
10889    /// # Example
10890    /// ```ignore,no_run
10891    /// # use google_cloud_gkemulticloud_v1::model::AzureAuthorization;
10892    /// use google_cloud_gkemulticloud_v1::model::AzureClusterGroup;
10893    /// let x = AzureAuthorization::new()
10894    ///     .set_admin_groups([
10895    ///         AzureClusterGroup::default()/* use setters */,
10896    ///         AzureClusterGroup::default()/* use (different) setters */,
10897    ///     ]);
10898    /// ```
10899    pub fn set_admin_groups<T, V>(mut self, v: T) -> Self
10900    where
10901        T: std::iter::IntoIterator<Item = V>,
10902        V: std::convert::Into<crate::model::AzureClusterGroup>,
10903    {
10904        use std::iter::Iterator;
10905        self.admin_groups = v.into_iter().map(|i| i.into()).collect();
10906        self
10907    }
10908}
10909
10910impl wkt::message::Message for AzureAuthorization {
10911    fn typename() -> &'static str {
10912        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureAuthorization"
10913    }
10914}
10915
10916/// Authentication configuration for the management of Azure resources.
10917#[derive(Clone, Default, PartialEq)]
10918#[non_exhaustive]
10919#[deprecated]
10920pub struct AzureServicesAuthentication {
10921    /// Required. The Azure Active Directory Tenant ID.
10922    pub tenant_id: std::string::String,
10923
10924    /// Required. The Azure Active Directory Application ID.
10925    pub application_id: std::string::String,
10926
10927    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10928}
10929
10930impl AzureServicesAuthentication {
10931    pub fn new() -> Self {
10932        std::default::Default::default()
10933    }
10934
10935    /// Sets the value of [tenant_id][crate::model::AzureServicesAuthentication::tenant_id].
10936    ///
10937    /// # Example
10938    /// ```ignore,no_run
10939    /// # use google_cloud_gkemulticloud_v1::model::AzureServicesAuthentication;
10940    /// let x = AzureServicesAuthentication::new().set_tenant_id("example");
10941    /// ```
10942    pub fn set_tenant_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10943        self.tenant_id = v.into();
10944        self
10945    }
10946
10947    /// Sets the value of [application_id][crate::model::AzureServicesAuthentication::application_id].
10948    ///
10949    /// # Example
10950    /// ```ignore,no_run
10951    /// # use google_cloud_gkemulticloud_v1::model::AzureServicesAuthentication;
10952    /// let x = AzureServicesAuthentication::new().set_application_id("example");
10953    /// ```
10954    pub fn set_application_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10955        self.application_id = v.into();
10956        self
10957    }
10958}
10959
10960impl wkt::message::Message for AzureServicesAuthentication {
10961    fn typename() -> &'static str {
10962        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureServicesAuthentication"
10963    }
10964}
10965
10966/// Identities of a user-type subject for Azure clusters.
10967#[derive(Clone, Default, PartialEq)]
10968#[non_exhaustive]
10969#[deprecated]
10970pub struct AzureClusterUser {
10971    /// Required. The name of the user, e.g. `my-gcp-id@gmail.com`.
10972    pub username: std::string::String,
10973
10974    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
10975}
10976
10977impl AzureClusterUser {
10978    pub fn new() -> Self {
10979        std::default::Default::default()
10980    }
10981
10982    /// Sets the value of [username][crate::model::AzureClusterUser::username].
10983    ///
10984    /// # Example
10985    /// ```ignore,no_run
10986    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterUser;
10987    /// let x = AzureClusterUser::new().set_username("example");
10988    /// ```
10989    pub fn set_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
10990        self.username = v.into();
10991        self
10992    }
10993}
10994
10995impl wkt::message::Message for AzureClusterUser {
10996    fn typename() -> &'static str {
10997        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClusterUser"
10998    }
10999}
11000
11001/// Identities of a group-type subject for Azure clusters.
11002#[derive(Clone, Default, PartialEq)]
11003#[non_exhaustive]
11004#[deprecated]
11005pub struct AzureClusterGroup {
11006    /// Required. The name of the group, e.g. `my-group@domain.com`.
11007    pub group: std::string::String,
11008
11009    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11010}
11011
11012impl AzureClusterGroup {
11013    pub fn new() -> Self {
11014        std::default::Default::default()
11015    }
11016
11017    /// Sets the value of [group][crate::model::AzureClusterGroup::group].
11018    ///
11019    /// # Example
11020    /// ```ignore,no_run
11021    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterGroup;
11022    /// let x = AzureClusterGroup::new().set_group("example");
11023    /// ```
11024    pub fn set_group<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11025        self.group = v.into();
11026        self
11027    }
11028}
11029
11030impl wkt::message::Message for AzureClusterGroup {
11031    fn typename() -> &'static str {
11032        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClusterGroup"
11033    }
11034}
11035
11036/// An Anthos node pool running on Azure.
11037#[derive(Clone, Default, PartialEq)]
11038#[non_exhaustive]
11039#[deprecated]
11040pub struct AzureNodePool {
11041    /// The name of this resource.
11042    ///
11043    /// Node pool names are formatted as
11044    /// `projects/<project-number>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`.
11045    ///
11046    /// For more details on Google Cloud resource names,
11047    /// see [Resource Names](https://cloud.google.com/apis/design/resource_names)
11048    pub name: std::string::String,
11049
11050    /// Required. The Kubernetes version (e.g. `1.19.10-gke.1000`) running on this
11051    /// node pool.
11052    pub version: std::string::String,
11053
11054    /// Required. The node configuration of the node pool.
11055    pub config: std::option::Option<crate::model::AzureNodeConfig>,
11056
11057    /// Required. The ARM ID of the subnet where the node pool VMs run. Make sure
11058    /// it's a subnet under the virtual network in the cluster configuration.
11059    pub subnet_id: std::string::String,
11060
11061    /// Required. Autoscaler configuration for this node pool.
11062    pub autoscaling: std::option::Option<crate::model::AzureNodePoolAutoscaling>,
11063
11064    /// Output only. The current state of the node pool.
11065    pub state: crate::model::azure_node_pool::State,
11066
11067    /// Output only. A globally unique identifier for the node pool.
11068    pub uid: std::string::String,
11069
11070    /// Output only. If set, there are currently pending changes to the node
11071    /// pool.
11072    pub reconciling: bool,
11073
11074    /// Output only. The time at which this node pool was created.
11075    pub create_time: std::option::Option<wkt::Timestamp>,
11076
11077    /// Output only. The time at which this node pool was last updated.
11078    pub update_time: std::option::Option<wkt::Timestamp>,
11079
11080    /// Allows clients to perform consistent read-modify-writes
11081    /// through optimistic concurrency control.
11082    ///
11083    /// Can be sent on update and delete requests to ensure the
11084    /// client has an up-to-date value before proceeding.
11085    pub etag: std::string::String,
11086
11087    /// Optional. Annotations on the node pool.
11088    ///
11089    /// This field has the same restrictions as Kubernetes annotations.
11090    /// The total size of all keys and values combined is limited to 256k.
11091    /// Keys can have 2 segments: prefix (optional) and name (required),
11092    /// separated by a slash (/).
11093    /// Prefix must be a DNS subdomain.
11094    /// Name must be 63 characters or less, begin and end with alphanumerics,
11095    /// with dashes (-), underscores (_), dots (.), and alphanumerics between.
11096    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
11097
11098    /// Required. The constraint on the maximum number of pods that can be run
11099    /// simultaneously on a node in the node pool.
11100    pub max_pods_constraint: std::option::Option<crate::model::MaxPodsConstraint>,
11101
11102    /// Optional. The Azure availability zone of the nodes in this nodepool.
11103    ///
11104    /// When unspecified, it defaults to `1`.
11105    pub azure_availability_zone: std::string::String,
11106
11107    /// Output only. A set of errors found in the node pool.
11108    pub errors: std::vec::Vec<crate::model::AzureNodePoolError>,
11109
11110    /// Optional. The Management configuration for this node pool.
11111    pub management: std::option::Option<crate::model::AzureNodeManagement>,
11112
11113    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11114}
11115
11116impl AzureNodePool {
11117    pub fn new() -> Self {
11118        std::default::Default::default()
11119    }
11120
11121    /// Sets the value of [name][crate::model::AzureNodePool::name].
11122    ///
11123    /// # Example
11124    /// ```ignore,no_run
11125    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11126    /// let x = AzureNodePool::new().set_name("example");
11127    /// ```
11128    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11129        self.name = v.into();
11130        self
11131    }
11132
11133    /// Sets the value of [version][crate::model::AzureNodePool::version].
11134    ///
11135    /// # Example
11136    /// ```ignore,no_run
11137    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11138    /// let x = AzureNodePool::new().set_version("example");
11139    /// ```
11140    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11141        self.version = v.into();
11142        self
11143    }
11144
11145    /// Sets the value of [config][crate::model::AzureNodePool::config].
11146    ///
11147    /// # Example
11148    /// ```ignore,no_run
11149    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11150    /// use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11151    /// let x = AzureNodePool::new().set_config(AzureNodeConfig::default()/* use setters */);
11152    /// ```
11153    pub fn set_config<T>(mut self, v: T) -> Self
11154    where
11155        T: std::convert::Into<crate::model::AzureNodeConfig>,
11156    {
11157        self.config = std::option::Option::Some(v.into());
11158        self
11159    }
11160
11161    /// Sets or clears the value of [config][crate::model::AzureNodePool::config].
11162    ///
11163    /// # Example
11164    /// ```ignore,no_run
11165    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11166    /// use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11167    /// let x = AzureNodePool::new().set_or_clear_config(Some(AzureNodeConfig::default()/* use setters */));
11168    /// let x = AzureNodePool::new().set_or_clear_config(None::<AzureNodeConfig>);
11169    /// ```
11170    pub fn set_or_clear_config<T>(mut self, v: std::option::Option<T>) -> Self
11171    where
11172        T: std::convert::Into<crate::model::AzureNodeConfig>,
11173    {
11174        self.config = v.map(|x| x.into());
11175        self
11176    }
11177
11178    /// Sets the value of [subnet_id][crate::model::AzureNodePool::subnet_id].
11179    ///
11180    /// # Example
11181    /// ```ignore,no_run
11182    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11183    /// let x = AzureNodePool::new().set_subnet_id("example");
11184    /// ```
11185    pub fn set_subnet_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11186        self.subnet_id = v.into();
11187        self
11188    }
11189
11190    /// Sets the value of [autoscaling][crate::model::AzureNodePool::autoscaling].
11191    ///
11192    /// # Example
11193    /// ```ignore,no_run
11194    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11195    /// use google_cloud_gkemulticloud_v1::model::AzureNodePoolAutoscaling;
11196    /// let x = AzureNodePool::new().set_autoscaling(AzureNodePoolAutoscaling::default()/* use setters */);
11197    /// ```
11198    pub fn set_autoscaling<T>(mut self, v: T) -> Self
11199    where
11200        T: std::convert::Into<crate::model::AzureNodePoolAutoscaling>,
11201    {
11202        self.autoscaling = std::option::Option::Some(v.into());
11203        self
11204    }
11205
11206    /// Sets or clears the value of [autoscaling][crate::model::AzureNodePool::autoscaling].
11207    ///
11208    /// # Example
11209    /// ```ignore,no_run
11210    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11211    /// use google_cloud_gkemulticloud_v1::model::AzureNodePoolAutoscaling;
11212    /// let x = AzureNodePool::new().set_or_clear_autoscaling(Some(AzureNodePoolAutoscaling::default()/* use setters */));
11213    /// let x = AzureNodePool::new().set_or_clear_autoscaling(None::<AzureNodePoolAutoscaling>);
11214    /// ```
11215    pub fn set_or_clear_autoscaling<T>(mut self, v: std::option::Option<T>) -> Self
11216    where
11217        T: std::convert::Into<crate::model::AzureNodePoolAutoscaling>,
11218    {
11219        self.autoscaling = v.map(|x| x.into());
11220        self
11221    }
11222
11223    /// Sets the value of [state][crate::model::AzureNodePool::state].
11224    ///
11225    /// # Example
11226    /// ```ignore,no_run
11227    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11228    /// use google_cloud_gkemulticloud_v1::model::azure_node_pool::State;
11229    /// let x0 = AzureNodePool::new().set_state(State::Provisioning);
11230    /// let x1 = AzureNodePool::new().set_state(State::Running);
11231    /// let x2 = AzureNodePool::new().set_state(State::Reconciling);
11232    /// ```
11233    pub fn set_state<T: std::convert::Into<crate::model::azure_node_pool::State>>(
11234        mut self,
11235        v: T,
11236    ) -> Self {
11237        self.state = v.into();
11238        self
11239    }
11240
11241    /// Sets the value of [uid][crate::model::AzureNodePool::uid].
11242    ///
11243    /// # Example
11244    /// ```ignore,no_run
11245    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11246    /// let x = AzureNodePool::new().set_uid("example");
11247    /// ```
11248    pub fn set_uid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11249        self.uid = v.into();
11250        self
11251    }
11252
11253    /// Sets the value of [reconciling][crate::model::AzureNodePool::reconciling].
11254    ///
11255    /// # Example
11256    /// ```ignore,no_run
11257    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11258    /// let x = AzureNodePool::new().set_reconciling(true);
11259    /// ```
11260    pub fn set_reconciling<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
11261        self.reconciling = v.into();
11262        self
11263    }
11264
11265    /// Sets the value of [create_time][crate::model::AzureNodePool::create_time].
11266    ///
11267    /// # Example
11268    /// ```ignore,no_run
11269    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11270    /// use wkt::Timestamp;
11271    /// let x = AzureNodePool::new().set_create_time(Timestamp::default()/* use setters */);
11272    /// ```
11273    pub fn set_create_time<T>(mut self, v: T) -> Self
11274    where
11275        T: std::convert::Into<wkt::Timestamp>,
11276    {
11277        self.create_time = std::option::Option::Some(v.into());
11278        self
11279    }
11280
11281    /// Sets or clears the value of [create_time][crate::model::AzureNodePool::create_time].
11282    ///
11283    /// # Example
11284    /// ```ignore,no_run
11285    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11286    /// use wkt::Timestamp;
11287    /// let x = AzureNodePool::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
11288    /// let x = AzureNodePool::new().set_or_clear_create_time(None::<Timestamp>);
11289    /// ```
11290    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
11291    where
11292        T: std::convert::Into<wkt::Timestamp>,
11293    {
11294        self.create_time = v.map(|x| x.into());
11295        self
11296    }
11297
11298    /// Sets the value of [update_time][crate::model::AzureNodePool::update_time].
11299    ///
11300    /// # Example
11301    /// ```ignore,no_run
11302    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11303    /// use wkt::Timestamp;
11304    /// let x = AzureNodePool::new().set_update_time(Timestamp::default()/* use setters */);
11305    /// ```
11306    pub fn set_update_time<T>(mut self, v: T) -> Self
11307    where
11308        T: std::convert::Into<wkt::Timestamp>,
11309    {
11310        self.update_time = std::option::Option::Some(v.into());
11311        self
11312    }
11313
11314    /// Sets or clears the value of [update_time][crate::model::AzureNodePool::update_time].
11315    ///
11316    /// # Example
11317    /// ```ignore,no_run
11318    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11319    /// use wkt::Timestamp;
11320    /// let x = AzureNodePool::new().set_or_clear_update_time(Some(Timestamp::default()/* use setters */));
11321    /// let x = AzureNodePool::new().set_or_clear_update_time(None::<Timestamp>);
11322    /// ```
11323    pub fn set_or_clear_update_time<T>(mut self, v: std::option::Option<T>) -> Self
11324    where
11325        T: std::convert::Into<wkt::Timestamp>,
11326    {
11327        self.update_time = v.map(|x| x.into());
11328        self
11329    }
11330
11331    /// Sets the value of [etag][crate::model::AzureNodePool::etag].
11332    ///
11333    /// # Example
11334    /// ```ignore,no_run
11335    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11336    /// let x = AzureNodePool::new().set_etag("example");
11337    /// ```
11338    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11339        self.etag = v.into();
11340        self
11341    }
11342
11343    /// Sets the value of [annotations][crate::model::AzureNodePool::annotations].
11344    ///
11345    /// # Example
11346    /// ```ignore,no_run
11347    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11348    /// let x = AzureNodePool::new().set_annotations([
11349    ///     ("key0", "abc"),
11350    ///     ("key1", "xyz"),
11351    /// ]);
11352    /// ```
11353    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
11354    where
11355        T: std::iter::IntoIterator<Item = (K, V)>,
11356        K: std::convert::Into<std::string::String>,
11357        V: std::convert::Into<std::string::String>,
11358    {
11359        use std::iter::Iterator;
11360        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
11361        self
11362    }
11363
11364    /// Sets the value of [max_pods_constraint][crate::model::AzureNodePool::max_pods_constraint].
11365    ///
11366    /// # Example
11367    /// ```ignore,no_run
11368    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11369    /// use google_cloud_gkemulticloud_v1::model::MaxPodsConstraint;
11370    /// let x = AzureNodePool::new().set_max_pods_constraint(MaxPodsConstraint::default()/* use setters */);
11371    /// ```
11372    pub fn set_max_pods_constraint<T>(mut self, v: T) -> Self
11373    where
11374        T: std::convert::Into<crate::model::MaxPodsConstraint>,
11375    {
11376        self.max_pods_constraint = std::option::Option::Some(v.into());
11377        self
11378    }
11379
11380    /// Sets or clears the value of [max_pods_constraint][crate::model::AzureNodePool::max_pods_constraint].
11381    ///
11382    /// # Example
11383    /// ```ignore,no_run
11384    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11385    /// use google_cloud_gkemulticloud_v1::model::MaxPodsConstraint;
11386    /// let x = AzureNodePool::new().set_or_clear_max_pods_constraint(Some(MaxPodsConstraint::default()/* use setters */));
11387    /// let x = AzureNodePool::new().set_or_clear_max_pods_constraint(None::<MaxPodsConstraint>);
11388    /// ```
11389    pub fn set_or_clear_max_pods_constraint<T>(mut self, v: std::option::Option<T>) -> Self
11390    where
11391        T: std::convert::Into<crate::model::MaxPodsConstraint>,
11392    {
11393        self.max_pods_constraint = v.map(|x| x.into());
11394        self
11395    }
11396
11397    /// Sets the value of [azure_availability_zone][crate::model::AzureNodePool::azure_availability_zone].
11398    ///
11399    /// # Example
11400    /// ```ignore,no_run
11401    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11402    /// let x = AzureNodePool::new().set_azure_availability_zone("example");
11403    /// ```
11404    pub fn set_azure_availability_zone<T: std::convert::Into<std::string::String>>(
11405        mut self,
11406        v: T,
11407    ) -> Self {
11408        self.azure_availability_zone = v.into();
11409        self
11410    }
11411
11412    /// Sets the value of [errors][crate::model::AzureNodePool::errors].
11413    ///
11414    /// # Example
11415    /// ```ignore,no_run
11416    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11417    /// use google_cloud_gkemulticloud_v1::model::AzureNodePoolError;
11418    /// let x = AzureNodePool::new()
11419    ///     .set_errors([
11420    ///         AzureNodePoolError::default()/* use setters */,
11421    ///         AzureNodePoolError::default()/* use (different) setters */,
11422    ///     ]);
11423    /// ```
11424    pub fn set_errors<T, V>(mut self, v: T) -> Self
11425    where
11426        T: std::iter::IntoIterator<Item = V>,
11427        V: std::convert::Into<crate::model::AzureNodePoolError>,
11428    {
11429        use std::iter::Iterator;
11430        self.errors = v.into_iter().map(|i| i.into()).collect();
11431        self
11432    }
11433
11434    /// Sets the value of [management][crate::model::AzureNodePool::management].
11435    ///
11436    /// # Example
11437    /// ```ignore,no_run
11438    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11439    /// use google_cloud_gkemulticloud_v1::model::AzureNodeManagement;
11440    /// let x = AzureNodePool::new().set_management(AzureNodeManagement::default()/* use setters */);
11441    /// ```
11442    pub fn set_management<T>(mut self, v: T) -> Self
11443    where
11444        T: std::convert::Into<crate::model::AzureNodeManagement>,
11445    {
11446        self.management = std::option::Option::Some(v.into());
11447        self
11448    }
11449
11450    /// Sets or clears the value of [management][crate::model::AzureNodePool::management].
11451    ///
11452    /// # Example
11453    /// ```ignore,no_run
11454    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePool;
11455    /// use google_cloud_gkemulticloud_v1::model::AzureNodeManagement;
11456    /// let x = AzureNodePool::new().set_or_clear_management(Some(AzureNodeManagement::default()/* use setters */));
11457    /// let x = AzureNodePool::new().set_or_clear_management(None::<AzureNodeManagement>);
11458    /// ```
11459    pub fn set_or_clear_management<T>(mut self, v: std::option::Option<T>) -> Self
11460    where
11461        T: std::convert::Into<crate::model::AzureNodeManagement>,
11462    {
11463        self.management = v.map(|x| x.into());
11464        self
11465    }
11466}
11467
11468impl wkt::message::Message for AzureNodePool {
11469    fn typename() -> &'static str {
11470        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureNodePool"
11471    }
11472}
11473
11474/// Defines additional types related to [AzureNodePool].
11475pub mod azure_node_pool {
11476    #[allow(unused_imports)]
11477    use super::*;
11478
11479    /// The lifecycle state of the node pool.
11480    ///
11481    /// # Working with unknown values
11482    ///
11483    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
11484    /// additional enum variants at any time. Adding new variants is not considered
11485    /// a breaking change. Applications should write their code in anticipation of:
11486    ///
11487    /// - New values appearing in future releases of the client library, **and**
11488    /// - New values received dynamically, without application changes.
11489    ///
11490    /// Please consult the [Working with enums] section in the user guide for some
11491    /// guidelines.
11492    ///
11493    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
11494    #[derive(Clone, Debug, PartialEq)]
11495    #[non_exhaustive]
11496    pub enum State {
11497        /// Not set.
11498        Unspecified,
11499        /// The PROVISIONING state indicates the node pool is being created.
11500        Provisioning,
11501        /// The RUNNING state indicates the node pool has been created and is fully
11502        /// usable.
11503        Running,
11504        /// The RECONCILING state indicates that the node pool is being reconciled.
11505        Reconciling,
11506        /// The STOPPING state indicates the node pool is being deleted.
11507        Stopping,
11508        /// The ERROR state indicates the node pool is in a broken unrecoverable
11509        /// state.
11510        Error,
11511        /// The DEGRADED state indicates the node pool requires user action to
11512        /// restore full functionality.
11513        Degraded,
11514        /// If set, the enum was initialized with an unknown value.
11515        ///
11516        /// Applications can examine the value using [State::value] or
11517        /// [State::name].
11518        UnknownValue(state::UnknownValue),
11519    }
11520
11521    #[doc(hidden)]
11522    pub mod state {
11523        #[allow(unused_imports)]
11524        use super::*;
11525        #[derive(Clone, Debug, PartialEq)]
11526        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
11527    }
11528
11529    impl State {
11530        /// Gets the enum value.
11531        ///
11532        /// Returns `None` if the enum contains an unknown value deserialized from
11533        /// the string representation of enums.
11534        pub fn value(&self) -> std::option::Option<i32> {
11535            match self {
11536                Self::Unspecified => std::option::Option::Some(0),
11537                Self::Provisioning => std::option::Option::Some(1),
11538                Self::Running => std::option::Option::Some(2),
11539                Self::Reconciling => std::option::Option::Some(3),
11540                Self::Stopping => std::option::Option::Some(4),
11541                Self::Error => std::option::Option::Some(5),
11542                Self::Degraded => std::option::Option::Some(6),
11543                Self::UnknownValue(u) => u.0.value(),
11544            }
11545        }
11546
11547        /// Gets the enum value as a string.
11548        ///
11549        /// Returns `None` if the enum contains an unknown value deserialized from
11550        /// the integer representation of enums.
11551        pub fn name(&self) -> std::option::Option<&str> {
11552            match self {
11553                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
11554                Self::Provisioning => std::option::Option::Some("PROVISIONING"),
11555                Self::Running => std::option::Option::Some("RUNNING"),
11556                Self::Reconciling => std::option::Option::Some("RECONCILING"),
11557                Self::Stopping => std::option::Option::Some("STOPPING"),
11558                Self::Error => std::option::Option::Some("ERROR"),
11559                Self::Degraded => std::option::Option::Some("DEGRADED"),
11560                Self::UnknownValue(u) => u.0.name(),
11561            }
11562        }
11563    }
11564
11565    impl std::default::Default for State {
11566        fn default() -> Self {
11567            use std::convert::From;
11568            Self::from(0)
11569        }
11570    }
11571
11572    impl std::fmt::Display for State {
11573        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
11574            wkt::internal::display_enum(f, self.name(), self.value())
11575        }
11576    }
11577
11578    impl std::convert::From<i32> for State {
11579        fn from(value: i32) -> Self {
11580            match value {
11581                0 => Self::Unspecified,
11582                1 => Self::Provisioning,
11583                2 => Self::Running,
11584                3 => Self::Reconciling,
11585                4 => Self::Stopping,
11586                5 => Self::Error,
11587                6 => Self::Degraded,
11588                _ => Self::UnknownValue(state::UnknownValue(
11589                    wkt::internal::UnknownEnumValue::Integer(value),
11590                )),
11591            }
11592        }
11593    }
11594
11595    impl std::convert::From<&str> for State {
11596        fn from(value: &str) -> Self {
11597            use std::string::ToString;
11598            match value {
11599                "STATE_UNSPECIFIED" => Self::Unspecified,
11600                "PROVISIONING" => Self::Provisioning,
11601                "RUNNING" => Self::Running,
11602                "RECONCILING" => Self::Reconciling,
11603                "STOPPING" => Self::Stopping,
11604                "ERROR" => Self::Error,
11605                "DEGRADED" => Self::Degraded,
11606                _ => Self::UnknownValue(state::UnknownValue(
11607                    wkt::internal::UnknownEnumValue::String(value.to_string()),
11608                )),
11609            }
11610        }
11611    }
11612
11613    impl serde::ser::Serialize for State {
11614        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11615        where
11616            S: serde::Serializer,
11617        {
11618            match self {
11619                Self::Unspecified => serializer.serialize_i32(0),
11620                Self::Provisioning => serializer.serialize_i32(1),
11621                Self::Running => serializer.serialize_i32(2),
11622                Self::Reconciling => serializer.serialize_i32(3),
11623                Self::Stopping => serializer.serialize_i32(4),
11624                Self::Error => serializer.serialize_i32(5),
11625                Self::Degraded => serializer.serialize_i32(6),
11626                Self::UnknownValue(u) => u.0.serialize(serializer),
11627            }
11628        }
11629    }
11630
11631    impl<'de> serde::de::Deserialize<'de> for State {
11632        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11633        where
11634            D: serde::Deserializer<'de>,
11635        {
11636            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
11637                ".google.cloud.gkemulticloud.v1.AzureNodePool.State",
11638            ))
11639        }
11640    }
11641}
11642
11643/// AzureNodeManagement defines the set of node management features turned on for
11644/// an Azure node pool.
11645#[derive(Clone, Default, PartialEq)]
11646#[non_exhaustive]
11647#[deprecated]
11648pub struct AzureNodeManagement {
11649    /// Optional. Whether or not the nodes will be automatically repaired. When set
11650    /// to true, the nodes in this node pool will be monitored and if they fail
11651    /// health checks consistently over a period of time, an automatic repair
11652    /// action will be triggered to replace them with new nodes.
11653    pub auto_repair: bool,
11654
11655    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11656}
11657
11658impl AzureNodeManagement {
11659    pub fn new() -> Self {
11660        std::default::Default::default()
11661    }
11662
11663    /// Sets the value of [auto_repair][crate::model::AzureNodeManagement::auto_repair].
11664    ///
11665    /// # Example
11666    /// ```ignore,no_run
11667    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeManagement;
11668    /// let x = AzureNodeManagement::new().set_auto_repair(true);
11669    /// ```
11670    pub fn set_auto_repair<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
11671        self.auto_repair = v.into();
11672        self
11673    }
11674}
11675
11676impl wkt::message::Message for AzureNodeManagement {
11677    fn typename() -> &'static str {
11678        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureNodeManagement"
11679    }
11680}
11681
11682/// Parameters that describe the configuration of all node machines
11683/// on a given node pool.
11684#[derive(Clone, Default, PartialEq)]
11685#[non_exhaustive]
11686#[deprecated]
11687pub struct AzureNodeConfig {
11688    /// Optional. The Azure VM size name. Example: `Standard_DS2_v2`.
11689    ///
11690    /// See [Supported VM
11691    /// sizes](/anthos/clusters/docs/azure/reference/supported-vms) for options.
11692    ///
11693    /// When unspecified, it defaults to `Standard_DS2_v2`.
11694    pub vm_size: std::string::String,
11695
11696    /// Optional. Configuration related to the root volume provisioned for each
11697    /// node pool machine.
11698    ///
11699    /// When unspecified, it defaults to a 32-GiB Azure Disk.
11700    pub root_volume: std::option::Option<crate::model::AzureDiskTemplate>,
11701
11702    /// Optional. A set of tags to apply to all underlying Azure resources for this
11703    /// node pool. This currently only includes Virtual Machine Scale Sets.
11704    ///
11705    /// Specify at most 50 pairs containing alphanumerics, spaces, and symbols
11706    /// (.+-=_:@/). Keys can be up to 127 Unicode characters. Values can be up to
11707    /// 255 Unicode characters.
11708    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
11709
11710    /// Optional. The OS image type to use on node pool instances.
11711    /// Can be unspecified, or have a value of `ubuntu`.
11712    ///
11713    /// When unspecified, it defaults to `ubuntu`.
11714    pub image_type: std::string::String,
11715
11716    /// Required. SSH configuration for how to access the node pool machines.
11717    pub ssh_config: std::option::Option<crate::model::AzureSshConfig>,
11718
11719    /// Optional. Proxy configuration for outbound HTTP(S) traffic.
11720    pub proxy_config: std::option::Option<crate::model::AzureProxyConfig>,
11721
11722    /// Optional. Configuration related to vm config encryption.
11723    pub config_encryption: std::option::Option<crate::model::AzureConfigEncryption>,
11724
11725    /// Optional. The initial taints assigned to nodes of this node pool.
11726    pub taints: std::vec::Vec<crate::model::NodeTaint>,
11727
11728    /// Optional. The initial labels assigned to nodes of this node pool. An object
11729    /// containing a list of "key": value pairs. Example: { "name": "wrench",
11730    /// "mass": "1.3kg", "count": "3" }.
11731    pub labels: std::collections::HashMap<std::string::String, std::string::String>,
11732
11733    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11734}
11735
11736impl AzureNodeConfig {
11737    pub fn new() -> Self {
11738        std::default::Default::default()
11739    }
11740
11741    /// Sets the value of [vm_size][crate::model::AzureNodeConfig::vm_size].
11742    ///
11743    /// # Example
11744    /// ```ignore,no_run
11745    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11746    /// let x = AzureNodeConfig::new().set_vm_size("example");
11747    /// ```
11748    pub fn set_vm_size<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11749        self.vm_size = v.into();
11750        self
11751    }
11752
11753    /// Sets the value of [root_volume][crate::model::AzureNodeConfig::root_volume].
11754    ///
11755    /// # Example
11756    /// ```ignore,no_run
11757    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11758    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
11759    /// let x = AzureNodeConfig::new().set_root_volume(AzureDiskTemplate::default()/* use setters */);
11760    /// ```
11761    pub fn set_root_volume<T>(mut self, v: T) -> Self
11762    where
11763        T: std::convert::Into<crate::model::AzureDiskTemplate>,
11764    {
11765        self.root_volume = std::option::Option::Some(v.into());
11766        self
11767    }
11768
11769    /// Sets or clears the value of [root_volume][crate::model::AzureNodeConfig::root_volume].
11770    ///
11771    /// # Example
11772    /// ```ignore,no_run
11773    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11774    /// use google_cloud_gkemulticloud_v1::model::AzureDiskTemplate;
11775    /// let x = AzureNodeConfig::new().set_or_clear_root_volume(Some(AzureDiskTemplate::default()/* use setters */));
11776    /// let x = AzureNodeConfig::new().set_or_clear_root_volume(None::<AzureDiskTemplate>);
11777    /// ```
11778    pub fn set_or_clear_root_volume<T>(mut self, v: std::option::Option<T>) -> Self
11779    where
11780        T: std::convert::Into<crate::model::AzureDiskTemplate>,
11781    {
11782        self.root_volume = v.map(|x| x.into());
11783        self
11784    }
11785
11786    /// Sets the value of [tags][crate::model::AzureNodeConfig::tags].
11787    ///
11788    /// # Example
11789    /// ```ignore,no_run
11790    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11791    /// let x = AzureNodeConfig::new().set_tags([
11792    ///     ("key0", "abc"),
11793    ///     ("key1", "xyz"),
11794    /// ]);
11795    /// ```
11796    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
11797    where
11798        T: std::iter::IntoIterator<Item = (K, V)>,
11799        K: std::convert::Into<std::string::String>,
11800        V: std::convert::Into<std::string::String>,
11801    {
11802        use std::iter::Iterator;
11803        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
11804        self
11805    }
11806
11807    /// Sets the value of [image_type][crate::model::AzureNodeConfig::image_type].
11808    ///
11809    /// # Example
11810    /// ```ignore,no_run
11811    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11812    /// let x = AzureNodeConfig::new().set_image_type("example");
11813    /// ```
11814    pub fn set_image_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
11815        self.image_type = v.into();
11816        self
11817    }
11818
11819    /// Sets the value of [ssh_config][crate::model::AzureNodeConfig::ssh_config].
11820    ///
11821    /// # Example
11822    /// ```ignore,no_run
11823    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11824    /// use google_cloud_gkemulticloud_v1::model::AzureSshConfig;
11825    /// let x = AzureNodeConfig::new().set_ssh_config(AzureSshConfig::default()/* use setters */);
11826    /// ```
11827    pub fn set_ssh_config<T>(mut self, v: T) -> Self
11828    where
11829        T: std::convert::Into<crate::model::AzureSshConfig>,
11830    {
11831        self.ssh_config = std::option::Option::Some(v.into());
11832        self
11833    }
11834
11835    /// Sets or clears the value of [ssh_config][crate::model::AzureNodeConfig::ssh_config].
11836    ///
11837    /// # Example
11838    /// ```ignore,no_run
11839    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11840    /// use google_cloud_gkemulticloud_v1::model::AzureSshConfig;
11841    /// let x = AzureNodeConfig::new().set_or_clear_ssh_config(Some(AzureSshConfig::default()/* use setters */));
11842    /// let x = AzureNodeConfig::new().set_or_clear_ssh_config(None::<AzureSshConfig>);
11843    /// ```
11844    pub fn set_or_clear_ssh_config<T>(mut self, v: std::option::Option<T>) -> Self
11845    where
11846        T: std::convert::Into<crate::model::AzureSshConfig>,
11847    {
11848        self.ssh_config = v.map(|x| x.into());
11849        self
11850    }
11851
11852    /// Sets the value of [proxy_config][crate::model::AzureNodeConfig::proxy_config].
11853    ///
11854    /// # Example
11855    /// ```ignore,no_run
11856    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11857    /// use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
11858    /// let x = AzureNodeConfig::new().set_proxy_config(AzureProxyConfig::default()/* use setters */);
11859    /// ```
11860    pub fn set_proxy_config<T>(mut self, v: T) -> Self
11861    where
11862        T: std::convert::Into<crate::model::AzureProxyConfig>,
11863    {
11864        self.proxy_config = std::option::Option::Some(v.into());
11865        self
11866    }
11867
11868    /// Sets or clears the value of [proxy_config][crate::model::AzureNodeConfig::proxy_config].
11869    ///
11870    /// # Example
11871    /// ```ignore,no_run
11872    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11873    /// use google_cloud_gkemulticloud_v1::model::AzureProxyConfig;
11874    /// let x = AzureNodeConfig::new().set_or_clear_proxy_config(Some(AzureProxyConfig::default()/* use setters */));
11875    /// let x = AzureNodeConfig::new().set_or_clear_proxy_config(None::<AzureProxyConfig>);
11876    /// ```
11877    pub fn set_or_clear_proxy_config<T>(mut self, v: std::option::Option<T>) -> Self
11878    where
11879        T: std::convert::Into<crate::model::AzureProxyConfig>,
11880    {
11881        self.proxy_config = v.map(|x| x.into());
11882        self
11883    }
11884
11885    /// Sets the value of [config_encryption][crate::model::AzureNodeConfig::config_encryption].
11886    ///
11887    /// # Example
11888    /// ```ignore,no_run
11889    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11890    /// use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
11891    /// let x = AzureNodeConfig::new().set_config_encryption(AzureConfigEncryption::default()/* use setters */);
11892    /// ```
11893    pub fn set_config_encryption<T>(mut self, v: T) -> Self
11894    where
11895        T: std::convert::Into<crate::model::AzureConfigEncryption>,
11896    {
11897        self.config_encryption = std::option::Option::Some(v.into());
11898        self
11899    }
11900
11901    /// Sets or clears the value of [config_encryption][crate::model::AzureNodeConfig::config_encryption].
11902    ///
11903    /// # Example
11904    /// ```ignore,no_run
11905    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11906    /// use google_cloud_gkemulticloud_v1::model::AzureConfigEncryption;
11907    /// let x = AzureNodeConfig::new().set_or_clear_config_encryption(Some(AzureConfigEncryption::default()/* use setters */));
11908    /// let x = AzureNodeConfig::new().set_or_clear_config_encryption(None::<AzureConfigEncryption>);
11909    /// ```
11910    pub fn set_or_clear_config_encryption<T>(mut self, v: std::option::Option<T>) -> Self
11911    where
11912        T: std::convert::Into<crate::model::AzureConfigEncryption>,
11913    {
11914        self.config_encryption = v.map(|x| x.into());
11915        self
11916    }
11917
11918    /// Sets the value of [taints][crate::model::AzureNodeConfig::taints].
11919    ///
11920    /// # Example
11921    /// ```ignore,no_run
11922    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11923    /// use google_cloud_gkemulticloud_v1::model::NodeTaint;
11924    /// let x = AzureNodeConfig::new()
11925    ///     .set_taints([
11926    ///         NodeTaint::default()/* use setters */,
11927    ///         NodeTaint::default()/* use (different) setters */,
11928    ///     ]);
11929    /// ```
11930    pub fn set_taints<T, V>(mut self, v: T) -> Self
11931    where
11932        T: std::iter::IntoIterator<Item = V>,
11933        V: std::convert::Into<crate::model::NodeTaint>,
11934    {
11935        use std::iter::Iterator;
11936        self.taints = v.into_iter().map(|i| i.into()).collect();
11937        self
11938    }
11939
11940    /// Sets the value of [labels][crate::model::AzureNodeConfig::labels].
11941    ///
11942    /// # Example
11943    /// ```ignore,no_run
11944    /// # use google_cloud_gkemulticloud_v1::model::AzureNodeConfig;
11945    /// let x = AzureNodeConfig::new().set_labels([
11946    ///     ("key0", "abc"),
11947    ///     ("key1", "xyz"),
11948    /// ]);
11949    /// ```
11950    pub fn set_labels<T, K, V>(mut self, v: T) -> Self
11951    where
11952        T: std::iter::IntoIterator<Item = (K, V)>,
11953        K: std::convert::Into<std::string::String>,
11954        V: std::convert::Into<std::string::String>,
11955    {
11956        use std::iter::Iterator;
11957        self.labels = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
11958        self
11959    }
11960}
11961
11962impl wkt::message::Message for AzureNodeConfig {
11963    fn typename() -> &'static str {
11964        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureNodeConfig"
11965    }
11966}
11967
11968/// Configuration related to Kubernetes cluster autoscaler.
11969///
11970/// The Kubernetes cluster autoscaler will automatically adjust the
11971/// size of the node pool based on the cluster load.
11972#[derive(Clone, Default, PartialEq)]
11973#[non_exhaustive]
11974#[deprecated]
11975pub struct AzureNodePoolAutoscaling {
11976    /// Required. Minimum number of nodes in the node pool. Must be greater than or
11977    /// equal to 1 and less than or equal to max_node_count.
11978    pub min_node_count: i32,
11979
11980    /// Required. Maximum number of nodes in the node pool. Must be greater than or
11981    /// equal to min_node_count and less than or equal to 50.
11982    pub max_node_count: i32,
11983
11984    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
11985}
11986
11987impl AzureNodePoolAutoscaling {
11988    pub fn new() -> Self {
11989        std::default::Default::default()
11990    }
11991
11992    /// Sets the value of [min_node_count][crate::model::AzureNodePoolAutoscaling::min_node_count].
11993    ///
11994    /// # Example
11995    /// ```ignore,no_run
11996    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePoolAutoscaling;
11997    /// let x = AzureNodePoolAutoscaling::new().set_min_node_count(42);
11998    /// ```
11999    pub fn set_min_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
12000        self.min_node_count = v.into();
12001        self
12002    }
12003
12004    /// Sets the value of [max_node_count][crate::model::AzureNodePoolAutoscaling::max_node_count].
12005    ///
12006    /// # Example
12007    /// ```ignore,no_run
12008    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePoolAutoscaling;
12009    /// let x = AzureNodePoolAutoscaling::new().set_max_node_count(42);
12010    /// ```
12011    pub fn set_max_node_count<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
12012        self.max_node_count = v.into();
12013        self
12014    }
12015}
12016
12017impl wkt::message::Message for AzureNodePoolAutoscaling {
12018    fn typename() -> &'static str {
12019        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureNodePoolAutoscaling"
12020    }
12021}
12022
12023/// AzureOpenIdConfig is an OIDC discovery document for the cluster.
12024/// See the OpenID Connect Discovery 1.0 specification for details.
12025#[derive(Clone, Default, PartialEq)]
12026#[non_exhaustive]
12027#[deprecated]
12028pub struct AzureOpenIdConfig {
12029    /// OIDC Issuer.
12030    pub issuer: std::string::String,
12031
12032    /// JSON Web Key uri.
12033    pub jwks_uri: std::string::String,
12034
12035    /// Supported response types.
12036    pub response_types_supported: std::vec::Vec<std::string::String>,
12037
12038    /// Supported subject types.
12039    pub subject_types_supported: std::vec::Vec<std::string::String>,
12040
12041    /// supported ID Token signing Algorithms.
12042    pub id_token_signing_alg_values_supported: std::vec::Vec<std::string::String>,
12043
12044    /// Supported claims.
12045    pub claims_supported: std::vec::Vec<std::string::String>,
12046
12047    /// Supported grant types.
12048    pub grant_types: std::vec::Vec<std::string::String>,
12049
12050    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12051}
12052
12053impl AzureOpenIdConfig {
12054    pub fn new() -> Self {
12055        std::default::Default::default()
12056    }
12057
12058    /// Sets the value of [issuer][crate::model::AzureOpenIdConfig::issuer].
12059    ///
12060    /// # Example
12061    /// ```ignore,no_run
12062    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12063    /// let x = AzureOpenIdConfig::new().set_issuer("example");
12064    /// ```
12065    pub fn set_issuer<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12066        self.issuer = v.into();
12067        self
12068    }
12069
12070    /// Sets the value of [jwks_uri][crate::model::AzureOpenIdConfig::jwks_uri].
12071    ///
12072    /// # Example
12073    /// ```ignore,no_run
12074    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12075    /// let x = AzureOpenIdConfig::new().set_jwks_uri("example");
12076    /// ```
12077    pub fn set_jwks_uri<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12078        self.jwks_uri = v.into();
12079        self
12080    }
12081
12082    /// Sets the value of [response_types_supported][crate::model::AzureOpenIdConfig::response_types_supported].
12083    ///
12084    /// # Example
12085    /// ```ignore,no_run
12086    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12087    /// let x = AzureOpenIdConfig::new().set_response_types_supported(["a", "b", "c"]);
12088    /// ```
12089    pub fn set_response_types_supported<T, V>(mut self, v: T) -> Self
12090    where
12091        T: std::iter::IntoIterator<Item = V>,
12092        V: std::convert::Into<std::string::String>,
12093    {
12094        use std::iter::Iterator;
12095        self.response_types_supported = v.into_iter().map(|i| i.into()).collect();
12096        self
12097    }
12098
12099    /// Sets the value of [subject_types_supported][crate::model::AzureOpenIdConfig::subject_types_supported].
12100    ///
12101    /// # Example
12102    /// ```ignore,no_run
12103    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12104    /// let x = AzureOpenIdConfig::new().set_subject_types_supported(["a", "b", "c"]);
12105    /// ```
12106    pub fn set_subject_types_supported<T, V>(mut self, v: T) -> Self
12107    where
12108        T: std::iter::IntoIterator<Item = V>,
12109        V: std::convert::Into<std::string::String>,
12110    {
12111        use std::iter::Iterator;
12112        self.subject_types_supported = v.into_iter().map(|i| i.into()).collect();
12113        self
12114    }
12115
12116    /// Sets the value of [id_token_signing_alg_values_supported][crate::model::AzureOpenIdConfig::id_token_signing_alg_values_supported].
12117    ///
12118    /// # Example
12119    /// ```ignore,no_run
12120    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12121    /// let x = AzureOpenIdConfig::new().set_id_token_signing_alg_values_supported(["a", "b", "c"]);
12122    /// ```
12123    pub fn set_id_token_signing_alg_values_supported<T, V>(mut self, v: T) -> Self
12124    where
12125        T: std::iter::IntoIterator<Item = V>,
12126        V: std::convert::Into<std::string::String>,
12127    {
12128        use std::iter::Iterator;
12129        self.id_token_signing_alg_values_supported = v.into_iter().map(|i| i.into()).collect();
12130        self
12131    }
12132
12133    /// Sets the value of [claims_supported][crate::model::AzureOpenIdConfig::claims_supported].
12134    ///
12135    /// # Example
12136    /// ```ignore,no_run
12137    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12138    /// let x = AzureOpenIdConfig::new().set_claims_supported(["a", "b", "c"]);
12139    /// ```
12140    pub fn set_claims_supported<T, V>(mut self, v: T) -> Self
12141    where
12142        T: std::iter::IntoIterator<Item = V>,
12143        V: std::convert::Into<std::string::String>,
12144    {
12145        use std::iter::Iterator;
12146        self.claims_supported = v.into_iter().map(|i| i.into()).collect();
12147        self
12148    }
12149
12150    /// Sets the value of [grant_types][crate::model::AzureOpenIdConfig::grant_types].
12151    ///
12152    /// # Example
12153    /// ```ignore,no_run
12154    /// # use google_cloud_gkemulticloud_v1::model::AzureOpenIdConfig;
12155    /// let x = AzureOpenIdConfig::new().set_grant_types(["a", "b", "c"]);
12156    /// ```
12157    pub fn set_grant_types<T, V>(mut self, v: T) -> Self
12158    where
12159        T: std::iter::IntoIterator<Item = V>,
12160        V: std::convert::Into<std::string::String>,
12161    {
12162        use std::iter::Iterator;
12163        self.grant_types = v.into_iter().map(|i| i.into()).collect();
12164        self
12165    }
12166}
12167
12168impl wkt::message::Message for AzureOpenIdConfig {
12169    fn typename() -> &'static str {
12170        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureOpenIdConfig"
12171    }
12172}
12173
12174/// AzureJsonWebKeys is a valid JSON Web Key Set as specififed in RFC 7517.
12175#[derive(Clone, Default, PartialEq)]
12176#[non_exhaustive]
12177#[deprecated]
12178pub struct AzureJsonWebKeys {
12179    /// The public component of the keys used by the cluster to sign token
12180    /// requests.
12181    pub keys: std::vec::Vec<crate::model::Jwk>,
12182
12183    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12184}
12185
12186impl AzureJsonWebKeys {
12187    pub fn new() -> Self {
12188        std::default::Default::default()
12189    }
12190
12191    /// Sets the value of [keys][crate::model::AzureJsonWebKeys::keys].
12192    ///
12193    /// # Example
12194    /// ```ignore,no_run
12195    /// # use google_cloud_gkemulticloud_v1::model::AzureJsonWebKeys;
12196    /// use google_cloud_gkemulticloud_v1::model::Jwk;
12197    /// let x = AzureJsonWebKeys::new()
12198    ///     .set_keys([
12199    ///         Jwk::default()/* use setters */,
12200    ///         Jwk::default()/* use (different) setters */,
12201    ///     ]);
12202    /// ```
12203    pub fn set_keys<T, V>(mut self, v: T) -> Self
12204    where
12205        T: std::iter::IntoIterator<Item = V>,
12206        V: std::convert::Into<crate::model::Jwk>,
12207    {
12208        use std::iter::Iterator;
12209        self.keys = v.into_iter().map(|i| i.into()).collect();
12210        self
12211    }
12212}
12213
12214impl wkt::message::Message for AzureJsonWebKeys {
12215    fn typename() -> &'static str {
12216        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureJsonWebKeys"
12217    }
12218}
12219
12220/// AzureServerConfig contains information about a Google Cloud location, such as
12221/// supported Azure regions and Kubernetes versions.
12222#[derive(Clone, Default, PartialEq)]
12223#[non_exhaustive]
12224#[deprecated]
12225pub struct AzureServerConfig {
12226    /// The `AzureServerConfig` resource name.
12227    ///
12228    /// `AzureServerConfig` names are formatted as
12229    /// `projects/<project-number>/locations/<region>/azureServerConfig`.
12230    ///
12231    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
12232    /// for more details on Google Cloud Platform resource names.
12233    pub name: std::string::String,
12234
12235    /// List of all released Kubernetes versions, including ones which are end of
12236    /// life and can no longer be used.  Filter by the `enabled`
12237    /// property to limit to currently available versions.
12238    /// Valid versions supported for both create and update operations
12239    pub valid_versions: std::vec::Vec<crate::model::AzureK8sVersionInfo>,
12240
12241    /// The list of supported Azure regions.
12242    pub supported_azure_regions: std::vec::Vec<std::string::String>,
12243
12244    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12245}
12246
12247impl AzureServerConfig {
12248    pub fn new() -> Self {
12249        std::default::Default::default()
12250    }
12251
12252    /// Sets the value of [name][crate::model::AzureServerConfig::name].
12253    ///
12254    /// # Example
12255    /// ```ignore,no_run
12256    /// # use google_cloud_gkemulticloud_v1::model::AzureServerConfig;
12257    /// let x = AzureServerConfig::new().set_name("example");
12258    /// ```
12259    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12260        self.name = v.into();
12261        self
12262    }
12263
12264    /// Sets the value of [valid_versions][crate::model::AzureServerConfig::valid_versions].
12265    ///
12266    /// # Example
12267    /// ```ignore,no_run
12268    /// # use google_cloud_gkemulticloud_v1::model::AzureServerConfig;
12269    /// use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12270    /// let x = AzureServerConfig::new()
12271    ///     .set_valid_versions([
12272    ///         AzureK8sVersionInfo::default()/* use setters */,
12273    ///         AzureK8sVersionInfo::default()/* use (different) setters */,
12274    ///     ]);
12275    /// ```
12276    pub fn set_valid_versions<T, V>(mut self, v: T) -> Self
12277    where
12278        T: std::iter::IntoIterator<Item = V>,
12279        V: std::convert::Into<crate::model::AzureK8sVersionInfo>,
12280    {
12281        use std::iter::Iterator;
12282        self.valid_versions = v.into_iter().map(|i| i.into()).collect();
12283        self
12284    }
12285
12286    /// Sets the value of [supported_azure_regions][crate::model::AzureServerConfig::supported_azure_regions].
12287    ///
12288    /// # Example
12289    /// ```ignore,no_run
12290    /// # use google_cloud_gkemulticloud_v1::model::AzureServerConfig;
12291    /// let x = AzureServerConfig::new().set_supported_azure_regions(["a", "b", "c"]);
12292    /// ```
12293    pub fn set_supported_azure_regions<T, V>(mut self, v: T) -> Self
12294    where
12295        T: std::iter::IntoIterator<Item = V>,
12296        V: std::convert::Into<std::string::String>,
12297    {
12298        use std::iter::Iterator;
12299        self.supported_azure_regions = v.into_iter().map(|i| i.into()).collect();
12300        self
12301    }
12302}
12303
12304impl wkt::message::Message for AzureServerConfig {
12305    fn typename() -> &'static str {
12306        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureServerConfig"
12307    }
12308}
12309
12310/// Kubernetes version information of GKE cluster on Azure.
12311#[derive(Clone, Default, PartialEq)]
12312#[non_exhaustive]
12313#[deprecated]
12314pub struct AzureK8sVersionInfo {
12315    /// Kubernetes version name (for example, `1.19.10-gke.1000`)
12316    pub version: std::string::String,
12317
12318    /// Optional. True if the version is available for cluster creation. If a
12319    /// version is enabled for creation, it can be used to create new clusters.
12320    /// Otherwise, cluster creation will fail. However, cluster upgrade operations
12321    /// may succeed, even if the version is not enabled.
12322    pub enabled: bool,
12323
12324    /// Optional. True if this cluster version belongs to a minor version that has
12325    /// reached its end of life and is no longer in scope to receive security and
12326    /// bug fixes.
12327    pub end_of_life: bool,
12328
12329    /// Optional. The estimated date (in Pacific Time) when this cluster version
12330    /// will reach its end of life. Or if this version is no longer supported (the
12331    /// `end_of_life` field is true), this is the actual date (in Pacific time)
12332    /// when the version reached its end of life.
12333    pub end_of_life_date: std::option::Option<google_cloud_type::model::Date>,
12334
12335    /// Optional. The date (in Pacific Time) when the cluster version was released.
12336    pub release_date: std::option::Option<google_cloud_type::model::Date>,
12337
12338    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12339}
12340
12341impl AzureK8sVersionInfo {
12342    pub fn new() -> Self {
12343        std::default::Default::default()
12344    }
12345
12346    /// Sets the value of [version][crate::model::AzureK8sVersionInfo::version].
12347    ///
12348    /// # Example
12349    /// ```ignore,no_run
12350    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12351    /// let x = AzureK8sVersionInfo::new().set_version("example");
12352    /// ```
12353    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12354        self.version = v.into();
12355        self
12356    }
12357
12358    /// Sets the value of [enabled][crate::model::AzureK8sVersionInfo::enabled].
12359    ///
12360    /// # Example
12361    /// ```ignore,no_run
12362    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12363    /// let x = AzureK8sVersionInfo::new().set_enabled(true);
12364    /// ```
12365    pub fn set_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
12366        self.enabled = v.into();
12367        self
12368    }
12369
12370    /// Sets the value of [end_of_life][crate::model::AzureK8sVersionInfo::end_of_life].
12371    ///
12372    /// # Example
12373    /// ```ignore,no_run
12374    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12375    /// let x = AzureK8sVersionInfo::new().set_end_of_life(true);
12376    /// ```
12377    pub fn set_end_of_life<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
12378        self.end_of_life = v.into();
12379        self
12380    }
12381
12382    /// Sets the value of [end_of_life_date][crate::model::AzureK8sVersionInfo::end_of_life_date].
12383    ///
12384    /// # Example
12385    /// ```ignore,no_run
12386    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12387    /// use google_cloud_type::model::Date;
12388    /// let x = AzureK8sVersionInfo::new().set_end_of_life_date(Date::default()/* use setters */);
12389    /// ```
12390    pub fn set_end_of_life_date<T>(mut self, v: T) -> Self
12391    where
12392        T: std::convert::Into<google_cloud_type::model::Date>,
12393    {
12394        self.end_of_life_date = std::option::Option::Some(v.into());
12395        self
12396    }
12397
12398    /// Sets or clears the value of [end_of_life_date][crate::model::AzureK8sVersionInfo::end_of_life_date].
12399    ///
12400    /// # Example
12401    /// ```ignore,no_run
12402    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12403    /// use google_cloud_type::model::Date;
12404    /// let x = AzureK8sVersionInfo::new().set_or_clear_end_of_life_date(Some(Date::default()/* use setters */));
12405    /// let x = AzureK8sVersionInfo::new().set_or_clear_end_of_life_date(None::<Date>);
12406    /// ```
12407    pub fn set_or_clear_end_of_life_date<T>(mut self, v: std::option::Option<T>) -> Self
12408    where
12409        T: std::convert::Into<google_cloud_type::model::Date>,
12410    {
12411        self.end_of_life_date = v.map(|x| x.into());
12412        self
12413    }
12414
12415    /// Sets the value of [release_date][crate::model::AzureK8sVersionInfo::release_date].
12416    ///
12417    /// # Example
12418    /// ```ignore,no_run
12419    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12420    /// use google_cloud_type::model::Date;
12421    /// let x = AzureK8sVersionInfo::new().set_release_date(Date::default()/* use setters */);
12422    /// ```
12423    pub fn set_release_date<T>(mut self, v: T) -> Self
12424    where
12425        T: std::convert::Into<google_cloud_type::model::Date>,
12426    {
12427        self.release_date = std::option::Option::Some(v.into());
12428        self
12429    }
12430
12431    /// Sets or clears the value of [release_date][crate::model::AzureK8sVersionInfo::release_date].
12432    ///
12433    /// # Example
12434    /// ```ignore,no_run
12435    /// # use google_cloud_gkemulticloud_v1::model::AzureK8sVersionInfo;
12436    /// use google_cloud_type::model::Date;
12437    /// let x = AzureK8sVersionInfo::new().set_or_clear_release_date(Some(Date::default()/* use setters */));
12438    /// let x = AzureK8sVersionInfo::new().set_or_clear_release_date(None::<Date>);
12439    /// ```
12440    pub fn set_or_clear_release_date<T>(mut self, v: std::option::Option<T>) -> Self
12441    where
12442        T: std::convert::Into<google_cloud_type::model::Date>,
12443    {
12444        self.release_date = v.map(|x| x.into());
12445        self
12446    }
12447}
12448
12449impl wkt::message::Message for AzureK8sVersionInfo {
12450    fn typename() -> &'static str {
12451        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureK8sVersionInfo"
12452    }
12453}
12454
12455/// SSH configuration for Azure resources.
12456#[derive(Clone, Default, PartialEq)]
12457#[non_exhaustive]
12458#[deprecated]
12459pub struct AzureSshConfig {
12460    /// Required. The SSH public key data for VMs managed by Anthos. This accepts
12461    /// the authorized_keys file format used in OpenSSH according to the sshd(8)
12462    /// manual page.
12463    pub authorized_key: std::string::String,
12464
12465    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12466}
12467
12468impl AzureSshConfig {
12469    pub fn new() -> Self {
12470        std::default::Default::default()
12471    }
12472
12473    /// Sets the value of [authorized_key][crate::model::AzureSshConfig::authorized_key].
12474    ///
12475    /// # Example
12476    /// ```ignore,no_run
12477    /// # use google_cloud_gkemulticloud_v1::model::AzureSshConfig;
12478    /// let x = AzureSshConfig::new().set_authorized_key("example");
12479    /// ```
12480    pub fn set_authorized_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12481        self.authorized_key = v.into();
12482        self
12483    }
12484}
12485
12486impl wkt::message::Message for AzureSshConfig {
12487    fn typename() -> &'static str {
12488        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureSshConfig"
12489    }
12490}
12491
12492/// Managed Azure resources for the cluster.
12493///
12494/// The values could change and be empty, depending on the state of the cluster.
12495#[derive(Clone, Default, PartialEq)]
12496#[non_exhaustive]
12497#[deprecated]
12498pub struct AzureClusterResources {
12499    /// Output only. The ARM ID of the cluster network security group.
12500    pub network_security_group_id: std::string::String,
12501
12502    /// Output only. The ARM ID of the control plane application security group.
12503    pub control_plane_application_security_group_id: std::string::String,
12504
12505    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12506}
12507
12508impl AzureClusterResources {
12509    pub fn new() -> Self {
12510        std::default::Default::default()
12511    }
12512
12513    /// Sets the value of [network_security_group_id][crate::model::AzureClusterResources::network_security_group_id].
12514    ///
12515    /// # Example
12516    /// ```ignore,no_run
12517    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterResources;
12518    /// let x = AzureClusterResources::new().set_network_security_group_id("example");
12519    /// ```
12520    pub fn set_network_security_group_id<T: std::convert::Into<std::string::String>>(
12521        mut self,
12522        v: T,
12523    ) -> Self {
12524        self.network_security_group_id = v.into();
12525        self
12526    }
12527
12528    /// Sets the value of [control_plane_application_security_group_id][crate::model::AzureClusterResources::control_plane_application_security_group_id].
12529    ///
12530    /// # Example
12531    /// ```ignore,no_run
12532    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterResources;
12533    /// let x = AzureClusterResources::new().set_control_plane_application_security_group_id("example");
12534    /// ```
12535    pub fn set_control_plane_application_security_group_id<
12536        T: std::convert::Into<std::string::String>,
12537    >(
12538        mut self,
12539        v: T,
12540    ) -> Self {
12541        self.control_plane_application_security_group_id = v.into();
12542        self
12543    }
12544}
12545
12546impl wkt::message::Message for AzureClusterResources {
12547    fn typename() -> &'static str {
12548        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClusterResources"
12549    }
12550}
12551
12552/// AzureClusterError describes errors found on Azure clusters.
12553#[derive(Clone, Default, PartialEq)]
12554#[non_exhaustive]
12555#[deprecated]
12556pub struct AzureClusterError {
12557    /// Human-friendly description of the error.
12558    pub message: std::string::String,
12559
12560    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12561}
12562
12563impl AzureClusterError {
12564    pub fn new() -> Self {
12565        std::default::Default::default()
12566    }
12567
12568    /// Sets the value of [message][crate::model::AzureClusterError::message].
12569    ///
12570    /// # Example
12571    /// ```ignore,no_run
12572    /// # use google_cloud_gkemulticloud_v1::model::AzureClusterError;
12573    /// let x = AzureClusterError::new().set_message("example");
12574    /// ```
12575    pub fn set_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12576        self.message = v.into();
12577        self
12578    }
12579}
12580
12581impl wkt::message::Message for AzureClusterError {
12582    fn typename() -> &'static str {
12583        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureClusterError"
12584    }
12585}
12586
12587/// AzureNodePoolError describes errors found on Azure node pools.
12588#[derive(Clone, Default, PartialEq)]
12589#[non_exhaustive]
12590#[deprecated]
12591pub struct AzureNodePoolError {
12592    /// Human-friendly description of the error.
12593    pub message: std::string::String,
12594
12595    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12596}
12597
12598impl AzureNodePoolError {
12599    pub fn new() -> Self {
12600        std::default::Default::default()
12601    }
12602
12603    /// Sets the value of [message][crate::model::AzureNodePoolError::message].
12604    ///
12605    /// # Example
12606    /// ```ignore,no_run
12607    /// # use google_cloud_gkemulticloud_v1::model::AzureNodePoolError;
12608    /// let x = AzureNodePoolError::new().set_message("example");
12609    /// ```
12610    pub fn set_message<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12611        self.message = v.into();
12612        self
12613    }
12614}
12615
12616impl wkt::message::Message for AzureNodePoolError {
12617    fn typename() -> &'static str {
12618        "type.googleapis.com/google.cloud.gkemulticloud.v1.AzureNodePoolError"
12619    }
12620}
12621
12622/// Request message for `AzureClusters.CreateAzureCluster` method.
12623#[derive(Clone, Default, PartialEq)]
12624#[non_exhaustive]
12625#[deprecated]
12626pub struct CreateAzureClusterRequest {
12627    /// Required. The parent location where this
12628    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource will be
12629    /// created.
12630    ///
12631    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
12632    ///
12633    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
12634    /// for more details on Google Cloud resource names.
12635    ///
12636    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12637    pub parent: std::string::String,
12638
12639    /// Required. The specification of the
12640    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] to create.
12641    ///
12642    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12643    pub azure_cluster: std::option::Option<crate::model::AzureCluster>,
12644
12645    /// Required. A client provided ID the resource. Must be unique within the
12646    /// parent resource.
12647    ///
12648    /// The provided ID will be part of the
12649    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource name
12650    /// formatted as
12651    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
12652    ///
12653    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
12654    ///
12655    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12656    pub azure_cluster_id: std::string::String,
12657
12658    /// If set, only validate the request, but do not actually create the cluster.
12659    pub validate_only: bool,
12660
12661    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12662}
12663
12664impl CreateAzureClusterRequest {
12665    pub fn new() -> Self {
12666        std::default::Default::default()
12667    }
12668
12669    /// Sets the value of [parent][crate::model::CreateAzureClusterRequest::parent].
12670    ///
12671    /// # Example
12672    /// ```ignore,no_run
12673    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClusterRequest;
12674    /// let x = CreateAzureClusterRequest::new().set_parent("example");
12675    /// ```
12676    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12677        self.parent = v.into();
12678        self
12679    }
12680
12681    /// Sets the value of [azure_cluster][crate::model::CreateAzureClusterRequest::azure_cluster].
12682    ///
12683    /// # Example
12684    /// ```ignore,no_run
12685    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClusterRequest;
12686    /// use google_cloud_gkemulticloud_v1::model::AzureCluster;
12687    /// let x = CreateAzureClusterRequest::new().set_azure_cluster(AzureCluster::default()/* use setters */);
12688    /// ```
12689    pub fn set_azure_cluster<T>(mut self, v: T) -> Self
12690    where
12691        T: std::convert::Into<crate::model::AzureCluster>,
12692    {
12693        self.azure_cluster = std::option::Option::Some(v.into());
12694        self
12695    }
12696
12697    /// Sets or clears the value of [azure_cluster][crate::model::CreateAzureClusterRequest::azure_cluster].
12698    ///
12699    /// # Example
12700    /// ```ignore,no_run
12701    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClusterRequest;
12702    /// use google_cloud_gkemulticloud_v1::model::AzureCluster;
12703    /// let x = CreateAzureClusterRequest::new().set_or_clear_azure_cluster(Some(AzureCluster::default()/* use setters */));
12704    /// let x = CreateAzureClusterRequest::new().set_or_clear_azure_cluster(None::<AzureCluster>);
12705    /// ```
12706    pub fn set_or_clear_azure_cluster<T>(mut self, v: std::option::Option<T>) -> Self
12707    where
12708        T: std::convert::Into<crate::model::AzureCluster>,
12709    {
12710        self.azure_cluster = v.map(|x| x.into());
12711        self
12712    }
12713
12714    /// Sets the value of [azure_cluster_id][crate::model::CreateAzureClusterRequest::azure_cluster_id].
12715    ///
12716    /// # Example
12717    /// ```ignore,no_run
12718    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClusterRequest;
12719    /// let x = CreateAzureClusterRequest::new().set_azure_cluster_id("example");
12720    /// ```
12721    pub fn set_azure_cluster_id<T: std::convert::Into<std::string::String>>(
12722        mut self,
12723        v: T,
12724    ) -> Self {
12725        self.azure_cluster_id = v.into();
12726        self
12727    }
12728
12729    /// Sets the value of [validate_only][crate::model::CreateAzureClusterRequest::validate_only].
12730    ///
12731    /// # Example
12732    /// ```ignore,no_run
12733    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClusterRequest;
12734    /// let x = CreateAzureClusterRequest::new().set_validate_only(true);
12735    /// ```
12736    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
12737        self.validate_only = v.into();
12738        self
12739    }
12740}
12741
12742impl wkt::message::Message for CreateAzureClusterRequest {
12743    fn typename() -> &'static str {
12744        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAzureClusterRequest"
12745    }
12746}
12747
12748/// Request message for `AzureClusters.UpdateAzureCluster` method.
12749#[derive(Clone, Default, PartialEq)]
12750#[non_exhaustive]
12751#[deprecated]
12752pub struct UpdateAzureClusterRequest {
12753    /// Required. The [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]
12754    /// resource to update.
12755    ///
12756    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12757    pub azure_cluster: std::option::Option<crate::model::AzureCluster>,
12758
12759    /// If set, only validate the request, but do not actually update the cluster.
12760    pub validate_only: bool,
12761
12762    /// Required. Mask of fields to update. At least one path must be supplied in
12763    /// this field. The elements of the repeated paths field can only include these
12764    /// fields from [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]:
12765    ///
12766    /// * `description`.
12767    /// * `azureClient`.
12768    /// * `control_plane.version`.
12769    /// * `control_plane.vm_size`.
12770    /// * `annotations`.
12771    /// * `authorization.admin_users`.
12772    /// * `authorization.admin_groups`.
12773    /// * `control_plane.root_volume.size_gib`.
12774    /// * `azure_services_authentication`.
12775    /// * `azure_services_authentication.tenant_id`.
12776    /// * `azure_services_authentication.application_id`.
12777    /// * `control_plane.proxy_config`.
12778    /// * `control_plane.proxy_config.resource_group_id`.
12779    /// * `control_plane.proxy_config.secret_id`.
12780    /// * `control_plane.ssh_config.authorized_key`.
12781    /// * `logging_config.component_config.enable_components`
12782    /// * `monitoring_config.managed_prometheus_config.enabled`.
12783    ///
12784    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12785    pub update_mask: std::option::Option<wkt::FieldMask>,
12786
12787    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12788}
12789
12790impl UpdateAzureClusterRequest {
12791    pub fn new() -> Self {
12792        std::default::Default::default()
12793    }
12794
12795    /// Sets the value of [azure_cluster][crate::model::UpdateAzureClusterRequest::azure_cluster].
12796    ///
12797    /// # Example
12798    /// ```ignore,no_run
12799    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureClusterRequest;
12800    /// use google_cloud_gkemulticloud_v1::model::AzureCluster;
12801    /// let x = UpdateAzureClusterRequest::new().set_azure_cluster(AzureCluster::default()/* use setters */);
12802    /// ```
12803    pub fn set_azure_cluster<T>(mut self, v: T) -> Self
12804    where
12805        T: std::convert::Into<crate::model::AzureCluster>,
12806    {
12807        self.azure_cluster = std::option::Option::Some(v.into());
12808        self
12809    }
12810
12811    /// Sets or clears the value of [azure_cluster][crate::model::UpdateAzureClusterRequest::azure_cluster].
12812    ///
12813    /// # Example
12814    /// ```ignore,no_run
12815    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureClusterRequest;
12816    /// use google_cloud_gkemulticloud_v1::model::AzureCluster;
12817    /// let x = UpdateAzureClusterRequest::new().set_or_clear_azure_cluster(Some(AzureCluster::default()/* use setters */));
12818    /// let x = UpdateAzureClusterRequest::new().set_or_clear_azure_cluster(None::<AzureCluster>);
12819    /// ```
12820    pub fn set_or_clear_azure_cluster<T>(mut self, v: std::option::Option<T>) -> Self
12821    where
12822        T: std::convert::Into<crate::model::AzureCluster>,
12823    {
12824        self.azure_cluster = v.map(|x| x.into());
12825        self
12826    }
12827
12828    /// Sets the value of [validate_only][crate::model::UpdateAzureClusterRequest::validate_only].
12829    ///
12830    /// # Example
12831    /// ```ignore,no_run
12832    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureClusterRequest;
12833    /// let x = UpdateAzureClusterRequest::new().set_validate_only(true);
12834    /// ```
12835    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
12836        self.validate_only = v.into();
12837        self
12838    }
12839
12840    /// Sets the value of [update_mask][crate::model::UpdateAzureClusterRequest::update_mask].
12841    ///
12842    /// # Example
12843    /// ```ignore,no_run
12844    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureClusterRequest;
12845    /// use wkt::FieldMask;
12846    /// let x = UpdateAzureClusterRequest::new().set_update_mask(FieldMask::default()/* use setters */);
12847    /// ```
12848    pub fn set_update_mask<T>(mut self, v: T) -> Self
12849    where
12850        T: std::convert::Into<wkt::FieldMask>,
12851    {
12852        self.update_mask = std::option::Option::Some(v.into());
12853        self
12854    }
12855
12856    /// Sets or clears the value of [update_mask][crate::model::UpdateAzureClusterRequest::update_mask].
12857    ///
12858    /// # Example
12859    /// ```ignore,no_run
12860    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureClusterRequest;
12861    /// use wkt::FieldMask;
12862    /// let x = UpdateAzureClusterRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
12863    /// let x = UpdateAzureClusterRequest::new().set_or_clear_update_mask(None::<FieldMask>);
12864    /// ```
12865    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
12866    where
12867        T: std::convert::Into<wkt::FieldMask>,
12868    {
12869        self.update_mask = v.map(|x| x.into());
12870        self
12871    }
12872}
12873
12874impl wkt::message::Message for UpdateAzureClusterRequest {
12875    fn typename() -> &'static str {
12876        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateAzureClusterRequest"
12877    }
12878}
12879
12880/// Request message for `AzureClusters.GetAzureCluster` method.
12881#[derive(Clone, Default, PartialEq)]
12882#[non_exhaustive]
12883#[deprecated]
12884pub struct GetAzureClusterRequest {
12885    /// Required. The name of the
12886    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource to
12887    /// describe.
12888    ///
12889    /// `AzureCluster` names are formatted as
12890    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
12891    ///
12892    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
12893    /// for more details on Google Cloud Platform resource names.
12894    ///
12895    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12896    pub name: std::string::String,
12897
12898    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12899}
12900
12901impl GetAzureClusterRequest {
12902    pub fn new() -> Self {
12903        std::default::Default::default()
12904    }
12905
12906    /// Sets the value of [name][crate::model::GetAzureClusterRequest::name].
12907    ///
12908    /// # Example
12909    /// ```ignore,no_run
12910    /// # use google_cloud_gkemulticloud_v1::model::GetAzureClusterRequest;
12911    /// let x = GetAzureClusterRequest::new().set_name("example");
12912    /// ```
12913    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12914        self.name = v.into();
12915        self
12916    }
12917}
12918
12919impl wkt::message::Message for GetAzureClusterRequest {
12920    fn typename() -> &'static str {
12921        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureClusterRequest"
12922    }
12923}
12924
12925/// Request message for `AzureClusters.ListAzureClusters` method.
12926#[derive(Clone, Default, PartialEq)]
12927#[non_exhaustive]
12928#[deprecated]
12929pub struct ListAzureClustersRequest {
12930    /// Required. The parent location which owns this collection of
12931    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resources.
12932    ///
12933    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
12934    ///
12935    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
12936    /// for more details on Google Cloud Platform resource names.
12937    ///
12938    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
12939    pub parent: std::string::String,
12940
12941    /// The maximum number of items to return.
12942    ///
12943    /// If not specified, a default value of 50 will be used by the service.
12944    /// Regardless of the pageSize value, the response can include a partial list
12945    /// and a caller should only rely on response's
12946    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureClustersResponse.next_page_token]
12947    /// to determine if there are more instances left to be queried.
12948    ///
12949    /// [google.cloud.gkemulticloud.v1.ListAzureClustersResponse.next_page_token]: crate::model::ListAzureClustersResponse::next_page_token
12950    pub page_size: i32,
12951
12952    /// The `nextPageToken` value returned from a previous
12953    /// [azureClusters.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClusters]
12954    /// request, if any.
12955    ///
12956    /// [google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClusters]: crate::client::AzureClusters::list_azure_clusters
12957    pub page_token: std::string::String,
12958
12959    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
12960}
12961
12962impl ListAzureClustersRequest {
12963    pub fn new() -> Self {
12964        std::default::Default::default()
12965    }
12966
12967    /// Sets the value of [parent][crate::model::ListAzureClustersRequest::parent].
12968    ///
12969    /// # Example
12970    /// ```ignore,no_run
12971    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClustersRequest;
12972    /// let x = ListAzureClustersRequest::new().set_parent("example");
12973    /// ```
12974    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12975        self.parent = v.into();
12976        self
12977    }
12978
12979    /// Sets the value of [page_size][crate::model::ListAzureClustersRequest::page_size].
12980    ///
12981    /// # Example
12982    /// ```ignore,no_run
12983    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClustersRequest;
12984    /// let x = ListAzureClustersRequest::new().set_page_size(42);
12985    /// ```
12986    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
12987        self.page_size = v.into();
12988        self
12989    }
12990
12991    /// Sets the value of [page_token][crate::model::ListAzureClustersRequest::page_token].
12992    ///
12993    /// # Example
12994    /// ```ignore,no_run
12995    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClustersRequest;
12996    /// let x = ListAzureClustersRequest::new().set_page_token("example");
12997    /// ```
12998    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
12999        self.page_token = v.into();
13000        self
13001    }
13002}
13003
13004impl wkt::message::Message for ListAzureClustersRequest {
13005    fn typename() -> &'static str {
13006        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureClustersRequest"
13007    }
13008}
13009
13010/// Response message for `AzureClusters.ListAzureClusters` method.
13011#[derive(Clone, Default, PartialEq)]
13012#[non_exhaustive]
13013#[deprecated]
13014pub struct ListAzureClustersResponse {
13015    /// A list of [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]
13016    /// resources in the specified Google Cloud Platform project and region region.
13017    ///
13018    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13019    pub azure_clusters: std::vec::Vec<crate::model::AzureCluster>,
13020
13021    /// Token to retrieve the next page of results, or empty if there are no more
13022    /// results in the list.
13023    pub next_page_token: std::string::String,
13024
13025    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13026}
13027
13028impl ListAzureClustersResponse {
13029    pub fn new() -> Self {
13030        std::default::Default::default()
13031    }
13032
13033    /// Sets the value of [azure_clusters][crate::model::ListAzureClustersResponse::azure_clusters].
13034    ///
13035    /// # Example
13036    /// ```ignore,no_run
13037    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClustersResponse;
13038    /// use google_cloud_gkemulticloud_v1::model::AzureCluster;
13039    /// let x = ListAzureClustersResponse::new()
13040    ///     .set_azure_clusters([
13041    ///         AzureCluster::default()/* use setters */,
13042    ///         AzureCluster::default()/* use (different) setters */,
13043    ///     ]);
13044    /// ```
13045    pub fn set_azure_clusters<T, V>(mut self, v: T) -> Self
13046    where
13047        T: std::iter::IntoIterator<Item = V>,
13048        V: std::convert::Into<crate::model::AzureCluster>,
13049    {
13050        use std::iter::Iterator;
13051        self.azure_clusters = v.into_iter().map(|i| i.into()).collect();
13052        self
13053    }
13054
13055    /// Sets the value of [next_page_token][crate::model::ListAzureClustersResponse::next_page_token].
13056    ///
13057    /// # Example
13058    /// ```ignore,no_run
13059    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClustersResponse;
13060    /// let x = ListAzureClustersResponse::new().set_next_page_token("example");
13061    /// ```
13062    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13063        self.next_page_token = v.into();
13064        self
13065    }
13066}
13067
13068impl wkt::message::Message for ListAzureClustersResponse {
13069    fn typename() -> &'static str {
13070        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureClustersResponse"
13071    }
13072}
13073
13074#[doc(hidden)]
13075impl google_cloud_gax::paginator::internal::PageableResponse for ListAzureClustersResponse {
13076    type PageItem = crate::model::AzureCluster;
13077
13078    fn items(self) -> std::vec::Vec<Self::PageItem> {
13079        self.azure_clusters
13080    }
13081
13082    fn next_page_token(&self) -> std::string::String {
13083        use std::clone::Clone;
13084        self.next_page_token.clone()
13085    }
13086}
13087
13088/// Request message for `AzureClusters.DeleteAzureCluster` method.
13089#[derive(Clone, Default, PartialEq)]
13090#[non_exhaustive]
13091#[deprecated]
13092pub struct DeleteAzureClusterRequest {
13093    /// Required. The resource name the
13094    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] to delete.
13095    ///
13096    /// `AzureCluster` names are formatted as
13097    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
13098    ///
13099    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13100    /// for more details on Google Cloud Platform resource names.
13101    ///
13102    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13103    pub name: std::string::String,
13104
13105    /// If set to true, and the
13106    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource is not
13107    /// found, the request will succeed but no action will be taken on the server
13108    /// and a completed [Operation][google.longrunning.Operation] will be returned.
13109    ///
13110    /// Useful for idempotent deletion.
13111    ///
13112    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13113    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
13114    pub allow_missing: bool,
13115
13116    /// If set, only validate the request, but do not actually delete the resource.
13117    pub validate_only: bool,
13118
13119    /// The current etag of the
13120    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster].
13121    ///
13122    /// Allows clients to perform deletions through optimistic concurrency control.
13123    ///
13124    /// If the provided etag does not match the current etag of the cluster,
13125    /// the request will fail and an ABORTED error will be returned.
13126    ///
13127    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13128    pub etag: std::string::String,
13129
13130    /// Optional. If set to true, the deletion of
13131    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource will
13132    /// succeed even if errors occur during deleting in cluster resources. Using
13133    /// this parameter may result in orphaned resources in the cluster.
13134    ///
13135    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13136    pub ignore_errors: bool,
13137
13138    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13139}
13140
13141impl DeleteAzureClusterRequest {
13142    pub fn new() -> Self {
13143        std::default::Default::default()
13144    }
13145
13146    /// Sets the value of [name][crate::model::DeleteAzureClusterRequest::name].
13147    ///
13148    /// # Example
13149    /// ```ignore,no_run
13150    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClusterRequest;
13151    /// let x = DeleteAzureClusterRequest::new().set_name("example");
13152    /// ```
13153    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13154        self.name = v.into();
13155        self
13156    }
13157
13158    /// Sets the value of [allow_missing][crate::model::DeleteAzureClusterRequest::allow_missing].
13159    ///
13160    /// # Example
13161    /// ```ignore,no_run
13162    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClusterRequest;
13163    /// let x = DeleteAzureClusterRequest::new().set_allow_missing(true);
13164    /// ```
13165    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13166        self.allow_missing = v.into();
13167        self
13168    }
13169
13170    /// Sets the value of [validate_only][crate::model::DeleteAzureClusterRequest::validate_only].
13171    ///
13172    /// # Example
13173    /// ```ignore,no_run
13174    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClusterRequest;
13175    /// let x = DeleteAzureClusterRequest::new().set_validate_only(true);
13176    /// ```
13177    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13178        self.validate_only = v.into();
13179        self
13180    }
13181
13182    /// Sets the value of [etag][crate::model::DeleteAzureClusterRequest::etag].
13183    ///
13184    /// # Example
13185    /// ```ignore,no_run
13186    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClusterRequest;
13187    /// let x = DeleteAzureClusterRequest::new().set_etag("example");
13188    /// ```
13189    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13190        self.etag = v.into();
13191        self
13192    }
13193
13194    /// Sets the value of [ignore_errors][crate::model::DeleteAzureClusterRequest::ignore_errors].
13195    ///
13196    /// # Example
13197    /// ```ignore,no_run
13198    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClusterRequest;
13199    /// let x = DeleteAzureClusterRequest::new().set_ignore_errors(true);
13200    /// ```
13201    pub fn set_ignore_errors<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13202        self.ignore_errors = v.into();
13203        self
13204    }
13205}
13206
13207impl wkt::message::Message for DeleteAzureClusterRequest {
13208    fn typename() -> &'static str {
13209        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAzureClusterRequest"
13210    }
13211}
13212
13213/// Response message for `AzureClusters.CreateAzureNodePool` method.
13214#[derive(Clone, Default, PartialEq)]
13215#[non_exhaustive]
13216#[deprecated]
13217pub struct CreateAzureNodePoolRequest {
13218    /// Required. The [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]
13219    /// resource where this node pool will be created.
13220    ///
13221    /// `AzureCluster` names are formatted as
13222    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
13223    ///
13224    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13225    /// for more details on Google Cloud resource names.
13226    ///
13227    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
13228    pub parent: std::string::String,
13229
13230    /// Required. The specification of the
13231    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] to create.
13232    ///
13233    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13234    pub azure_node_pool: std::option::Option<crate::model::AzureNodePool>,
13235
13236    /// Required. A client provided ID the resource. Must be unique within the
13237    /// parent resource.
13238    ///
13239    /// The provided ID will be part of the
13240    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource name
13241    /// formatted as
13242    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`.
13243    ///
13244    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
13245    ///
13246    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13247    pub azure_node_pool_id: std::string::String,
13248
13249    /// If set, only validate the request, but do not actually create the node
13250    /// pool.
13251    pub validate_only: bool,
13252
13253    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13254}
13255
13256impl CreateAzureNodePoolRequest {
13257    pub fn new() -> Self {
13258        std::default::Default::default()
13259    }
13260
13261    /// Sets the value of [parent][crate::model::CreateAzureNodePoolRequest::parent].
13262    ///
13263    /// # Example
13264    /// ```ignore,no_run
13265    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureNodePoolRequest;
13266    /// let x = CreateAzureNodePoolRequest::new().set_parent("example");
13267    /// ```
13268    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13269        self.parent = v.into();
13270        self
13271    }
13272
13273    /// Sets the value of [azure_node_pool][crate::model::CreateAzureNodePoolRequest::azure_node_pool].
13274    ///
13275    /// # Example
13276    /// ```ignore,no_run
13277    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureNodePoolRequest;
13278    /// use google_cloud_gkemulticloud_v1::model::AzureNodePool;
13279    /// let x = CreateAzureNodePoolRequest::new().set_azure_node_pool(AzureNodePool::default()/* use setters */);
13280    /// ```
13281    pub fn set_azure_node_pool<T>(mut self, v: T) -> Self
13282    where
13283        T: std::convert::Into<crate::model::AzureNodePool>,
13284    {
13285        self.azure_node_pool = std::option::Option::Some(v.into());
13286        self
13287    }
13288
13289    /// Sets or clears the value of [azure_node_pool][crate::model::CreateAzureNodePoolRequest::azure_node_pool].
13290    ///
13291    /// # Example
13292    /// ```ignore,no_run
13293    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureNodePoolRequest;
13294    /// use google_cloud_gkemulticloud_v1::model::AzureNodePool;
13295    /// let x = CreateAzureNodePoolRequest::new().set_or_clear_azure_node_pool(Some(AzureNodePool::default()/* use setters */));
13296    /// let x = CreateAzureNodePoolRequest::new().set_or_clear_azure_node_pool(None::<AzureNodePool>);
13297    /// ```
13298    pub fn set_or_clear_azure_node_pool<T>(mut self, v: std::option::Option<T>) -> Self
13299    where
13300        T: std::convert::Into<crate::model::AzureNodePool>,
13301    {
13302        self.azure_node_pool = v.map(|x| x.into());
13303        self
13304    }
13305
13306    /// Sets the value of [azure_node_pool_id][crate::model::CreateAzureNodePoolRequest::azure_node_pool_id].
13307    ///
13308    /// # Example
13309    /// ```ignore,no_run
13310    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureNodePoolRequest;
13311    /// let x = CreateAzureNodePoolRequest::new().set_azure_node_pool_id("example");
13312    /// ```
13313    pub fn set_azure_node_pool_id<T: std::convert::Into<std::string::String>>(
13314        mut self,
13315        v: T,
13316    ) -> Self {
13317        self.azure_node_pool_id = v.into();
13318        self
13319    }
13320
13321    /// Sets the value of [validate_only][crate::model::CreateAzureNodePoolRequest::validate_only].
13322    ///
13323    /// # Example
13324    /// ```ignore,no_run
13325    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureNodePoolRequest;
13326    /// let x = CreateAzureNodePoolRequest::new().set_validate_only(true);
13327    /// ```
13328    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13329        self.validate_only = v.into();
13330        self
13331    }
13332}
13333
13334impl wkt::message::Message for CreateAzureNodePoolRequest {
13335    fn typename() -> &'static str {
13336        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAzureNodePoolRequest"
13337    }
13338}
13339
13340/// Request message for `AzureClusters.UpdateAzureNodePool` method.
13341#[derive(Clone, Default, PartialEq)]
13342#[non_exhaustive]
13343#[deprecated]
13344pub struct UpdateAzureNodePoolRequest {
13345    /// Required. The [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]
13346    /// resource to update.
13347    ///
13348    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13349    pub azure_node_pool: std::option::Option<crate::model::AzureNodePool>,
13350
13351    /// If set, only validate the request, but don't actually update the node pool.
13352    pub validate_only: bool,
13353
13354    /// Required. Mask of fields to update. At least one path must be supplied in
13355    /// this field. The elements of the repeated paths field can only include these
13356    /// fields from [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]:
13357    ///
13358    /// *.  `annotations`.
13359    ///
13360    /// * `version`.
13361    /// * `autoscaling.min_node_count`.
13362    /// * `autoscaling.max_node_count`.
13363    /// * `config.ssh_config.authorized_key`.
13364    /// * `management.auto_repair`.
13365    /// * `management`.
13366    ///
13367    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13368    pub update_mask: std::option::Option<wkt::FieldMask>,
13369
13370    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13371}
13372
13373impl UpdateAzureNodePoolRequest {
13374    pub fn new() -> Self {
13375        std::default::Default::default()
13376    }
13377
13378    /// Sets the value of [azure_node_pool][crate::model::UpdateAzureNodePoolRequest::azure_node_pool].
13379    ///
13380    /// # Example
13381    /// ```ignore,no_run
13382    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureNodePoolRequest;
13383    /// use google_cloud_gkemulticloud_v1::model::AzureNodePool;
13384    /// let x = UpdateAzureNodePoolRequest::new().set_azure_node_pool(AzureNodePool::default()/* use setters */);
13385    /// ```
13386    pub fn set_azure_node_pool<T>(mut self, v: T) -> Self
13387    where
13388        T: std::convert::Into<crate::model::AzureNodePool>,
13389    {
13390        self.azure_node_pool = std::option::Option::Some(v.into());
13391        self
13392    }
13393
13394    /// Sets or clears the value of [azure_node_pool][crate::model::UpdateAzureNodePoolRequest::azure_node_pool].
13395    ///
13396    /// # Example
13397    /// ```ignore,no_run
13398    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureNodePoolRequest;
13399    /// use google_cloud_gkemulticloud_v1::model::AzureNodePool;
13400    /// let x = UpdateAzureNodePoolRequest::new().set_or_clear_azure_node_pool(Some(AzureNodePool::default()/* use setters */));
13401    /// let x = UpdateAzureNodePoolRequest::new().set_or_clear_azure_node_pool(None::<AzureNodePool>);
13402    /// ```
13403    pub fn set_or_clear_azure_node_pool<T>(mut self, v: std::option::Option<T>) -> Self
13404    where
13405        T: std::convert::Into<crate::model::AzureNodePool>,
13406    {
13407        self.azure_node_pool = v.map(|x| x.into());
13408        self
13409    }
13410
13411    /// Sets the value of [validate_only][crate::model::UpdateAzureNodePoolRequest::validate_only].
13412    ///
13413    /// # Example
13414    /// ```ignore,no_run
13415    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureNodePoolRequest;
13416    /// let x = UpdateAzureNodePoolRequest::new().set_validate_only(true);
13417    /// ```
13418    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13419        self.validate_only = v.into();
13420        self
13421    }
13422
13423    /// Sets the value of [update_mask][crate::model::UpdateAzureNodePoolRequest::update_mask].
13424    ///
13425    /// # Example
13426    /// ```ignore,no_run
13427    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureNodePoolRequest;
13428    /// use wkt::FieldMask;
13429    /// let x = UpdateAzureNodePoolRequest::new().set_update_mask(FieldMask::default()/* use setters */);
13430    /// ```
13431    pub fn set_update_mask<T>(mut self, v: T) -> Self
13432    where
13433        T: std::convert::Into<wkt::FieldMask>,
13434    {
13435        self.update_mask = std::option::Option::Some(v.into());
13436        self
13437    }
13438
13439    /// Sets or clears the value of [update_mask][crate::model::UpdateAzureNodePoolRequest::update_mask].
13440    ///
13441    /// # Example
13442    /// ```ignore,no_run
13443    /// # use google_cloud_gkemulticloud_v1::model::UpdateAzureNodePoolRequest;
13444    /// use wkt::FieldMask;
13445    /// let x = UpdateAzureNodePoolRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
13446    /// let x = UpdateAzureNodePoolRequest::new().set_or_clear_update_mask(None::<FieldMask>);
13447    /// ```
13448    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
13449    where
13450        T: std::convert::Into<wkt::FieldMask>,
13451    {
13452        self.update_mask = v.map(|x| x.into());
13453        self
13454    }
13455}
13456
13457impl wkt::message::Message for UpdateAzureNodePoolRequest {
13458    fn typename() -> &'static str {
13459        "type.googleapis.com/google.cloud.gkemulticloud.v1.UpdateAzureNodePoolRequest"
13460    }
13461}
13462
13463/// Request message for `AzureClusters.GetAzureNodePool` method.
13464#[derive(Clone, Default, PartialEq)]
13465#[non_exhaustive]
13466#[deprecated]
13467pub struct GetAzureNodePoolRequest {
13468    /// Required. The name of the
13469    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource to
13470    /// describe.
13471    ///
13472    /// `AzureNodePool` names are formatted as
13473    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`.
13474    ///
13475    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13476    /// for more details on Google Cloud resource names.
13477    ///
13478    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13479    pub name: std::string::String,
13480
13481    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13482}
13483
13484impl GetAzureNodePoolRequest {
13485    pub fn new() -> Self {
13486        std::default::Default::default()
13487    }
13488
13489    /// Sets the value of [name][crate::model::GetAzureNodePoolRequest::name].
13490    ///
13491    /// # Example
13492    /// ```ignore,no_run
13493    /// # use google_cloud_gkemulticloud_v1::model::GetAzureNodePoolRequest;
13494    /// let x = GetAzureNodePoolRequest::new().set_name("example");
13495    /// ```
13496    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13497        self.name = v.into();
13498        self
13499    }
13500}
13501
13502impl wkt::message::Message for GetAzureNodePoolRequest {
13503    fn typename() -> &'static str {
13504        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureNodePoolRequest"
13505    }
13506}
13507
13508/// Request message for `AzureClusters.ListAzureNodePools` method.
13509#[derive(Clone, Default, PartialEq)]
13510#[non_exhaustive]
13511#[deprecated]
13512pub struct ListAzureNodePoolsRequest {
13513    /// Required. The parent `AzureCluster` which owns this collection of
13514    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resources.
13515    ///
13516    /// `AzureCluster` names are formatted as
13517    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
13518    ///
13519    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13520    /// for more details on Google Cloud resource names.
13521    ///
13522    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13523    pub parent: std::string::String,
13524
13525    /// The maximum number of items to return.
13526    ///
13527    /// If not specified, a default value of 50 will be used by the service.
13528    /// Regardless of the pageSize value, the response can include a partial list
13529    /// and a caller should only rely on response's
13530    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureNodePoolsResponse.next_page_token]
13531    /// to determine if there are more instances left to be queried.
13532    ///
13533    /// [google.cloud.gkemulticloud.v1.ListAzureNodePoolsResponse.next_page_token]: crate::model::ListAzureNodePoolsResponse::next_page_token
13534    pub page_size: i32,
13535
13536    /// The `nextPageToken` value returned from a previous
13537    /// [azureNodePools.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureNodePools]
13538    /// request, if any.
13539    ///
13540    /// [google.cloud.gkemulticloud.v1.AzureClusters.ListAzureNodePools]: crate::client::AzureClusters::list_azure_node_pools
13541    pub page_token: std::string::String,
13542
13543    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13544}
13545
13546impl ListAzureNodePoolsRequest {
13547    pub fn new() -> Self {
13548        std::default::Default::default()
13549    }
13550
13551    /// Sets the value of [parent][crate::model::ListAzureNodePoolsRequest::parent].
13552    ///
13553    /// # Example
13554    /// ```ignore,no_run
13555    /// # use google_cloud_gkemulticloud_v1::model::ListAzureNodePoolsRequest;
13556    /// let x = ListAzureNodePoolsRequest::new().set_parent("example");
13557    /// ```
13558    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13559        self.parent = v.into();
13560        self
13561    }
13562
13563    /// Sets the value of [page_size][crate::model::ListAzureNodePoolsRequest::page_size].
13564    ///
13565    /// # Example
13566    /// ```ignore,no_run
13567    /// # use google_cloud_gkemulticloud_v1::model::ListAzureNodePoolsRequest;
13568    /// let x = ListAzureNodePoolsRequest::new().set_page_size(42);
13569    /// ```
13570    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
13571        self.page_size = v.into();
13572        self
13573    }
13574
13575    /// Sets the value of [page_token][crate::model::ListAzureNodePoolsRequest::page_token].
13576    ///
13577    /// # Example
13578    /// ```ignore,no_run
13579    /// # use google_cloud_gkemulticloud_v1::model::ListAzureNodePoolsRequest;
13580    /// let x = ListAzureNodePoolsRequest::new().set_page_token("example");
13581    /// ```
13582    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13583        self.page_token = v.into();
13584        self
13585    }
13586}
13587
13588impl wkt::message::Message for ListAzureNodePoolsRequest {
13589    fn typename() -> &'static str {
13590        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureNodePoolsRequest"
13591    }
13592}
13593
13594/// Response message for `AzureClusters.ListAzureNodePools` method.
13595#[derive(Clone, Default, PartialEq)]
13596#[non_exhaustive]
13597#[deprecated]
13598pub struct ListAzureNodePoolsResponse {
13599    /// A list of [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]
13600    /// resources in the specified `AzureCluster`.
13601    ///
13602    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13603    pub azure_node_pools: std::vec::Vec<crate::model::AzureNodePool>,
13604
13605    /// Token to retrieve the next page of results, or empty if there are no more
13606    /// results in the list.
13607    pub next_page_token: std::string::String,
13608
13609    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13610}
13611
13612impl ListAzureNodePoolsResponse {
13613    pub fn new() -> Self {
13614        std::default::Default::default()
13615    }
13616
13617    /// Sets the value of [azure_node_pools][crate::model::ListAzureNodePoolsResponse::azure_node_pools].
13618    ///
13619    /// # Example
13620    /// ```ignore,no_run
13621    /// # use google_cloud_gkemulticloud_v1::model::ListAzureNodePoolsResponse;
13622    /// use google_cloud_gkemulticloud_v1::model::AzureNodePool;
13623    /// let x = ListAzureNodePoolsResponse::new()
13624    ///     .set_azure_node_pools([
13625    ///         AzureNodePool::default()/* use setters */,
13626    ///         AzureNodePool::default()/* use (different) setters */,
13627    ///     ]);
13628    /// ```
13629    pub fn set_azure_node_pools<T, V>(mut self, v: T) -> Self
13630    where
13631        T: std::iter::IntoIterator<Item = V>,
13632        V: std::convert::Into<crate::model::AzureNodePool>,
13633    {
13634        use std::iter::Iterator;
13635        self.azure_node_pools = v.into_iter().map(|i| i.into()).collect();
13636        self
13637    }
13638
13639    /// Sets the value of [next_page_token][crate::model::ListAzureNodePoolsResponse::next_page_token].
13640    ///
13641    /// # Example
13642    /// ```ignore,no_run
13643    /// # use google_cloud_gkemulticloud_v1::model::ListAzureNodePoolsResponse;
13644    /// let x = ListAzureNodePoolsResponse::new().set_next_page_token("example");
13645    /// ```
13646    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13647        self.next_page_token = v.into();
13648        self
13649    }
13650}
13651
13652impl wkt::message::Message for ListAzureNodePoolsResponse {
13653    fn typename() -> &'static str {
13654        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureNodePoolsResponse"
13655    }
13656}
13657
13658#[doc(hidden)]
13659impl google_cloud_gax::paginator::internal::PageableResponse for ListAzureNodePoolsResponse {
13660    type PageItem = crate::model::AzureNodePool;
13661
13662    fn items(self) -> std::vec::Vec<Self::PageItem> {
13663        self.azure_node_pools
13664    }
13665
13666    fn next_page_token(&self) -> std::string::String {
13667        use std::clone::Clone;
13668        self.next_page_token.clone()
13669    }
13670}
13671
13672/// Request message for `AzureClusters.DeleteAzureNodePool` method.
13673#[derive(Clone, Default, PartialEq)]
13674#[non_exhaustive]
13675#[deprecated]
13676pub struct DeleteAzureNodePoolRequest {
13677    /// Required. The resource name the
13678    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] to delete.
13679    ///
13680    /// `AzureNodePool` names are formatted as
13681    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`.
13682    ///
13683    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13684    /// for more details on Google Cloud resource names.
13685    ///
13686    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13687    pub name: std::string::String,
13688
13689    /// If set, only validate the request, but do not actually delete the node
13690    /// pool.
13691    pub validate_only: bool,
13692
13693    /// If set to true, and the
13694    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource is
13695    /// not found, the request will succeed but no action will be taken on the
13696    /// server and a completed [Operation][google.longrunning.Operation] will be
13697    /// returned.
13698    ///
13699    /// Useful for idempotent deletion.
13700    ///
13701    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13702    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
13703    pub allow_missing: bool,
13704
13705    /// The current ETag of the
13706    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool].
13707    ///
13708    /// Allows clients to perform deletions through optimistic concurrency control.
13709    ///
13710    /// If the provided ETag does not match the current etag of the node pool,
13711    /// the request will fail and an ABORTED error will be returned.
13712    ///
13713    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13714    pub etag: std::string::String,
13715
13716    /// Optional. If set to true, the deletion of
13717    /// [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource will
13718    /// succeed even if errors occur during deleting in node pool resources. Using
13719    /// this parameter may result in orphaned resources in the node pool.
13720    ///
13721    /// [google.cloud.gkemulticloud.v1.AzureNodePool]: crate::model::AzureNodePool
13722    pub ignore_errors: bool,
13723
13724    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13725}
13726
13727impl DeleteAzureNodePoolRequest {
13728    pub fn new() -> Self {
13729        std::default::Default::default()
13730    }
13731
13732    /// Sets the value of [name][crate::model::DeleteAzureNodePoolRequest::name].
13733    ///
13734    /// # Example
13735    /// ```ignore,no_run
13736    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureNodePoolRequest;
13737    /// let x = DeleteAzureNodePoolRequest::new().set_name("example");
13738    /// ```
13739    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13740        self.name = v.into();
13741        self
13742    }
13743
13744    /// Sets the value of [validate_only][crate::model::DeleteAzureNodePoolRequest::validate_only].
13745    ///
13746    /// # Example
13747    /// ```ignore,no_run
13748    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureNodePoolRequest;
13749    /// let x = DeleteAzureNodePoolRequest::new().set_validate_only(true);
13750    /// ```
13751    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13752        self.validate_only = v.into();
13753        self
13754    }
13755
13756    /// Sets the value of [allow_missing][crate::model::DeleteAzureNodePoolRequest::allow_missing].
13757    ///
13758    /// # Example
13759    /// ```ignore,no_run
13760    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureNodePoolRequest;
13761    /// let x = DeleteAzureNodePoolRequest::new().set_allow_missing(true);
13762    /// ```
13763    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13764        self.allow_missing = v.into();
13765        self
13766    }
13767
13768    /// Sets the value of [etag][crate::model::DeleteAzureNodePoolRequest::etag].
13769    ///
13770    /// # Example
13771    /// ```ignore,no_run
13772    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureNodePoolRequest;
13773    /// let x = DeleteAzureNodePoolRequest::new().set_etag("example");
13774    /// ```
13775    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13776        self.etag = v.into();
13777        self
13778    }
13779
13780    /// Sets the value of [ignore_errors][crate::model::DeleteAzureNodePoolRequest::ignore_errors].
13781    ///
13782    /// # Example
13783    /// ```ignore,no_run
13784    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureNodePoolRequest;
13785    /// let x = DeleteAzureNodePoolRequest::new().set_ignore_errors(true);
13786    /// ```
13787    pub fn set_ignore_errors<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
13788        self.ignore_errors = v.into();
13789        self
13790    }
13791}
13792
13793impl wkt::message::Message for DeleteAzureNodePoolRequest {
13794    fn typename() -> &'static str {
13795        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAzureNodePoolRequest"
13796    }
13797}
13798
13799/// GetAzureOpenIdConfigRequest gets the OIDC discovery document for the
13800/// cluster. See the OpenID Connect Discovery 1.0 specification for details.
13801#[derive(Clone, Default, PartialEq)]
13802#[non_exhaustive]
13803#[deprecated]
13804pub struct GetAzureOpenIdConfigRequest {
13805    /// Required. The AzureCluster, which owns the OIDC discovery document.
13806    /// Format:
13807    /// projects/\<project-id\>/locations/\<region\>/azureClusters/\<cluster-id\>
13808    pub azure_cluster: std::string::String,
13809
13810    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13811}
13812
13813impl GetAzureOpenIdConfigRequest {
13814    pub fn new() -> Self {
13815        std::default::Default::default()
13816    }
13817
13818    /// Sets the value of [azure_cluster][crate::model::GetAzureOpenIdConfigRequest::azure_cluster].
13819    ///
13820    /// # Example
13821    /// ```ignore,no_run
13822    /// # use google_cloud_gkemulticloud_v1::model::GetAzureOpenIdConfigRequest;
13823    /// let x = GetAzureOpenIdConfigRequest::new().set_azure_cluster("example");
13824    /// ```
13825    pub fn set_azure_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13826        self.azure_cluster = v.into();
13827        self
13828    }
13829}
13830
13831impl wkt::message::Message for GetAzureOpenIdConfigRequest {
13832    fn typename() -> &'static str {
13833        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureOpenIdConfigRequest"
13834    }
13835}
13836
13837/// GetAzureJsonWebKeysRequest gets the public component of the keys used by the
13838/// cluster to sign token requests. This will be the jwks_uri for the discover
13839/// document returned by getOpenIDConfig. See the OpenID Connect
13840/// Discovery 1.0 specification for details.
13841#[derive(Clone, Default, PartialEq)]
13842#[non_exhaustive]
13843#[deprecated]
13844pub struct GetAzureJsonWebKeysRequest {
13845    /// Required. The AzureCluster, which owns the JsonWebKeys.
13846    /// Format:
13847    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`
13848    pub azure_cluster: std::string::String,
13849
13850    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13851}
13852
13853impl GetAzureJsonWebKeysRequest {
13854    pub fn new() -> Self {
13855        std::default::Default::default()
13856    }
13857
13858    /// Sets the value of [azure_cluster][crate::model::GetAzureJsonWebKeysRequest::azure_cluster].
13859    ///
13860    /// # Example
13861    /// ```ignore,no_run
13862    /// # use google_cloud_gkemulticloud_v1::model::GetAzureJsonWebKeysRequest;
13863    /// let x = GetAzureJsonWebKeysRequest::new().set_azure_cluster("example");
13864    /// ```
13865    pub fn set_azure_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13866        self.azure_cluster = v.into();
13867        self
13868    }
13869}
13870
13871impl wkt::message::Message for GetAzureJsonWebKeysRequest {
13872    fn typename() -> &'static str {
13873        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureJsonWebKeysRequest"
13874    }
13875}
13876
13877/// GetAzureServerConfigRequest gets the server config of GKE cluster on Azure.
13878#[derive(Clone, Default, PartialEq)]
13879#[non_exhaustive]
13880#[deprecated]
13881pub struct GetAzureServerConfigRequest {
13882    /// Required. The name of the
13883    /// [AzureServerConfig][google.cloud.gkemulticloud.v1.AzureServerConfig]
13884    /// resource to describe.
13885    ///
13886    /// `AzureServerConfig` names are formatted as
13887    /// `projects/<project-id>/locations/<region>/azureServerConfig`.
13888    ///
13889    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13890    /// for more details on Google Cloud resource names.
13891    ///
13892    /// [google.cloud.gkemulticloud.v1.AzureServerConfig]: crate::model::AzureServerConfig
13893    pub name: std::string::String,
13894
13895    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13896}
13897
13898impl GetAzureServerConfigRequest {
13899    pub fn new() -> Self {
13900        std::default::Default::default()
13901    }
13902
13903    /// Sets the value of [name][crate::model::GetAzureServerConfigRequest::name].
13904    ///
13905    /// # Example
13906    /// ```ignore,no_run
13907    /// # use google_cloud_gkemulticloud_v1::model::GetAzureServerConfigRequest;
13908    /// let x = GetAzureServerConfigRequest::new().set_name("example");
13909    /// ```
13910    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13911        self.name = v.into();
13912        self
13913    }
13914}
13915
13916impl wkt::message::Message for GetAzureServerConfigRequest {
13917    fn typename() -> &'static str {
13918        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureServerConfigRequest"
13919    }
13920}
13921
13922/// Request message for `AzureClusters.CreateAzureClient` method.
13923#[derive(Clone, Default, PartialEq)]
13924#[non_exhaustive]
13925#[deprecated]
13926pub struct CreateAzureClientRequest {
13927    /// Required. The parent location where this
13928    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource will be
13929    /// created.
13930    ///
13931    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
13932    ///
13933    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
13934    /// for more details on Google Cloud resource names.
13935    ///
13936    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
13937    pub parent: std::string::String,
13938
13939    /// Required. The specification of the
13940    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] to create.
13941    ///
13942    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
13943    pub azure_client: std::option::Option<crate::model::AzureClient>,
13944
13945    /// Required. A client provided ID the resource. Must be unique within the
13946    /// parent resource.
13947    ///
13948    /// The provided ID will be part of the
13949    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource name
13950    /// formatted as
13951    /// `projects/<project-id>/locations/<region>/azureClients/<client-id>`.
13952    ///
13953    /// Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters.
13954    ///
13955    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
13956    pub azure_client_id: std::string::String,
13957
13958    /// If set, only validate the request, but do not actually create the client.
13959    pub validate_only: bool,
13960
13961    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
13962}
13963
13964impl CreateAzureClientRequest {
13965    pub fn new() -> Self {
13966        std::default::Default::default()
13967    }
13968
13969    /// Sets the value of [parent][crate::model::CreateAzureClientRequest::parent].
13970    ///
13971    /// # Example
13972    /// ```ignore,no_run
13973    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClientRequest;
13974    /// let x = CreateAzureClientRequest::new().set_parent("example");
13975    /// ```
13976    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
13977        self.parent = v.into();
13978        self
13979    }
13980
13981    /// Sets the value of [azure_client][crate::model::CreateAzureClientRequest::azure_client].
13982    ///
13983    /// # Example
13984    /// ```ignore,no_run
13985    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClientRequest;
13986    /// use google_cloud_gkemulticloud_v1::model::AzureClient;
13987    /// let x = CreateAzureClientRequest::new().set_azure_client(AzureClient::default()/* use setters */);
13988    /// ```
13989    pub fn set_azure_client<T>(mut self, v: T) -> Self
13990    where
13991        T: std::convert::Into<crate::model::AzureClient>,
13992    {
13993        self.azure_client = std::option::Option::Some(v.into());
13994        self
13995    }
13996
13997    /// Sets or clears the value of [azure_client][crate::model::CreateAzureClientRequest::azure_client].
13998    ///
13999    /// # Example
14000    /// ```ignore,no_run
14001    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClientRequest;
14002    /// use google_cloud_gkemulticloud_v1::model::AzureClient;
14003    /// let x = CreateAzureClientRequest::new().set_or_clear_azure_client(Some(AzureClient::default()/* use setters */));
14004    /// let x = CreateAzureClientRequest::new().set_or_clear_azure_client(None::<AzureClient>);
14005    /// ```
14006    pub fn set_or_clear_azure_client<T>(mut self, v: std::option::Option<T>) -> Self
14007    where
14008        T: std::convert::Into<crate::model::AzureClient>,
14009    {
14010        self.azure_client = v.map(|x| x.into());
14011        self
14012    }
14013
14014    /// Sets the value of [azure_client_id][crate::model::CreateAzureClientRequest::azure_client_id].
14015    ///
14016    /// # Example
14017    /// ```ignore,no_run
14018    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClientRequest;
14019    /// let x = CreateAzureClientRequest::new().set_azure_client_id("example");
14020    /// ```
14021    pub fn set_azure_client_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14022        self.azure_client_id = v.into();
14023        self
14024    }
14025
14026    /// Sets the value of [validate_only][crate::model::CreateAzureClientRequest::validate_only].
14027    ///
14028    /// # Example
14029    /// ```ignore,no_run
14030    /// # use google_cloud_gkemulticloud_v1::model::CreateAzureClientRequest;
14031    /// let x = CreateAzureClientRequest::new().set_validate_only(true);
14032    /// ```
14033    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
14034        self.validate_only = v.into();
14035        self
14036    }
14037}
14038
14039impl wkt::message::Message for CreateAzureClientRequest {
14040    fn typename() -> &'static str {
14041        "type.googleapis.com/google.cloud.gkemulticloud.v1.CreateAzureClientRequest"
14042    }
14043}
14044
14045/// Request message for `AzureClusters.GetAzureClient` method.
14046#[derive(Clone, Default, PartialEq)]
14047#[non_exhaustive]
14048#[deprecated]
14049pub struct GetAzureClientRequest {
14050    /// Required. The name of the
14051    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource to
14052    /// describe.
14053    ///
14054    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] names are
14055    /// formatted as
14056    /// `projects/<project-id>/locations/<region>/azureClients/<client-id>`.
14057    ///
14058    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
14059    /// for more details on Google Cloud resource names.
14060    ///
14061    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
14062    pub name: std::string::String,
14063
14064    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14065}
14066
14067impl GetAzureClientRequest {
14068    pub fn new() -> Self {
14069        std::default::Default::default()
14070    }
14071
14072    /// Sets the value of [name][crate::model::GetAzureClientRequest::name].
14073    ///
14074    /// # Example
14075    /// ```ignore,no_run
14076    /// # use google_cloud_gkemulticloud_v1::model::GetAzureClientRequest;
14077    /// let x = GetAzureClientRequest::new().set_name("example");
14078    /// ```
14079    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14080        self.name = v.into();
14081        self
14082    }
14083}
14084
14085impl wkt::message::Message for GetAzureClientRequest {
14086    fn typename() -> &'static str {
14087        "type.googleapis.com/google.cloud.gkemulticloud.v1.GetAzureClientRequest"
14088    }
14089}
14090
14091/// Request message for `AzureClusters.ListAzureClients` method.
14092#[derive(Clone, Default, PartialEq)]
14093#[non_exhaustive]
14094#[deprecated]
14095pub struct ListAzureClientsRequest {
14096    /// Required. The parent location which owns this collection of
14097    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resources.
14098    ///
14099    /// Location names are formatted as `projects/<project-id>/locations/<region>`.
14100    ///
14101    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
14102    /// for more details on Google Cloud Platform resource names.
14103    ///
14104    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
14105    pub parent: std::string::String,
14106
14107    /// The maximum number of items to return.
14108    ///
14109    /// If not specified, a default value of 50 will be used by the service.
14110    /// Regardless of the pageSize value, the response can include a partial list
14111    /// and a caller should only rely on response's
14112    /// [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureClientsResponse.next_page_token]
14113    /// to determine if there are more instances left to be queried.
14114    ///
14115    /// [google.cloud.gkemulticloud.v1.ListAzureClientsResponse.next_page_token]: crate::model::ListAzureClientsResponse::next_page_token
14116    pub page_size: i32,
14117
14118    /// The `nextPageToken` value returned from a previous
14119    /// [azureClients.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClients]
14120    /// request, if any.
14121    ///
14122    /// [google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClients]: crate::client::AzureClusters::list_azure_clients
14123    pub page_token: std::string::String,
14124
14125    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14126}
14127
14128impl ListAzureClientsRequest {
14129    pub fn new() -> Self {
14130        std::default::Default::default()
14131    }
14132
14133    /// Sets the value of [parent][crate::model::ListAzureClientsRequest::parent].
14134    ///
14135    /// # Example
14136    /// ```ignore,no_run
14137    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClientsRequest;
14138    /// let x = ListAzureClientsRequest::new().set_parent("example");
14139    /// ```
14140    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14141        self.parent = v.into();
14142        self
14143    }
14144
14145    /// Sets the value of [page_size][crate::model::ListAzureClientsRequest::page_size].
14146    ///
14147    /// # Example
14148    /// ```ignore,no_run
14149    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClientsRequest;
14150    /// let x = ListAzureClientsRequest::new().set_page_size(42);
14151    /// ```
14152    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
14153        self.page_size = v.into();
14154        self
14155    }
14156
14157    /// Sets the value of [page_token][crate::model::ListAzureClientsRequest::page_token].
14158    ///
14159    /// # Example
14160    /// ```ignore,no_run
14161    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClientsRequest;
14162    /// let x = ListAzureClientsRequest::new().set_page_token("example");
14163    /// ```
14164    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14165        self.page_token = v.into();
14166        self
14167    }
14168}
14169
14170impl wkt::message::Message for ListAzureClientsRequest {
14171    fn typename() -> &'static str {
14172        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureClientsRequest"
14173    }
14174}
14175
14176/// Response message for `AzureClusters.ListAzureClients` method.
14177#[derive(Clone, Default, PartialEq)]
14178#[non_exhaustive]
14179#[deprecated]
14180pub struct ListAzureClientsResponse {
14181    /// A list of [AzureClient][google.cloud.gkemulticloud.v1.AzureClient]
14182    /// resources in the specified Google Cloud project and region region.
14183    ///
14184    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
14185    pub azure_clients: std::vec::Vec<crate::model::AzureClient>,
14186
14187    /// Token to retrieve the next page of results, or empty if there are no more
14188    /// results in the list.
14189    pub next_page_token: std::string::String,
14190
14191    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14192}
14193
14194impl ListAzureClientsResponse {
14195    pub fn new() -> Self {
14196        std::default::Default::default()
14197    }
14198
14199    /// Sets the value of [azure_clients][crate::model::ListAzureClientsResponse::azure_clients].
14200    ///
14201    /// # Example
14202    /// ```ignore,no_run
14203    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClientsResponse;
14204    /// use google_cloud_gkemulticloud_v1::model::AzureClient;
14205    /// let x = ListAzureClientsResponse::new()
14206    ///     .set_azure_clients([
14207    ///         AzureClient::default()/* use setters */,
14208    ///         AzureClient::default()/* use (different) setters */,
14209    ///     ]);
14210    /// ```
14211    pub fn set_azure_clients<T, V>(mut self, v: T) -> Self
14212    where
14213        T: std::iter::IntoIterator<Item = V>,
14214        V: std::convert::Into<crate::model::AzureClient>,
14215    {
14216        use std::iter::Iterator;
14217        self.azure_clients = v.into_iter().map(|i| i.into()).collect();
14218        self
14219    }
14220
14221    /// Sets the value of [next_page_token][crate::model::ListAzureClientsResponse::next_page_token].
14222    ///
14223    /// # Example
14224    /// ```ignore,no_run
14225    /// # use google_cloud_gkemulticloud_v1::model::ListAzureClientsResponse;
14226    /// let x = ListAzureClientsResponse::new().set_next_page_token("example");
14227    /// ```
14228    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14229        self.next_page_token = v.into();
14230        self
14231    }
14232}
14233
14234impl wkt::message::Message for ListAzureClientsResponse {
14235    fn typename() -> &'static str {
14236        "type.googleapis.com/google.cloud.gkemulticloud.v1.ListAzureClientsResponse"
14237    }
14238}
14239
14240#[doc(hidden)]
14241impl google_cloud_gax::paginator::internal::PageableResponse for ListAzureClientsResponse {
14242    type PageItem = crate::model::AzureClient;
14243
14244    fn items(self) -> std::vec::Vec<Self::PageItem> {
14245        self.azure_clients
14246    }
14247
14248    fn next_page_token(&self) -> std::string::String {
14249        use std::clone::Clone;
14250        self.next_page_token.clone()
14251    }
14252}
14253
14254/// Request message for `AzureClusters.DeleteAzureClient` method.
14255#[derive(Clone, Default, PartialEq)]
14256#[non_exhaustive]
14257#[deprecated]
14258pub struct DeleteAzureClientRequest {
14259    /// Required. The resource name the
14260    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] to delete.
14261    ///
14262    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] names are
14263    /// formatted as
14264    /// `projects/<project-id>/locations/<region>/azureClients/<client-id>`.
14265    ///
14266    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
14267    /// for more details on Google Cloud resource names.
14268    ///
14269    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
14270    pub name: std::string::String,
14271
14272    /// If set to true, and the
14273    /// [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource is not
14274    /// found, the request will succeed but no action will be taken on the server
14275    /// and a completed [Operation][google.longrunning.Operation] will be returned.
14276    ///
14277    /// Useful for idempotent deletion.
14278    ///
14279    /// [google.cloud.gkemulticloud.v1.AzureClient]: crate::model::AzureClient
14280    /// [google.longrunning.Operation]: google_cloud_longrunning::model::Operation
14281    pub allow_missing: bool,
14282
14283    /// If set, only validate the request, but do not actually delete the resource.
14284    pub validate_only: bool,
14285
14286    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14287}
14288
14289impl DeleteAzureClientRequest {
14290    pub fn new() -> Self {
14291        std::default::Default::default()
14292    }
14293
14294    /// Sets the value of [name][crate::model::DeleteAzureClientRequest::name].
14295    ///
14296    /// # Example
14297    /// ```ignore,no_run
14298    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClientRequest;
14299    /// let x = DeleteAzureClientRequest::new().set_name("example");
14300    /// ```
14301    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14302        self.name = v.into();
14303        self
14304    }
14305
14306    /// Sets the value of [allow_missing][crate::model::DeleteAzureClientRequest::allow_missing].
14307    ///
14308    /// # Example
14309    /// ```ignore,no_run
14310    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClientRequest;
14311    /// let x = DeleteAzureClientRequest::new().set_allow_missing(true);
14312    /// ```
14313    pub fn set_allow_missing<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
14314        self.allow_missing = v.into();
14315        self
14316    }
14317
14318    /// Sets the value of [validate_only][crate::model::DeleteAzureClientRequest::validate_only].
14319    ///
14320    /// # Example
14321    /// ```ignore,no_run
14322    /// # use google_cloud_gkemulticloud_v1::model::DeleteAzureClientRequest;
14323    /// let x = DeleteAzureClientRequest::new().set_validate_only(true);
14324    /// ```
14325    pub fn set_validate_only<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
14326        self.validate_only = v.into();
14327        self
14328    }
14329}
14330
14331impl wkt::message::Message for DeleteAzureClientRequest {
14332    fn typename() -> &'static str {
14333        "type.googleapis.com/google.cloud.gkemulticloud.v1.DeleteAzureClientRequest"
14334    }
14335}
14336
14337/// Request message for `AzureClusters.GenerateAzureAccessToken` method.
14338#[derive(Clone, Default, PartialEq)]
14339#[non_exhaustive]
14340#[deprecated]
14341pub struct GenerateAzureAccessTokenRequest {
14342    /// Required. The name of the
14343    /// [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource to
14344    /// authenticate to.
14345    ///
14346    /// `AzureCluster` names are formatted as
14347    /// `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`.
14348    ///
14349    /// See [Resource Names](https://cloud.google.com/apis/design/resource_names)
14350    /// for more details on Google Cloud resource names.
14351    ///
14352    /// [google.cloud.gkemulticloud.v1.AzureCluster]: crate::model::AzureCluster
14353    pub azure_cluster: std::string::String,
14354
14355    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14356}
14357
14358impl GenerateAzureAccessTokenRequest {
14359    pub fn new() -> Self {
14360        std::default::Default::default()
14361    }
14362
14363    /// Sets the value of [azure_cluster][crate::model::GenerateAzureAccessTokenRequest::azure_cluster].
14364    ///
14365    /// # Example
14366    /// ```ignore,no_run
14367    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureAccessTokenRequest;
14368    /// let x = GenerateAzureAccessTokenRequest::new().set_azure_cluster("example");
14369    /// ```
14370    pub fn set_azure_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14371        self.azure_cluster = v.into();
14372        self
14373    }
14374}
14375
14376impl wkt::message::Message for GenerateAzureAccessTokenRequest {
14377    fn typename() -> &'static str {
14378        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAzureAccessTokenRequest"
14379    }
14380}
14381
14382/// Response message for `AzureClusters.GenerateAzureAccessToken` method.
14383#[derive(Clone, Default, PartialEq)]
14384#[non_exhaustive]
14385#[deprecated]
14386pub struct GenerateAzureAccessTokenResponse {
14387    /// Output only. Access token to authenticate to k8s api-server.
14388    pub access_token: std::string::String,
14389
14390    /// Output only. Timestamp at which the token will expire.
14391    pub expiration_time: std::option::Option<wkt::Timestamp>,
14392
14393    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14394}
14395
14396impl GenerateAzureAccessTokenResponse {
14397    pub fn new() -> Self {
14398        std::default::Default::default()
14399    }
14400
14401    /// Sets the value of [access_token][crate::model::GenerateAzureAccessTokenResponse::access_token].
14402    ///
14403    /// # Example
14404    /// ```ignore,no_run
14405    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureAccessTokenResponse;
14406    /// let x = GenerateAzureAccessTokenResponse::new().set_access_token("example");
14407    /// ```
14408    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14409        self.access_token = v.into();
14410        self
14411    }
14412
14413    /// Sets the value of [expiration_time][crate::model::GenerateAzureAccessTokenResponse::expiration_time].
14414    ///
14415    /// # Example
14416    /// ```ignore,no_run
14417    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureAccessTokenResponse;
14418    /// use wkt::Timestamp;
14419    /// let x = GenerateAzureAccessTokenResponse::new().set_expiration_time(Timestamp::default()/* use setters */);
14420    /// ```
14421    pub fn set_expiration_time<T>(mut self, v: T) -> Self
14422    where
14423        T: std::convert::Into<wkt::Timestamp>,
14424    {
14425        self.expiration_time = std::option::Option::Some(v.into());
14426        self
14427    }
14428
14429    /// Sets or clears the value of [expiration_time][crate::model::GenerateAzureAccessTokenResponse::expiration_time].
14430    ///
14431    /// # Example
14432    /// ```ignore,no_run
14433    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureAccessTokenResponse;
14434    /// use wkt::Timestamp;
14435    /// let x = GenerateAzureAccessTokenResponse::new().set_or_clear_expiration_time(Some(Timestamp::default()/* use setters */));
14436    /// let x = GenerateAzureAccessTokenResponse::new().set_or_clear_expiration_time(None::<Timestamp>);
14437    /// ```
14438    pub fn set_or_clear_expiration_time<T>(mut self, v: std::option::Option<T>) -> Self
14439    where
14440        T: std::convert::Into<wkt::Timestamp>,
14441    {
14442        self.expiration_time = v.map(|x| x.into());
14443        self
14444    }
14445}
14446
14447impl wkt::message::Message for GenerateAzureAccessTokenResponse {
14448    fn typename() -> &'static str {
14449        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAzureAccessTokenResponse"
14450    }
14451}
14452
14453#[derive(Clone, Default, PartialEq)]
14454#[non_exhaustive]
14455#[deprecated]
14456pub struct GenerateAzureClusterAgentTokenRequest {
14457    /// Required.
14458    pub azure_cluster: std::string::String,
14459
14460    /// Required.
14461    pub subject_token: std::string::String,
14462
14463    /// Required.
14464    pub subject_token_type: std::string::String,
14465
14466    /// Required.
14467    pub version: std::string::String,
14468
14469    /// Optional.
14470    pub node_pool_id: std::string::String,
14471
14472    /// Optional.
14473    pub grant_type: std::string::String,
14474
14475    /// Optional.
14476    pub audience: std::string::String,
14477
14478    /// Optional.
14479    pub scope: std::string::String,
14480
14481    /// Optional.
14482    pub requested_token_type: std::string::String,
14483
14484    /// Optional.
14485    pub options: std::string::String,
14486
14487    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14488}
14489
14490impl GenerateAzureClusterAgentTokenRequest {
14491    pub fn new() -> Self {
14492        std::default::Default::default()
14493    }
14494
14495    /// Sets the value of [azure_cluster][crate::model::GenerateAzureClusterAgentTokenRequest::azure_cluster].
14496    ///
14497    /// # Example
14498    /// ```ignore,no_run
14499    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14500    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_azure_cluster("example");
14501    /// ```
14502    pub fn set_azure_cluster<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14503        self.azure_cluster = v.into();
14504        self
14505    }
14506
14507    /// Sets the value of [subject_token][crate::model::GenerateAzureClusterAgentTokenRequest::subject_token].
14508    ///
14509    /// # Example
14510    /// ```ignore,no_run
14511    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14512    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_subject_token("example");
14513    /// ```
14514    pub fn set_subject_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14515        self.subject_token = v.into();
14516        self
14517    }
14518
14519    /// Sets the value of [subject_token_type][crate::model::GenerateAzureClusterAgentTokenRequest::subject_token_type].
14520    ///
14521    /// # Example
14522    /// ```ignore,no_run
14523    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14524    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_subject_token_type("example");
14525    /// ```
14526    pub fn set_subject_token_type<T: std::convert::Into<std::string::String>>(
14527        mut self,
14528        v: T,
14529    ) -> Self {
14530        self.subject_token_type = v.into();
14531        self
14532    }
14533
14534    /// Sets the value of [version][crate::model::GenerateAzureClusterAgentTokenRequest::version].
14535    ///
14536    /// # Example
14537    /// ```ignore,no_run
14538    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14539    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_version("example");
14540    /// ```
14541    pub fn set_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14542        self.version = v.into();
14543        self
14544    }
14545
14546    /// Sets the value of [node_pool_id][crate::model::GenerateAzureClusterAgentTokenRequest::node_pool_id].
14547    ///
14548    /// # Example
14549    /// ```ignore,no_run
14550    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14551    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_node_pool_id("example");
14552    /// ```
14553    pub fn set_node_pool_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14554        self.node_pool_id = v.into();
14555        self
14556    }
14557
14558    /// Sets the value of [grant_type][crate::model::GenerateAzureClusterAgentTokenRequest::grant_type].
14559    ///
14560    /// # Example
14561    /// ```ignore,no_run
14562    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14563    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_grant_type("example");
14564    /// ```
14565    pub fn set_grant_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14566        self.grant_type = v.into();
14567        self
14568    }
14569
14570    /// Sets the value of [audience][crate::model::GenerateAzureClusterAgentTokenRequest::audience].
14571    ///
14572    /// # Example
14573    /// ```ignore,no_run
14574    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14575    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_audience("example");
14576    /// ```
14577    pub fn set_audience<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14578        self.audience = v.into();
14579        self
14580    }
14581
14582    /// Sets the value of [scope][crate::model::GenerateAzureClusterAgentTokenRequest::scope].
14583    ///
14584    /// # Example
14585    /// ```ignore,no_run
14586    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14587    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_scope("example");
14588    /// ```
14589    pub fn set_scope<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14590        self.scope = v.into();
14591        self
14592    }
14593
14594    /// Sets the value of [requested_token_type][crate::model::GenerateAzureClusterAgentTokenRequest::requested_token_type].
14595    ///
14596    /// # Example
14597    /// ```ignore,no_run
14598    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14599    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_requested_token_type("example");
14600    /// ```
14601    pub fn set_requested_token_type<T: std::convert::Into<std::string::String>>(
14602        mut self,
14603        v: T,
14604    ) -> Self {
14605        self.requested_token_type = v.into();
14606        self
14607    }
14608
14609    /// Sets the value of [options][crate::model::GenerateAzureClusterAgentTokenRequest::options].
14610    ///
14611    /// # Example
14612    /// ```ignore,no_run
14613    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenRequest;
14614    /// let x = GenerateAzureClusterAgentTokenRequest::new().set_options("example");
14615    /// ```
14616    pub fn set_options<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14617        self.options = v.into();
14618        self
14619    }
14620}
14621
14622impl wkt::message::Message for GenerateAzureClusterAgentTokenRequest {
14623    fn typename() -> &'static str {
14624        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAzureClusterAgentTokenRequest"
14625    }
14626}
14627
14628#[derive(Clone, Default, PartialEq)]
14629#[non_exhaustive]
14630#[deprecated]
14631pub struct GenerateAzureClusterAgentTokenResponse {
14632    pub access_token: std::string::String,
14633
14634    pub expires_in: i32,
14635
14636    pub token_type: std::string::String,
14637
14638    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14639}
14640
14641impl GenerateAzureClusterAgentTokenResponse {
14642    pub fn new() -> Self {
14643        std::default::Default::default()
14644    }
14645
14646    /// Sets the value of [access_token][crate::model::GenerateAzureClusterAgentTokenResponse::access_token].
14647    ///
14648    /// # Example
14649    /// ```ignore,no_run
14650    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenResponse;
14651    /// let x = GenerateAzureClusterAgentTokenResponse::new().set_access_token("example");
14652    /// ```
14653    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14654        self.access_token = v.into();
14655        self
14656    }
14657
14658    /// Sets the value of [expires_in][crate::model::GenerateAzureClusterAgentTokenResponse::expires_in].
14659    ///
14660    /// # Example
14661    /// ```ignore,no_run
14662    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenResponse;
14663    /// let x = GenerateAzureClusterAgentTokenResponse::new().set_expires_in(42);
14664    /// ```
14665    pub fn set_expires_in<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
14666        self.expires_in = v.into();
14667        self
14668    }
14669
14670    /// Sets the value of [token_type][crate::model::GenerateAzureClusterAgentTokenResponse::token_type].
14671    ///
14672    /// # Example
14673    /// ```ignore,no_run
14674    /// # use google_cloud_gkemulticloud_v1::model::GenerateAzureClusterAgentTokenResponse;
14675    /// let x = GenerateAzureClusterAgentTokenResponse::new().set_token_type("example");
14676    /// ```
14677    pub fn set_token_type<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14678        self.token_type = v.into();
14679        self
14680    }
14681}
14682
14683impl wkt::message::Message for GenerateAzureClusterAgentTokenResponse {
14684    fn typename() -> &'static str {
14685        "type.googleapis.com/google.cloud.gkemulticloud.v1.GenerateAzureClusterAgentTokenResponse"
14686    }
14687}
14688
14689/// Jwk is a JSON Web Key as specified in RFC 7517.
14690#[derive(Clone, Default, PartialEq)]
14691#[non_exhaustive]
14692pub struct Jwk {
14693    /// Key Type.
14694    pub kty: std::string::String,
14695
14696    /// Algorithm.
14697    pub alg: std::string::String,
14698
14699    /// Permitted uses for the public keys.
14700    pub r#use: std::string::String,
14701
14702    /// Key ID.
14703    pub kid: std::string::String,
14704
14705    /// Used for RSA keys.
14706    pub n: std::string::String,
14707
14708    /// Used for RSA keys.
14709    pub e: std::string::String,
14710
14711    /// Used for ECDSA keys.
14712    pub x: std::string::String,
14713
14714    /// Used for ECDSA keys.
14715    pub y: std::string::String,
14716
14717    /// Used for ECDSA keys.
14718    pub crv: std::string::String,
14719
14720    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14721}
14722
14723impl Jwk {
14724    pub fn new() -> Self {
14725        std::default::Default::default()
14726    }
14727
14728    /// Sets the value of [kty][crate::model::Jwk::kty].
14729    ///
14730    /// # Example
14731    /// ```ignore,no_run
14732    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14733    /// let x = Jwk::new().set_kty("example");
14734    /// ```
14735    pub fn set_kty<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14736        self.kty = v.into();
14737        self
14738    }
14739
14740    /// Sets the value of [alg][crate::model::Jwk::alg].
14741    ///
14742    /// # Example
14743    /// ```ignore,no_run
14744    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14745    /// let x = Jwk::new().set_alg("example");
14746    /// ```
14747    pub fn set_alg<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14748        self.alg = v.into();
14749        self
14750    }
14751
14752    /// Sets the value of [r#use][crate::model::Jwk::use].
14753    ///
14754    /// # Example
14755    /// ```ignore,no_run
14756    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14757    /// let x = Jwk::new().set_use("example");
14758    /// ```
14759    pub fn set_use<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14760        self.r#use = v.into();
14761        self
14762    }
14763
14764    /// Sets the value of [kid][crate::model::Jwk::kid].
14765    ///
14766    /// # Example
14767    /// ```ignore,no_run
14768    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14769    /// let x = Jwk::new().set_kid("example");
14770    /// ```
14771    pub fn set_kid<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14772        self.kid = v.into();
14773        self
14774    }
14775
14776    /// Sets the value of [n][crate::model::Jwk::n].
14777    ///
14778    /// # Example
14779    /// ```ignore,no_run
14780    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14781    /// let x = Jwk::new().set_n("example");
14782    /// ```
14783    pub fn set_n<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14784        self.n = v.into();
14785        self
14786    }
14787
14788    /// Sets the value of [e][crate::model::Jwk::e].
14789    ///
14790    /// # Example
14791    /// ```ignore,no_run
14792    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14793    /// let x = Jwk::new().set_e("example");
14794    /// ```
14795    pub fn set_e<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14796        self.e = v.into();
14797        self
14798    }
14799
14800    /// Sets the value of [x][crate::model::Jwk::x].
14801    ///
14802    /// # Example
14803    /// ```ignore,no_run
14804    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14805    /// let x = Jwk::new().set_x("example");
14806    /// ```
14807    pub fn set_x<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14808        self.x = v.into();
14809        self
14810    }
14811
14812    /// Sets the value of [y][crate::model::Jwk::y].
14813    ///
14814    /// # Example
14815    /// ```ignore,no_run
14816    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14817    /// let x = Jwk::new().set_y("example");
14818    /// ```
14819    pub fn set_y<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14820        self.y = v.into();
14821        self
14822    }
14823
14824    /// Sets the value of [crv][crate::model::Jwk::crv].
14825    ///
14826    /// # Example
14827    /// ```ignore,no_run
14828    /// # use google_cloud_gkemulticloud_v1::model::Jwk;
14829    /// let x = Jwk::new().set_crv("example");
14830    /// ```
14831    pub fn set_crv<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14832        self.crv = v.into();
14833        self
14834    }
14835}
14836
14837impl wkt::message::Message for Jwk {
14838    fn typename() -> &'static str {
14839        "type.googleapis.com/google.cloud.gkemulticloud.v1.Jwk"
14840    }
14841}
14842
14843/// Workload Identity settings.
14844#[derive(Clone, Default, PartialEq)]
14845#[non_exhaustive]
14846pub struct WorkloadIdentityConfig {
14847    /// The OIDC issuer URL for this cluster.
14848    pub issuer_uri: std::string::String,
14849
14850    /// The Workload Identity Pool associated to the cluster.
14851    pub workload_pool: std::string::String,
14852
14853    /// The ID of the OIDC Identity Provider (IdP) associated to the Workload
14854    /// Identity Pool.
14855    pub identity_provider: std::string::String,
14856
14857    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14858}
14859
14860impl WorkloadIdentityConfig {
14861    pub fn new() -> Self {
14862        std::default::Default::default()
14863    }
14864
14865    /// Sets the value of [issuer_uri][crate::model::WorkloadIdentityConfig::issuer_uri].
14866    ///
14867    /// # Example
14868    /// ```ignore,no_run
14869    /// # use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
14870    /// let x = WorkloadIdentityConfig::new().set_issuer_uri("example");
14871    /// ```
14872    pub fn set_issuer_uri<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14873        self.issuer_uri = v.into();
14874        self
14875    }
14876
14877    /// Sets the value of [workload_pool][crate::model::WorkloadIdentityConfig::workload_pool].
14878    ///
14879    /// # Example
14880    /// ```ignore,no_run
14881    /// # use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
14882    /// let x = WorkloadIdentityConfig::new().set_workload_pool("example");
14883    /// ```
14884    pub fn set_workload_pool<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
14885        self.workload_pool = v.into();
14886        self
14887    }
14888
14889    /// Sets the value of [identity_provider][crate::model::WorkloadIdentityConfig::identity_provider].
14890    ///
14891    /// # Example
14892    /// ```ignore,no_run
14893    /// # use google_cloud_gkemulticloud_v1::model::WorkloadIdentityConfig;
14894    /// let x = WorkloadIdentityConfig::new().set_identity_provider("example");
14895    /// ```
14896    pub fn set_identity_provider<T: std::convert::Into<std::string::String>>(
14897        mut self,
14898        v: T,
14899    ) -> Self {
14900        self.identity_provider = v.into();
14901        self
14902    }
14903}
14904
14905impl wkt::message::Message for WorkloadIdentityConfig {
14906    fn typename() -> &'static str {
14907        "type.googleapis.com/google.cloud.gkemulticloud.v1.WorkloadIdentityConfig"
14908    }
14909}
14910
14911/// Constraints applied to pods.
14912#[derive(Clone, Default, PartialEq)]
14913#[non_exhaustive]
14914pub struct MaxPodsConstraint {
14915    /// Required. The maximum number of pods to schedule on a single node.
14916    pub max_pods_per_node: i64,
14917
14918    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14919}
14920
14921impl MaxPodsConstraint {
14922    pub fn new() -> Self {
14923        std::default::Default::default()
14924    }
14925
14926    /// Sets the value of [max_pods_per_node][crate::model::MaxPodsConstraint::max_pods_per_node].
14927    ///
14928    /// # Example
14929    /// ```ignore,no_run
14930    /// # use google_cloud_gkemulticloud_v1::model::MaxPodsConstraint;
14931    /// let x = MaxPodsConstraint::new().set_max_pods_per_node(42);
14932    /// ```
14933    pub fn set_max_pods_per_node<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
14934        self.max_pods_per_node = v.into();
14935        self
14936    }
14937}
14938
14939impl wkt::message::Message for MaxPodsConstraint {
14940    fn typename() -> &'static str {
14941        "type.googleapis.com/google.cloud.gkemulticloud.v1.MaxPodsConstraint"
14942    }
14943}
14944
14945/// Metadata about a long-running operation.
14946#[derive(Clone, Default, PartialEq)]
14947#[non_exhaustive]
14948pub struct OperationMetadata {
14949    /// Output only. The time at which this operation was created.
14950    pub create_time: std::option::Option<wkt::Timestamp>,
14951
14952    /// Output only. The time at which this operation was completed.
14953    pub end_time: std::option::Option<wkt::Timestamp>,
14954
14955    /// Output only. The name of the resource associated to this operation.
14956    pub target: std::string::String,
14957
14958    /// Output only. Human-readable status of the operation, if any.
14959    pub status_detail: std::string::String,
14960
14961    /// Output only. Human-readable status of any error that occurred during the
14962    /// operation.
14963    pub error_detail: std::string::String,
14964
14965    /// Output only. The verb associated with the API method which triggered this
14966    /// operation. Possible values are "create", "delete", "update" and "import".
14967    pub verb: std::string::String,
14968
14969    /// Output only. Identifies whether cancellation has been requested for the
14970    /// operation. Operations that have successfully been cancelled have
14971    /// [google.longrunning.Operation.error][google.longrunning.Operation.error]
14972    /// value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
14973    /// corresponding to `Code.CANCELLED`.
14974    ///
14975    /// [google.longrunning.Operation.error]: google_cloud_longrunning::model::Operation::result
14976    /// [google.rpc.Status.code]: google_cloud_rpc::model::Status::code
14977    pub requested_cancellation: bool,
14978
14979    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
14980}
14981
14982impl OperationMetadata {
14983    pub fn new() -> Self {
14984        std::default::Default::default()
14985    }
14986
14987    /// Sets the value of [create_time][crate::model::OperationMetadata::create_time].
14988    ///
14989    /// # Example
14990    /// ```ignore,no_run
14991    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
14992    /// use wkt::Timestamp;
14993    /// let x = OperationMetadata::new().set_create_time(Timestamp::default()/* use setters */);
14994    /// ```
14995    pub fn set_create_time<T>(mut self, v: T) -> Self
14996    where
14997        T: std::convert::Into<wkt::Timestamp>,
14998    {
14999        self.create_time = std::option::Option::Some(v.into());
15000        self
15001    }
15002
15003    /// Sets or clears the value of [create_time][crate::model::OperationMetadata::create_time].
15004    ///
15005    /// # Example
15006    /// ```ignore,no_run
15007    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15008    /// use wkt::Timestamp;
15009    /// let x = OperationMetadata::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
15010    /// let x = OperationMetadata::new().set_or_clear_create_time(None::<Timestamp>);
15011    /// ```
15012    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
15013    where
15014        T: std::convert::Into<wkt::Timestamp>,
15015    {
15016        self.create_time = v.map(|x| x.into());
15017        self
15018    }
15019
15020    /// Sets the value of [end_time][crate::model::OperationMetadata::end_time].
15021    ///
15022    /// # Example
15023    /// ```ignore,no_run
15024    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15025    /// use wkt::Timestamp;
15026    /// let x = OperationMetadata::new().set_end_time(Timestamp::default()/* use setters */);
15027    /// ```
15028    pub fn set_end_time<T>(mut self, v: T) -> Self
15029    where
15030        T: std::convert::Into<wkt::Timestamp>,
15031    {
15032        self.end_time = std::option::Option::Some(v.into());
15033        self
15034    }
15035
15036    /// Sets or clears the value of [end_time][crate::model::OperationMetadata::end_time].
15037    ///
15038    /// # Example
15039    /// ```ignore,no_run
15040    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15041    /// use wkt::Timestamp;
15042    /// let x = OperationMetadata::new().set_or_clear_end_time(Some(Timestamp::default()/* use setters */));
15043    /// let x = OperationMetadata::new().set_or_clear_end_time(None::<Timestamp>);
15044    /// ```
15045    pub fn set_or_clear_end_time<T>(mut self, v: std::option::Option<T>) -> Self
15046    where
15047        T: std::convert::Into<wkt::Timestamp>,
15048    {
15049        self.end_time = v.map(|x| x.into());
15050        self
15051    }
15052
15053    /// Sets the value of [target][crate::model::OperationMetadata::target].
15054    ///
15055    /// # Example
15056    /// ```ignore,no_run
15057    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15058    /// let x = OperationMetadata::new().set_target("example");
15059    /// ```
15060    pub fn set_target<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15061        self.target = v.into();
15062        self
15063    }
15064
15065    /// Sets the value of [status_detail][crate::model::OperationMetadata::status_detail].
15066    ///
15067    /// # Example
15068    /// ```ignore,no_run
15069    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15070    /// let x = OperationMetadata::new().set_status_detail("example");
15071    /// ```
15072    pub fn set_status_detail<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15073        self.status_detail = v.into();
15074        self
15075    }
15076
15077    /// Sets the value of [error_detail][crate::model::OperationMetadata::error_detail].
15078    ///
15079    /// # Example
15080    /// ```ignore,no_run
15081    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15082    /// let x = OperationMetadata::new().set_error_detail("example");
15083    /// ```
15084    pub fn set_error_detail<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15085        self.error_detail = v.into();
15086        self
15087    }
15088
15089    /// Sets the value of [verb][crate::model::OperationMetadata::verb].
15090    ///
15091    /// # Example
15092    /// ```ignore,no_run
15093    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15094    /// let x = OperationMetadata::new().set_verb("example");
15095    /// ```
15096    pub fn set_verb<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15097        self.verb = v.into();
15098        self
15099    }
15100
15101    /// Sets the value of [requested_cancellation][crate::model::OperationMetadata::requested_cancellation].
15102    ///
15103    /// # Example
15104    /// ```ignore,no_run
15105    /// # use google_cloud_gkemulticloud_v1::model::OperationMetadata;
15106    /// let x = OperationMetadata::new().set_requested_cancellation(true);
15107    /// ```
15108    pub fn set_requested_cancellation<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
15109        self.requested_cancellation = v.into();
15110        self
15111    }
15112}
15113
15114impl wkt::message::Message for OperationMetadata {
15115    fn typename() -> &'static str {
15116        "type.googleapis.com/google.cloud.gkemulticloud.v1.OperationMetadata"
15117    }
15118}
15119
15120/// The taint content for the node taint.
15121#[derive(Clone, Default, PartialEq)]
15122#[non_exhaustive]
15123pub struct NodeTaint {
15124    /// Required. Key for the taint.
15125    pub key: std::string::String,
15126
15127    /// Required. Value for the taint.
15128    pub value: std::string::String,
15129
15130    /// Required. The taint effect.
15131    pub effect: crate::model::node_taint::Effect,
15132
15133    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15134}
15135
15136impl NodeTaint {
15137    pub fn new() -> Self {
15138        std::default::Default::default()
15139    }
15140
15141    /// Sets the value of [key][crate::model::NodeTaint::key].
15142    ///
15143    /// # Example
15144    /// ```ignore,no_run
15145    /// # use google_cloud_gkemulticloud_v1::model::NodeTaint;
15146    /// let x = NodeTaint::new().set_key("example");
15147    /// ```
15148    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15149        self.key = v.into();
15150        self
15151    }
15152
15153    /// Sets the value of [value][crate::model::NodeTaint::value].
15154    ///
15155    /// # Example
15156    /// ```ignore,no_run
15157    /// # use google_cloud_gkemulticloud_v1::model::NodeTaint;
15158    /// let x = NodeTaint::new().set_value("example");
15159    /// ```
15160    pub fn set_value<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15161        self.value = v.into();
15162        self
15163    }
15164
15165    /// Sets the value of [effect][crate::model::NodeTaint::effect].
15166    ///
15167    /// # Example
15168    /// ```ignore,no_run
15169    /// # use google_cloud_gkemulticloud_v1::model::NodeTaint;
15170    /// use google_cloud_gkemulticloud_v1::model::node_taint::Effect;
15171    /// let x0 = NodeTaint::new().set_effect(Effect::NoSchedule);
15172    /// let x1 = NodeTaint::new().set_effect(Effect::PreferNoSchedule);
15173    /// let x2 = NodeTaint::new().set_effect(Effect::NoExecute);
15174    /// ```
15175    pub fn set_effect<T: std::convert::Into<crate::model::node_taint::Effect>>(
15176        mut self,
15177        v: T,
15178    ) -> Self {
15179        self.effect = v.into();
15180        self
15181    }
15182}
15183
15184impl wkt::message::Message for NodeTaint {
15185    fn typename() -> &'static str {
15186        "type.googleapis.com/google.cloud.gkemulticloud.v1.NodeTaint"
15187    }
15188}
15189
15190/// Defines additional types related to [NodeTaint].
15191pub mod node_taint {
15192    #[allow(unused_imports)]
15193    use super::*;
15194
15195    /// The taint effect.
15196    ///
15197    /// # Working with unknown values
15198    ///
15199    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
15200    /// additional enum variants at any time. Adding new variants is not considered
15201    /// a breaking change. Applications should write their code in anticipation of:
15202    ///
15203    /// - New values appearing in future releases of the client library, **and**
15204    /// - New values received dynamically, without application changes.
15205    ///
15206    /// Please consult the [Working with enums] section in the user guide for some
15207    /// guidelines.
15208    ///
15209    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
15210    #[derive(Clone, Debug, PartialEq)]
15211    #[non_exhaustive]
15212    pub enum Effect {
15213        /// Not set.
15214        Unspecified,
15215        /// Do not allow new pods to schedule onto the node unless they tolerate the
15216        /// taint, but allow all pods submitted to Kubelet without going through the
15217        /// scheduler to start, and allow all already-running pods to continue
15218        /// running. Enforced by the scheduler.
15219        NoSchedule,
15220        /// Like TaintEffectNoSchedule, but the scheduler tries not to schedule
15221        /// new pods onto the node, rather than prohibiting new pods from scheduling
15222        /// onto the node entirely. Enforced by the scheduler.
15223        PreferNoSchedule,
15224        /// Evict any already-running pods that do not tolerate the taint.
15225        /// Currently enforced by NodeController.
15226        NoExecute,
15227        /// If set, the enum was initialized with an unknown value.
15228        ///
15229        /// Applications can examine the value using [Effect::value] or
15230        /// [Effect::name].
15231        UnknownValue(effect::UnknownValue),
15232    }
15233
15234    #[doc(hidden)]
15235    pub mod effect {
15236        #[allow(unused_imports)]
15237        use super::*;
15238        #[derive(Clone, Debug, PartialEq)]
15239        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
15240    }
15241
15242    impl Effect {
15243        /// Gets the enum value.
15244        ///
15245        /// Returns `None` if the enum contains an unknown value deserialized from
15246        /// the string representation of enums.
15247        pub fn value(&self) -> std::option::Option<i32> {
15248            match self {
15249                Self::Unspecified => std::option::Option::Some(0),
15250                Self::NoSchedule => std::option::Option::Some(1),
15251                Self::PreferNoSchedule => std::option::Option::Some(2),
15252                Self::NoExecute => std::option::Option::Some(3),
15253                Self::UnknownValue(u) => u.0.value(),
15254            }
15255        }
15256
15257        /// Gets the enum value as a string.
15258        ///
15259        /// Returns `None` if the enum contains an unknown value deserialized from
15260        /// the integer representation of enums.
15261        pub fn name(&self) -> std::option::Option<&str> {
15262            match self {
15263                Self::Unspecified => std::option::Option::Some("EFFECT_UNSPECIFIED"),
15264                Self::NoSchedule => std::option::Option::Some("NO_SCHEDULE"),
15265                Self::PreferNoSchedule => std::option::Option::Some("PREFER_NO_SCHEDULE"),
15266                Self::NoExecute => std::option::Option::Some("NO_EXECUTE"),
15267                Self::UnknownValue(u) => u.0.name(),
15268            }
15269        }
15270    }
15271
15272    impl std::default::Default for Effect {
15273        fn default() -> Self {
15274            use std::convert::From;
15275            Self::from(0)
15276        }
15277    }
15278
15279    impl std::fmt::Display for Effect {
15280        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
15281            wkt::internal::display_enum(f, self.name(), self.value())
15282        }
15283    }
15284
15285    impl std::convert::From<i32> for Effect {
15286        fn from(value: i32) -> Self {
15287            match value {
15288                0 => Self::Unspecified,
15289                1 => Self::NoSchedule,
15290                2 => Self::PreferNoSchedule,
15291                3 => Self::NoExecute,
15292                _ => Self::UnknownValue(effect::UnknownValue(
15293                    wkt::internal::UnknownEnumValue::Integer(value),
15294                )),
15295            }
15296        }
15297    }
15298
15299    impl std::convert::From<&str> for Effect {
15300        fn from(value: &str) -> Self {
15301            use std::string::ToString;
15302            match value {
15303                "EFFECT_UNSPECIFIED" => Self::Unspecified,
15304                "NO_SCHEDULE" => Self::NoSchedule,
15305                "PREFER_NO_SCHEDULE" => Self::PreferNoSchedule,
15306                "NO_EXECUTE" => Self::NoExecute,
15307                _ => Self::UnknownValue(effect::UnknownValue(
15308                    wkt::internal::UnknownEnumValue::String(value.to_string()),
15309                )),
15310            }
15311        }
15312    }
15313
15314    impl serde::ser::Serialize for Effect {
15315        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15316        where
15317            S: serde::Serializer,
15318        {
15319            match self {
15320                Self::Unspecified => serializer.serialize_i32(0),
15321                Self::NoSchedule => serializer.serialize_i32(1),
15322                Self::PreferNoSchedule => serializer.serialize_i32(2),
15323                Self::NoExecute => serializer.serialize_i32(3),
15324                Self::UnknownValue(u) => u.0.serialize(serializer),
15325            }
15326        }
15327    }
15328
15329    impl<'de> serde::de::Deserialize<'de> for Effect {
15330        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15331        where
15332            D: serde::Deserializer<'de>,
15333        {
15334            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Effect>::new(
15335                ".google.cloud.gkemulticloud.v1.NodeTaint.Effect",
15336            ))
15337        }
15338    }
15339}
15340
15341/// Configuration for node pool kubelet options.
15342#[derive(Clone, Default, PartialEq)]
15343#[non_exhaustive]
15344pub struct NodeKubeletConfig {
15345    /// Optional. Enable the insecure kubelet read only port.
15346    pub insecure_kubelet_readonly_port_enabled: bool,
15347
15348    /// Optional. Control the CPU management policy on the node.
15349    /// See
15350    /// <https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/>
15351    ///
15352    /// The following values are allowed.
15353    ///
15354    /// * "none": the default, which represents the existing scheduling behavior.
15355    /// * "static": allows pods with certain resource characteristics to be granted
15356    ///   increased CPU affinity and exclusivity on the node.
15357    ///   The default value is 'none' if unspecified.
15358    pub cpu_manager_policy: std::option::Option<std::string::String>,
15359
15360    /// Optional. Enable CPU CFS quota enforcement for containers that specify CPU
15361    /// limits.
15362    ///
15363    /// This option is enabled by default which makes kubelet use CFS quota
15364    /// (<https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt>) to
15365    /// enforce container CPU limits. Otherwise, CPU limits will not be enforced at
15366    /// all.
15367    ///
15368    /// Disable this option to mitigate CPU throttling problems while still having
15369    /// your pods to be in Guaranteed QoS class by specifying the CPU limits.
15370    ///
15371    /// The default value is 'true' if unspecified.
15372    pub cpu_cfs_quota: std::option::Option<bool>,
15373
15374    /// Optional. Set the CPU CFS quota period value 'cpu.cfs_period_us'.
15375    ///
15376    /// The string must be a sequence of decimal numbers, each with optional
15377    /// fraction and a unit suffix, such as "300ms".
15378    /// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
15379    /// The value must be a positive duration.
15380    ///
15381    /// The default value is '100ms' if unspecified.
15382    pub cpu_cfs_quota_period: std::option::Option<std::string::String>,
15383
15384    /// Optional. Set the Pod PID limits. See
15385    /// <https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits>
15386    ///
15387    /// Controls the maximum number of processes allowed to run in a pod. The value
15388    /// must be greater than or equal to 1024 and less than 4194304.
15389    pub pod_pids_limit: std::option::Option<i64>,
15390
15391    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15392}
15393
15394impl NodeKubeletConfig {
15395    pub fn new() -> Self {
15396        std::default::Default::default()
15397    }
15398
15399    /// Sets the value of [insecure_kubelet_readonly_port_enabled][crate::model::NodeKubeletConfig::insecure_kubelet_readonly_port_enabled].
15400    ///
15401    /// # Example
15402    /// ```ignore,no_run
15403    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15404    /// let x = NodeKubeletConfig::new().set_insecure_kubelet_readonly_port_enabled(true);
15405    /// ```
15406    pub fn set_insecure_kubelet_readonly_port_enabled<T: std::convert::Into<bool>>(
15407        mut self,
15408        v: T,
15409    ) -> Self {
15410        self.insecure_kubelet_readonly_port_enabled = v.into();
15411        self
15412    }
15413
15414    /// Sets the value of [cpu_manager_policy][crate::model::NodeKubeletConfig::cpu_manager_policy].
15415    ///
15416    /// # Example
15417    /// ```ignore,no_run
15418    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15419    /// let x = NodeKubeletConfig::new().set_cpu_manager_policy("example");
15420    /// ```
15421    pub fn set_cpu_manager_policy<T>(mut self, v: T) -> Self
15422    where
15423        T: std::convert::Into<std::string::String>,
15424    {
15425        self.cpu_manager_policy = std::option::Option::Some(v.into());
15426        self
15427    }
15428
15429    /// Sets or clears the value of [cpu_manager_policy][crate::model::NodeKubeletConfig::cpu_manager_policy].
15430    ///
15431    /// # Example
15432    /// ```ignore,no_run
15433    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15434    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_manager_policy(Some("example"));
15435    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_manager_policy(None::<String>);
15436    /// ```
15437    pub fn set_or_clear_cpu_manager_policy<T>(mut self, v: std::option::Option<T>) -> Self
15438    where
15439        T: std::convert::Into<std::string::String>,
15440    {
15441        self.cpu_manager_policy = v.map(|x| x.into());
15442        self
15443    }
15444
15445    /// Sets the value of [cpu_cfs_quota][crate::model::NodeKubeletConfig::cpu_cfs_quota].
15446    ///
15447    /// # Example
15448    /// ```ignore,no_run
15449    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15450    /// let x = NodeKubeletConfig::new().set_cpu_cfs_quota(true);
15451    /// ```
15452    pub fn set_cpu_cfs_quota<T>(mut self, v: T) -> Self
15453    where
15454        T: std::convert::Into<bool>,
15455    {
15456        self.cpu_cfs_quota = std::option::Option::Some(v.into());
15457        self
15458    }
15459
15460    /// Sets or clears the value of [cpu_cfs_quota][crate::model::NodeKubeletConfig::cpu_cfs_quota].
15461    ///
15462    /// # Example
15463    /// ```ignore,no_run
15464    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15465    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_cfs_quota(Some(false));
15466    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_cfs_quota(None::<bool>);
15467    /// ```
15468    pub fn set_or_clear_cpu_cfs_quota<T>(mut self, v: std::option::Option<T>) -> Self
15469    where
15470        T: std::convert::Into<bool>,
15471    {
15472        self.cpu_cfs_quota = v.map(|x| x.into());
15473        self
15474    }
15475
15476    /// Sets the value of [cpu_cfs_quota_period][crate::model::NodeKubeletConfig::cpu_cfs_quota_period].
15477    ///
15478    /// # Example
15479    /// ```ignore,no_run
15480    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15481    /// let x = NodeKubeletConfig::new().set_cpu_cfs_quota_period("example");
15482    /// ```
15483    pub fn set_cpu_cfs_quota_period<T>(mut self, v: T) -> Self
15484    where
15485        T: std::convert::Into<std::string::String>,
15486    {
15487        self.cpu_cfs_quota_period = std::option::Option::Some(v.into());
15488        self
15489    }
15490
15491    /// Sets or clears the value of [cpu_cfs_quota_period][crate::model::NodeKubeletConfig::cpu_cfs_quota_period].
15492    ///
15493    /// # Example
15494    /// ```ignore,no_run
15495    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15496    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_cfs_quota_period(Some("example"));
15497    /// let x = NodeKubeletConfig::new().set_or_clear_cpu_cfs_quota_period(None::<String>);
15498    /// ```
15499    pub fn set_or_clear_cpu_cfs_quota_period<T>(mut self, v: std::option::Option<T>) -> Self
15500    where
15501        T: std::convert::Into<std::string::String>,
15502    {
15503        self.cpu_cfs_quota_period = v.map(|x| x.into());
15504        self
15505    }
15506
15507    /// Sets the value of [pod_pids_limit][crate::model::NodeKubeletConfig::pod_pids_limit].
15508    ///
15509    /// # Example
15510    /// ```ignore,no_run
15511    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15512    /// let x = NodeKubeletConfig::new().set_pod_pids_limit(42);
15513    /// ```
15514    pub fn set_pod_pids_limit<T>(mut self, v: T) -> Self
15515    where
15516        T: std::convert::Into<i64>,
15517    {
15518        self.pod_pids_limit = std::option::Option::Some(v.into());
15519        self
15520    }
15521
15522    /// Sets or clears the value of [pod_pids_limit][crate::model::NodeKubeletConfig::pod_pids_limit].
15523    ///
15524    /// # Example
15525    /// ```ignore,no_run
15526    /// # use google_cloud_gkemulticloud_v1::model::NodeKubeletConfig;
15527    /// let x = NodeKubeletConfig::new().set_or_clear_pod_pids_limit(Some(42));
15528    /// let x = NodeKubeletConfig::new().set_or_clear_pod_pids_limit(None::<i32>);
15529    /// ```
15530    pub fn set_or_clear_pod_pids_limit<T>(mut self, v: std::option::Option<T>) -> Self
15531    where
15532        T: std::convert::Into<i64>,
15533    {
15534        self.pod_pids_limit = v.map(|x| x.into());
15535        self
15536    }
15537}
15538
15539impl wkt::message::Message for NodeKubeletConfig {
15540    fn typename() -> &'static str {
15541        "type.googleapis.com/google.cloud.gkemulticloud.v1.NodeKubeletConfig"
15542    }
15543}
15544
15545/// Fleet related configuration.
15546///
15547/// Fleets are a Google Cloud concept for logically organizing clusters,
15548/// letting you use and manage multi-cluster capabilities and apply
15549/// consistent policies across your systems.
15550///
15551/// See [Anthos
15552/// Fleets](https://cloud.google.com/anthos/multicluster-management/fleets) for
15553/// more details on Anthos multi-cluster capabilities using Fleets.
15554#[derive(Clone, Default, PartialEq)]
15555#[non_exhaustive]
15556pub struct Fleet {
15557    /// Required. The name of the Fleet host project where this cluster will be
15558    /// registered.
15559    ///
15560    /// Project names are formatted as
15561    /// `projects/<project-number>`.
15562    pub project: std::string::String,
15563
15564    /// Output only. The name of the managed Hub Membership resource associated to
15565    /// this cluster.
15566    ///
15567    /// Membership names are formatted as
15568    /// `projects/<project-number>/locations/global/membership/<cluster-id>`.
15569    pub membership: std::string::String,
15570
15571    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15572}
15573
15574impl Fleet {
15575    pub fn new() -> Self {
15576        std::default::Default::default()
15577    }
15578
15579    /// Sets the value of [project][crate::model::Fleet::project].
15580    ///
15581    /// # Example
15582    /// ```ignore,no_run
15583    /// # use google_cloud_gkemulticloud_v1::model::Fleet;
15584    /// let x = Fleet::new().set_project("example");
15585    /// ```
15586    pub fn set_project<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15587        self.project = v.into();
15588        self
15589    }
15590
15591    /// Sets the value of [membership][crate::model::Fleet::membership].
15592    ///
15593    /// # Example
15594    /// ```ignore,no_run
15595    /// # use google_cloud_gkemulticloud_v1::model::Fleet;
15596    /// let x = Fleet::new().set_membership("example");
15597    /// ```
15598    pub fn set_membership<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
15599        self.membership = v.into();
15600        self
15601    }
15602}
15603
15604impl wkt::message::Message for Fleet {
15605    fn typename() -> &'static str {
15606        "type.googleapis.com/google.cloud.gkemulticloud.v1.Fleet"
15607    }
15608}
15609
15610/// Parameters that describe the Logging configuration in a cluster.
15611#[derive(Clone, Default, PartialEq)]
15612#[non_exhaustive]
15613pub struct LoggingConfig {
15614    /// The configuration of the logging components;
15615    pub component_config: std::option::Option<crate::model::LoggingComponentConfig>,
15616
15617    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15618}
15619
15620impl LoggingConfig {
15621    pub fn new() -> Self {
15622        std::default::Default::default()
15623    }
15624
15625    /// Sets the value of [component_config][crate::model::LoggingConfig::component_config].
15626    ///
15627    /// # Example
15628    /// ```ignore,no_run
15629    /// # use google_cloud_gkemulticloud_v1::model::LoggingConfig;
15630    /// use google_cloud_gkemulticloud_v1::model::LoggingComponentConfig;
15631    /// let x = LoggingConfig::new().set_component_config(LoggingComponentConfig::default()/* use setters */);
15632    /// ```
15633    pub fn set_component_config<T>(mut self, v: T) -> Self
15634    where
15635        T: std::convert::Into<crate::model::LoggingComponentConfig>,
15636    {
15637        self.component_config = std::option::Option::Some(v.into());
15638        self
15639    }
15640
15641    /// Sets or clears the value of [component_config][crate::model::LoggingConfig::component_config].
15642    ///
15643    /// # Example
15644    /// ```ignore,no_run
15645    /// # use google_cloud_gkemulticloud_v1::model::LoggingConfig;
15646    /// use google_cloud_gkemulticloud_v1::model::LoggingComponentConfig;
15647    /// let x = LoggingConfig::new().set_or_clear_component_config(Some(LoggingComponentConfig::default()/* use setters */));
15648    /// let x = LoggingConfig::new().set_or_clear_component_config(None::<LoggingComponentConfig>);
15649    /// ```
15650    pub fn set_or_clear_component_config<T>(mut self, v: std::option::Option<T>) -> Self
15651    where
15652        T: std::convert::Into<crate::model::LoggingComponentConfig>,
15653    {
15654        self.component_config = v.map(|x| x.into());
15655        self
15656    }
15657}
15658
15659impl wkt::message::Message for LoggingConfig {
15660    fn typename() -> &'static str {
15661        "type.googleapis.com/google.cloud.gkemulticloud.v1.LoggingConfig"
15662    }
15663}
15664
15665/// Parameters that describe the Logging component configuration in a cluster.
15666#[derive(Clone, Default, PartialEq)]
15667#[non_exhaustive]
15668pub struct LoggingComponentConfig {
15669    /// The components to be enabled.
15670    pub enable_components: std::vec::Vec<crate::model::logging_component_config::Component>,
15671
15672    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15673}
15674
15675impl LoggingComponentConfig {
15676    pub fn new() -> Self {
15677        std::default::Default::default()
15678    }
15679
15680    /// Sets the value of [enable_components][crate::model::LoggingComponentConfig::enable_components].
15681    ///
15682    /// # Example
15683    /// ```ignore,no_run
15684    /// # use google_cloud_gkemulticloud_v1::model::LoggingComponentConfig;
15685    /// use google_cloud_gkemulticloud_v1::model::logging_component_config::Component;
15686    /// let x = LoggingComponentConfig::new().set_enable_components([
15687    ///     Component::SystemComponents,
15688    ///     Component::Workloads,
15689    /// ]);
15690    /// ```
15691    pub fn set_enable_components<T, V>(mut self, v: T) -> Self
15692    where
15693        T: std::iter::IntoIterator<Item = V>,
15694        V: std::convert::Into<crate::model::logging_component_config::Component>,
15695    {
15696        use std::iter::Iterator;
15697        self.enable_components = v.into_iter().map(|i| i.into()).collect();
15698        self
15699    }
15700}
15701
15702impl wkt::message::Message for LoggingComponentConfig {
15703    fn typename() -> &'static str {
15704        "type.googleapis.com/google.cloud.gkemulticloud.v1.LoggingComponentConfig"
15705    }
15706}
15707
15708/// Defines additional types related to [LoggingComponentConfig].
15709pub mod logging_component_config {
15710    #[allow(unused_imports)]
15711    use super::*;
15712
15713    /// The components of the logging configuration;
15714    ///
15715    /// # Working with unknown values
15716    ///
15717    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
15718    /// additional enum variants at any time. Adding new variants is not considered
15719    /// a breaking change. Applications should write their code in anticipation of:
15720    ///
15721    /// - New values appearing in future releases of the client library, **and**
15722    /// - New values received dynamically, without application changes.
15723    ///
15724    /// Please consult the [Working with enums] section in the user guide for some
15725    /// guidelines.
15726    ///
15727    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
15728    #[derive(Clone, Debug, PartialEq)]
15729    #[non_exhaustive]
15730    pub enum Component {
15731        /// No component is specified
15732        Unspecified,
15733        /// This indicates that system logging components is enabled.
15734        SystemComponents,
15735        /// This indicates that user workload logging component is enabled.
15736        Workloads,
15737        /// If set, the enum was initialized with an unknown value.
15738        ///
15739        /// Applications can examine the value using [Component::value] or
15740        /// [Component::name].
15741        UnknownValue(component::UnknownValue),
15742    }
15743
15744    #[doc(hidden)]
15745    pub mod component {
15746        #[allow(unused_imports)]
15747        use super::*;
15748        #[derive(Clone, Debug, PartialEq)]
15749        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
15750    }
15751
15752    impl Component {
15753        /// Gets the enum value.
15754        ///
15755        /// Returns `None` if the enum contains an unknown value deserialized from
15756        /// the string representation of enums.
15757        pub fn value(&self) -> std::option::Option<i32> {
15758            match self {
15759                Self::Unspecified => std::option::Option::Some(0),
15760                Self::SystemComponents => std::option::Option::Some(1),
15761                Self::Workloads => std::option::Option::Some(2),
15762                Self::UnknownValue(u) => u.0.value(),
15763            }
15764        }
15765
15766        /// Gets the enum value as a string.
15767        ///
15768        /// Returns `None` if the enum contains an unknown value deserialized from
15769        /// the integer representation of enums.
15770        pub fn name(&self) -> std::option::Option<&str> {
15771            match self {
15772                Self::Unspecified => std::option::Option::Some("COMPONENT_UNSPECIFIED"),
15773                Self::SystemComponents => std::option::Option::Some("SYSTEM_COMPONENTS"),
15774                Self::Workloads => std::option::Option::Some("WORKLOADS"),
15775                Self::UnknownValue(u) => u.0.name(),
15776            }
15777        }
15778    }
15779
15780    impl std::default::Default for Component {
15781        fn default() -> Self {
15782            use std::convert::From;
15783            Self::from(0)
15784        }
15785    }
15786
15787    impl std::fmt::Display for Component {
15788        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
15789            wkt::internal::display_enum(f, self.name(), self.value())
15790        }
15791    }
15792
15793    impl std::convert::From<i32> for Component {
15794        fn from(value: i32) -> Self {
15795            match value {
15796                0 => Self::Unspecified,
15797                1 => Self::SystemComponents,
15798                2 => Self::Workloads,
15799                _ => Self::UnknownValue(component::UnknownValue(
15800                    wkt::internal::UnknownEnumValue::Integer(value),
15801                )),
15802            }
15803        }
15804    }
15805
15806    impl std::convert::From<&str> for Component {
15807        fn from(value: &str) -> Self {
15808            use std::string::ToString;
15809            match value {
15810                "COMPONENT_UNSPECIFIED" => Self::Unspecified,
15811                "SYSTEM_COMPONENTS" => Self::SystemComponents,
15812                "WORKLOADS" => Self::Workloads,
15813                _ => Self::UnknownValue(component::UnknownValue(
15814                    wkt::internal::UnknownEnumValue::String(value.to_string()),
15815                )),
15816            }
15817        }
15818    }
15819
15820    impl serde::ser::Serialize for Component {
15821        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15822        where
15823            S: serde::Serializer,
15824        {
15825            match self {
15826                Self::Unspecified => serializer.serialize_i32(0),
15827                Self::SystemComponents => serializer.serialize_i32(1),
15828                Self::Workloads => serializer.serialize_i32(2),
15829                Self::UnknownValue(u) => u.0.serialize(serializer),
15830            }
15831        }
15832    }
15833
15834    impl<'de> serde::de::Deserialize<'de> for Component {
15835        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15836        where
15837            D: serde::Deserializer<'de>,
15838        {
15839            deserializer.deserialize_any(wkt::internal::EnumVisitor::<Component>::new(
15840                ".google.cloud.gkemulticloud.v1.LoggingComponentConfig.Component",
15841            ))
15842        }
15843    }
15844}
15845
15846/// Parameters that describe the Monitoring configuration in a cluster.
15847#[derive(Clone, Default, PartialEq)]
15848#[non_exhaustive]
15849pub struct MonitoringConfig {
15850    /// Enable Google Cloud Managed Service for Prometheus in the cluster.
15851    pub managed_prometheus_config: std::option::Option<crate::model::ManagedPrometheusConfig>,
15852
15853    /// Optionally enable GKE metrics.
15854    /// Only for Attached Clusters.
15855    pub cloud_monitoring_config: std::option::Option<crate::model::CloudMonitoringConfig>,
15856
15857    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15858}
15859
15860impl MonitoringConfig {
15861    pub fn new() -> Self {
15862        std::default::Default::default()
15863    }
15864
15865    /// Sets the value of [managed_prometheus_config][crate::model::MonitoringConfig::managed_prometheus_config].
15866    ///
15867    /// # Example
15868    /// ```ignore,no_run
15869    /// # use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
15870    /// use google_cloud_gkemulticloud_v1::model::ManagedPrometheusConfig;
15871    /// let x = MonitoringConfig::new().set_managed_prometheus_config(ManagedPrometheusConfig::default()/* use setters */);
15872    /// ```
15873    pub fn set_managed_prometheus_config<T>(mut self, v: T) -> Self
15874    where
15875        T: std::convert::Into<crate::model::ManagedPrometheusConfig>,
15876    {
15877        self.managed_prometheus_config = std::option::Option::Some(v.into());
15878        self
15879    }
15880
15881    /// Sets or clears the value of [managed_prometheus_config][crate::model::MonitoringConfig::managed_prometheus_config].
15882    ///
15883    /// # Example
15884    /// ```ignore,no_run
15885    /// # use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
15886    /// use google_cloud_gkemulticloud_v1::model::ManagedPrometheusConfig;
15887    /// let x = MonitoringConfig::new().set_or_clear_managed_prometheus_config(Some(ManagedPrometheusConfig::default()/* use setters */));
15888    /// let x = MonitoringConfig::new().set_or_clear_managed_prometheus_config(None::<ManagedPrometheusConfig>);
15889    /// ```
15890    pub fn set_or_clear_managed_prometheus_config<T>(mut self, v: std::option::Option<T>) -> Self
15891    where
15892        T: std::convert::Into<crate::model::ManagedPrometheusConfig>,
15893    {
15894        self.managed_prometheus_config = v.map(|x| x.into());
15895        self
15896    }
15897
15898    /// Sets the value of [cloud_monitoring_config][crate::model::MonitoringConfig::cloud_monitoring_config].
15899    ///
15900    /// # Example
15901    /// ```ignore,no_run
15902    /// # use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
15903    /// use google_cloud_gkemulticloud_v1::model::CloudMonitoringConfig;
15904    /// let x = MonitoringConfig::new().set_cloud_monitoring_config(CloudMonitoringConfig::default()/* use setters */);
15905    /// ```
15906    pub fn set_cloud_monitoring_config<T>(mut self, v: T) -> Self
15907    where
15908        T: std::convert::Into<crate::model::CloudMonitoringConfig>,
15909    {
15910        self.cloud_monitoring_config = std::option::Option::Some(v.into());
15911        self
15912    }
15913
15914    /// Sets or clears the value of [cloud_monitoring_config][crate::model::MonitoringConfig::cloud_monitoring_config].
15915    ///
15916    /// # Example
15917    /// ```ignore,no_run
15918    /// # use google_cloud_gkemulticloud_v1::model::MonitoringConfig;
15919    /// use google_cloud_gkemulticloud_v1::model::CloudMonitoringConfig;
15920    /// let x = MonitoringConfig::new().set_or_clear_cloud_monitoring_config(Some(CloudMonitoringConfig::default()/* use setters */));
15921    /// let x = MonitoringConfig::new().set_or_clear_cloud_monitoring_config(None::<CloudMonitoringConfig>);
15922    /// ```
15923    pub fn set_or_clear_cloud_monitoring_config<T>(mut self, v: std::option::Option<T>) -> Self
15924    where
15925        T: std::convert::Into<crate::model::CloudMonitoringConfig>,
15926    {
15927        self.cloud_monitoring_config = v.map(|x| x.into());
15928        self
15929    }
15930}
15931
15932impl wkt::message::Message for MonitoringConfig {
15933    fn typename() -> &'static str {
15934        "type.googleapis.com/google.cloud.gkemulticloud.v1.MonitoringConfig"
15935    }
15936}
15937
15938/// ManagedPrometheusConfig defines the configuration for
15939/// Google Cloud Managed Service for Prometheus.
15940#[derive(Clone, Default, PartialEq)]
15941#[non_exhaustive]
15942pub struct ManagedPrometheusConfig {
15943    /// Enable Managed Collection.
15944    pub enabled: bool,
15945
15946    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15947}
15948
15949impl ManagedPrometheusConfig {
15950    pub fn new() -> Self {
15951        std::default::Default::default()
15952    }
15953
15954    /// Sets the value of [enabled][crate::model::ManagedPrometheusConfig::enabled].
15955    ///
15956    /// # Example
15957    /// ```ignore,no_run
15958    /// # use google_cloud_gkemulticloud_v1::model::ManagedPrometheusConfig;
15959    /// let x = ManagedPrometheusConfig::new().set_enabled(true);
15960    /// ```
15961    pub fn set_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
15962        self.enabled = v.into();
15963        self
15964    }
15965}
15966
15967impl wkt::message::Message for ManagedPrometheusConfig {
15968    fn typename() -> &'static str {
15969        "type.googleapis.com/google.cloud.gkemulticloud.v1.ManagedPrometheusConfig"
15970    }
15971}
15972
15973/// CloudMonitoringConfig defines the configuration for
15974/// built-in Cloud Logging and Monitoring.
15975/// Only for Attached Clusters.
15976#[derive(Clone, Default, PartialEq)]
15977#[non_exhaustive]
15978pub struct CloudMonitoringConfig {
15979    /// Enable GKE-native logging and metrics.
15980    /// Only for Attached Clusters.
15981    pub enabled: std::option::Option<bool>,
15982
15983    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
15984}
15985
15986impl CloudMonitoringConfig {
15987    pub fn new() -> Self {
15988        std::default::Default::default()
15989    }
15990
15991    /// Sets the value of [enabled][crate::model::CloudMonitoringConfig::enabled].
15992    ///
15993    /// # Example
15994    /// ```ignore,no_run
15995    /// # use google_cloud_gkemulticloud_v1::model::CloudMonitoringConfig;
15996    /// let x = CloudMonitoringConfig::new().set_enabled(true);
15997    /// ```
15998    pub fn set_enabled<T>(mut self, v: T) -> Self
15999    where
16000        T: std::convert::Into<bool>,
16001    {
16002        self.enabled = std::option::Option::Some(v.into());
16003        self
16004    }
16005
16006    /// Sets or clears the value of [enabled][crate::model::CloudMonitoringConfig::enabled].
16007    ///
16008    /// # Example
16009    /// ```ignore,no_run
16010    /// # use google_cloud_gkemulticloud_v1::model::CloudMonitoringConfig;
16011    /// let x = CloudMonitoringConfig::new().set_or_clear_enabled(Some(false));
16012    /// let x = CloudMonitoringConfig::new().set_or_clear_enabled(None::<bool>);
16013    /// ```
16014    pub fn set_or_clear_enabled<T>(mut self, v: std::option::Option<T>) -> Self
16015    where
16016        T: std::convert::Into<bool>,
16017    {
16018        self.enabled = v.map(|x| x.into());
16019        self
16020    }
16021}
16022
16023impl wkt::message::Message for CloudMonitoringConfig {
16024    fn typename() -> &'static str {
16025        "type.googleapis.com/google.cloud.gkemulticloud.v1.CloudMonitoringConfig"
16026    }
16027}
16028
16029/// Configuration for Binary Authorization.
16030#[derive(Clone, Default, PartialEq)]
16031#[non_exhaustive]
16032pub struct BinaryAuthorization {
16033    /// Mode of operation for binauthz policy evaluation. If unspecified, defaults
16034    /// to DISABLED.
16035    pub evaluation_mode: crate::model::binary_authorization::EvaluationMode,
16036
16037    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16038}
16039
16040impl BinaryAuthorization {
16041    pub fn new() -> Self {
16042        std::default::Default::default()
16043    }
16044
16045    /// Sets the value of [evaluation_mode][crate::model::BinaryAuthorization::evaluation_mode].
16046    ///
16047    /// # Example
16048    /// ```ignore,no_run
16049    /// # use google_cloud_gkemulticloud_v1::model::BinaryAuthorization;
16050    /// use google_cloud_gkemulticloud_v1::model::binary_authorization::EvaluationMode;
16051    /// let x0 = BinaryAuthorization::new().set_evaluation_mode(EvaluationMode::Disabled);
16052    /// let x1 = BinaryAuthorization::new().set_evaluation_mode(EvaluationMode::ProjectSingletonPolicyEnforce);
16053    /// ```
16054    pub fn set_evaluation_mode<
16055        T: std::convert::Into<crate::model::binary_authorization::EvaluationMode>,
16056    >(
16057        mut self,
16058        v: T,
16059    ) -> Self {
16060        self.evaluation_mode = v.into();
16061        self
16062    }
16063}
16064
16065impl wkt::message::Message for BinaryAuthorization {
16066    fn typename() -> &'static str {
16067        "type.googleapis.com/google.cloud.gkemulticloud.v1.BinaryAuthorization"
16068    }
16069}
16070
16071/// Defines additional types related to [BinaryAuthorization].
16072pub mod binary_authorization {
16073    #[allow(unused_imports)]
16074    use super::*;
16075
16076    /// Binary Authorization mode of operation.
16077    ///
16078    /// # Working with unknown values
16079    ///
16080    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
16081    /// additional enum variants at any time. Adding new variants is not considered
16082    /// a breaking change. Applications should write their code in anticipation of:
16083    ///
16084    /// - New values appearing in future releases of the client library, **and**
16085    /// - New values received dynamically, without application changes.
16086    ///
16087    /// Please consult the [Working with enums] section in the user guide for some
16088    /// guidelines.
16089    ///
16090    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
16091    #[derive(Clone, Debug, PartialEq)]
16092    #[non_exhaustive]
16093    pub enum EvaluationMode {
16094        /// Default value
16095        Unspecified,
16096        /// Disable BinaryAuthorization
16097        Disabled,
16098        /// Enforce Kubernetes admission requests with BinaryAuthorization using the
16099        /// project's singleton policy.
16100        ProjectSingletonPolicyEnforce,
16101        /// If set, the enum was initialized with an unknown value.
16102        ///
16103        /// Applications can examine the value using [EvaluationMode::value] or
16104        /// [EvaluationMode::name].
16105        UnknownValue(evaluation_mode::UnknownValue),
16106    }
16107
16108    #[doc(hidden)]
16109    pub mod evaluation_mode {
16110        #[allow(unused_imports)]
16111        use super::*;
16112        #[derive(Clone, Debug, PartialEq)]
16113        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
16114    }
16115
16116    impl EvaluationMode {
16117        /// Gets the enum value.
16118        ///
16119        /// Returns `None` if the enum contains an unknown value deserialized from
16120        /// the string representation of enums.
16121        pub fn value(&self) -> std::option::Option<i32> {
16122            match self {
16123                Self::Unspecified => std::option::Option::Some(0),
16124                Self::Disabled => std::option::Option::Some(1),
16125                Self::ProjectSingletonPolicyEnforce => std::option::Option::Some(2),
16126                Self::UnknownValue(u) => u.0.value(),
16127            }
16128        }
16129
16130        /// Gets the enum value as a string.
16131        ///
16132        /// Returns `None` if the enum contains an unknown value deserialized from
16133        /// the integer representation of enums.
16134        pub fn name(&self) -> std::option::Option<&str> {
16135            match self {
16136                Self::Unspecified => std::option::Option::Some("EVALUATION_MODE_UNSPECIFIED"),
16137                Self::Disabled => std::option::Option::Some("DISABLED"),
16138                Self::ProjectSingletonPolicyEnforce => {
16139                    std::option::Option::Some("PROJECT_SINGLETON_POLICY_ENFORCE")
16140                }
16141                Self::UnknownValue(u) => u.0.name(),
16142            }
16143        }
16144    }
16145
16146    impl std::default::Default for EvaluationMode {
16147        fn default() -> Self {
16148            use std::convert::From;
16149            Self::from(0)
16150        }
16151    }
16152
16153    impl std::fmt::Display for EvaluationMode {
16154        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
16155            wkt::internal::display_enum(f, self.name(), self.value())
16156        }
16157    }
16158
16159    impl std::convert::From<i32> for EvaluationMode {
16160        fn from(value: i32) -> Self {
16161            match value {
16162                0 => Self::Unspecified,
16163                1 => Self::Disabled,
16164                2 => Self::ProjectSingletonPolicyEnforce,
16165                _ => Self::UnknownValue(evaluation_mode::UnknownValue(
16166                    wkt::internal::UnknownEnumValue::Integer(value),
16167                )),
16168            }
16169        }
16170    }
16171
16172    impl std::convert::From<&str> for EvaluationMode {
16173        fn from(value: &str) -> Self {
16174            use std::string::ToString;
16175            match value {
16176                "EVALUATION_MODE_UNSPECIFIED" => Self::Unspecified,
16177                "DISABLED" => Self::Disabled,
16178                "PROJECT_SINGLETON_POLICY_ENFORCE" => Self::ProjectSingletonPolicyEnforce,
16179                _ => Self::UnknownValue(evaluation_mode::UnknownValue(
16180                    wkt::internal::UnknownEnumValue::String(value.to_string()),
16181                )),
16182            }
16183        }
16184    }
16185
16186    impl serde::ser::Serialize for EvaluationMode {
16187        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16188        where
16189            S: serde::Serializer,
16190        {
16191            match self {
16192                Self::Unspecified => serializer.serialize_i32(0),
16193                Self::Disabled => serializer.serialize_i32(1),
16194                Self::ProjectSingletonPolicyEnforce => serializer.serialize_i32(2),
16195                Self::UnknownValue(u) => u.0.serialize(serializer),
16196            }
16197        }
16198    }
16199
16200    impl<'de> serde::de::Deserialize<'de> for EvaluationMode {
16201        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16202        where
16203            D: serde::Deserializer<'de>,
16204        {
16205            deserializer.deserialize_any(wkt::internal::EnumVisitor::<EvaluationMode>::new(
16206                ".google.cloud.gkemulticloud.v1.BinaryAuthorization.EvaluationMode",
16207            ))
16208        }
16209    }
16210}
16211
16212/// SecurityPostureConfig defines the flags needed to enable/disable features for
16213/// the Security Posture API.
16214#[derive(Clone, Default, PartialEq)]
16215#[non_exhaustive]
16216pub struct SecurityPostureConfig {
16217    /// Sets which mode to use for vulnerability scanning.
16218    pub vulnerability_mode: crate::model::security_posture_config::VulnerabilityMode,
16219
16220    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
16221}
16222
16223impl SecurityPostureConfig {
16224    pub fn new() -> Self {
16225        std::default::Default::default()
16226    }
16227
16228    /// Sets the value of [vulnerability_mode][crate::model::SecurityPostureConfig::vulnerability_mode].
16229    ///
16230    /// # Example
16231    /// ```ignore,no_run
16232    /// # use google_cloud_gkemulticloud_v1::model::SecurityPostureConfig;
16233    /// use google_cloud_gkemulticloud_v1::model::security_posture_config::VulnerabilityMode;
16234    /// let x0 = SecurityPostureConfig::new().set_vulnerability_mode(VulnerabilityMode::VulnerabilityDisabled);
16235    /// let x1 = SecurityPostureConfig::new().set_vulnerability_mode(VulnerabilityMode::VulnerabilityEnterprise);
16236    /// ```
16237    pub fn set_vulnerability_mode<
16238        T: std::convert::Into<crate::model::security_posture_config::VulnerabilityMode>,
16239    >(
16240        mut self,
16241        v: T,
16242    ) -> Self {
16243        self.vulnerability_mode = v.into();
16244        self
16245    }
16246}
16247
16248impl wkt::message::Message for SecurityPostureConfig {
16249    fn typename() -> &'static str {
16250        "type.googleapis.com/google.cloud.gkemulticloud.v1.SecurityPostureConfig"
16251    }
16252}
16253
16254/// Defines additional types related to [SecurityPostureConfig].
16255pub mod security_posture_config {
16256    #[allow(unused_imports)]
16257    use super::*;
16258
16259    /// VulnerabilityMode defines enablement mode for vulnerability scanning.
16260    ///
16261    /// # Working with unknown values
16262    ///
16263    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
16264    /// additional enum variants at any time. Adding new variants is not considered
16265    /// a breaking change. Applications should write their code in anticipation of:
16266    ///
16267    /// - New values appearing in future releases of the client library, **and**
16268    /// - New values received dynamically, without application changes.
16269    ///
16270    /// Please consult the [Working with enums] section in the user guide for some
16271    /// guidelines.
16272    ///
16273    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
16274    #[derive(Clone, Debug, PartialEq)]
16275    #[non_exhaustive]
16276    pub enum VulnerabilityMode {
16277        /// Default value not specified.
16278        Unspecified,
16279        /// Disables vulnerability scanning on the cluster.
16280        VulnerabilityDisabled,
16281        /// Applies the Security Posture's vulnerability on cluster Enterprise level
16282        /// features.
16283        VulnerabilityEnterprise,
16284        /// If set, the enum was initialized with an unknown value.
16285        ///
16286        /// Applications can examine the value using [VulnerabilityMode::value] or
16287        /// [VulnerabilityMode::name].
16288        UnknownValue(vulnerability_mode::UnknownValue),
16289    }
16290
16291    #[doc(hidden)]
16292    pub mod vulnerability_mode {
16293        #[allow(unused_imports)]
16294        use super::*;
16295        #[derive(Clone, Debug, PartialEq)]
16296        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
16297    }
16298
16299    impl VulnerabilityMode {
16300        /// Gets the enum value.
16301        ///
16302        /// Returns `None` if the enum contains an unknown value deserialized from
16303        /// the string representation of enums.
16304        pub fn value(&self) -> std::option::Option<i32> {
16305            match self {
16306                Self::Unspecified => std::option::Option::Some(0),
16307                Self::VulnerabilityDisabled => std::option::Option::Some(1),
16308                Self::VulnerabilityEnterprise => std::option::Option::Some(2),
16309                Self::UnknownValue(u) => u.0.value(),
16310            }
16311        }
16312
16313        /// Gets the enum value as a string.
16314        ///
16315        /// Returns `None` if the enum contains an unknown value deserialized from
16316        /// the integer representation of enums.
16317        pub fn name(&self) -> std::option::Option<&str> {
16318            match self {
16319                Self::Unspecified => std::option::Option::Some("VULNERABILITY_MODE_UNSPECIFIED"),
16320                Self::VulnerabilityDisabled => std::option::Option::Some("VULNERABILITY_DISABLED"),
16321                Self::VulnerabilityEnterprise => {
16322                    std::option::Option::Some("VULNERABILITY_ENTERPRISE")
16323                }
16324                Self::UnknownValue(u) => u.0.name(),
16325            }
16326        }
16327    }
16328
16329    impl std::default::Default for VulnerabilityMode {
16330        fn default() -> Self {
16331            use std::convert::From;
16332            Self::from(0)
16333        }
16334    }
16335
16336    impl std::fmt::Display for VulnerabilityMode {
16337        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
16338            wkt::internal::display_enum(f, self.name(), self.value())
16339        }
16340    }
16341
16342    impl std::convert::From<i32> for VulnerabilityMode {
16343        fn from(value: i32) -> Self {
16344            match value {
16345                0 => Self::Unspecified,
16346                1 => Self::VulnerabilityDisabled,
16347                2 => Self::VulnerabilityEnterprise,
16348                _ => Self::UnknownValue(vulnerability_mode::UnknownValue(
16349                    wkt::internal::UnknownEnumValue::Integer(value),
16350                )),
16351            }
16352        }
16353    }
16354
16355    impl std::convert::From<&str> for VulnerabilityMode {
16356        fn from(value: &str) -> Self {
16357            use std::string::ToString;
16358            match value {
16359                "VULNERABILITY_MODE_UNSPECIFIED" => Self::Unspecified,
16360                "VULNERABILITY_DISABLED" => Self::VulnerabilityDisabled,
16361                "VULNERABILITY_ENTERPRISE" => Self::VulnerabilityEnterprise,
16362                _ => Self::UnknownValue(vulnerability_mode::UnknownValue(
16363                    wkt::internal::UnknownEnumValue::String(value.to_string()),
16364                )),
16365            }
16366        }
16367    }
16368
16369    impl serde::ser::Serialize for VulnerabilityMode {
16370        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16371        where
16372            S: serde::Serializer,
16373        {
16374            match self {
16375                Self::Unspecified => serializer.serialize_i32(0),
16376                Self::VulnerabilityDisabled => serializer.serialize_i32(1),
16377                Self::VulnerabilityEnterprise => serializer.serialize_i32(2),
16378                Self::UnknownValue(u) => u.0.serialize(serializer),
16379            }
16380        }
16381    }
16382
16383    impl<'de> serde::de::Deserialize<'de> for VulnerabilityMode {
16384        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16385        where
16386            D: serde::Deserializer<'de>,
16387        {
16388            deserializer.deserialize_any(wkt::internal::EnumVisitor::<VulnerabilityMode>::new(
16389                ".google.cloud.gkemulticloud.v1.SecurityPostureConfig.VulnerabilityMode",
16390            ))
16391        }
16392    }
16393}