Skip to main content

googleapis_tonic_google_container_v1/vec_u8_hash_map/
google.container.v1.rs

1// This file is @generated by prost-build.
2/// Parameters that can be configured on Linux nodes.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct LinuxNodeConfig {
5    /// The Linux kernel parameters to be applied to the nodes and all pods running
6    /// on the nodes.
7    ///
8    /// The following parameters are supported.
9    ///
10    /// net.core.busy_poll
11    /// net.core.busy_read
12    /// net.core.netdev_max_backlog
13    /// net.core.rmem_max
14    /// net.core.rmem_default
15    /// net.core.wmem_default
16    /// net.core.wmem_max
17    /// net.core.optmem_max
18    /// net.core.somaxconn
19    /// net.ipv4.tcp_rmem
20    /// net.ipv4.tcp_wmem
21    /// net.ipv4.tcp_tw_reuse
22    /// net.ipv4.tcp_mtu_probing
23    /// net.ipv4.tcp_max_orphans
24    /// net.ipv4.tcp_max_tw_buckets
25    /// net.ipv4.tcp_syn_retries
26    /// net.ipv4.tcp_ecn
27    /// net.ipv4.tcp_congestion_control
28    /// net.netfilter.nf_conntrack_max
29    /// net.netfilter.nf_conntrack_buckets
30    /// net.netfilter.nf_conntrack_tcp_timeout_close_wait
31    /// net.netfilter.nf_conntrack_tcp_timeout_time_wait
32    /// net.netfilter.nf_conntrack_tcp_timeout_established
33    /// net.netfilter.nf_conntrack_acct
34    /// kernel.shmmni
35    /// kernel.shmmax
36    /// kernel.shmall
37    /// kernel.perf_event_paranoid
38    /// kernel.sched_rt_runtime_us
39    /// kernel.softlockup_panic
40    /// kernel.yama.ptrace_scope
41    /// kernel.kptr_restrict
42    /// kernel.dmesg_restrict
43    /// kernel.sysrq
44    /// fs.aio-max-nr
45    /// fs.file-max
46    /// fs.inotify.max_user_instances
47    /// fs.inotify.max_user_watches
48    /// fs.nr_open
49    /// vm.dirty_background_ratio
50    /// vm.dirty_background_bytes
51    /// vm.dirty_expire_centisecs
52    /// vm.dirty_ratio
53    /// vm.dirty_bytes
54    /// vm.dirty_writeback_centisecs
55    /// vm.max_map_count
56    /// vm.overcommit_memory
57    /// vm.overcommit_ratio
58    /// vm.vfs_cache_pressure
59    /// vm.swappiness
60    /// vm.watermark_scale_factor
61    /// vm.min_free_kbytes
62    #[prost(map = "string, string", tag = "1")]
63    pub sysctls: ::std::collections::HashMap<
64        ::prost::alloc::string::String,
65        ::prost::alloc::string::String,
66    >,
67    /// cgroup_mode specifies the cgroup mode to be used on the node.
68    #[prost(enumeration = "linux_node_config::CgroupMode", tag = "2")]
69    pub cgroup_mode: i32,
70    /// Optional. Amounts for 2M and 1G hugepages
71    #[prost(message, optional, tag = "3")]
72    pub hugepages: ::core::option::Option<linux_node_config::HugepagesConfig>,
73    /// Optional. Transparent hugepage support for anonymous memory can be entirely
74    /// disabled (mostly for debugging purposes) or only enabled inside
75    /// MADV_HUGEPAGE regions (to avoid the risk of consuming more memory
76    /// resources) or enabled system wide.
77    ///
78    /// See <https://docs.kernel.org/admin-guide/mm/transhuge.html>
79    /// for more details.
80    #[prost(enumeration = "linux_node_config::TransparentHugepageEnabled", tag = "4")]
81    pub transparent_hugepage_enabled: i32,
82    /// Optional. Defines the transparent hugepage defrag configuration on the
83    /// node. VM hugepage allocation can be managed by either limiting
84    /// defragmentation for delayed allocation or skipping it entirely for
85    /// immediate allocation only.
86    ///
87    /// See <https://docs.kernel.org/admin-guide/mm/transhuge.html>
88    /// for more details.
89    #[prost(enumeration = "linux_node_config::TransparentHugepageDefrag", tag = "5")]
90    pub transparent_hugepage_defrag: i32,
91    /// Optional. Enables and configures swap space on nodes.
92    /// If omitted, swap is disabled.
93    #[prost(message, optional, tag = "12")]
94    pub swap_config: ::core::option::Option<linux_node_config::SwapConfig>,
95    /// Optional. Configuration for kernel module loading on nodes.
96    /// When enabled, the node pool will be provisioned with a Container-Optimized
97    /// OS image that enforces kernel module signature verification.
98    #[prost(message, optional, tag = "13")]
99    pub node_kernel_module_loading: ::core::option::Option<
100        linux_node_config::NodeKernelModuleLoading,
101    >,
102}
103/// Nested message and enum types in `LinuxNodeConfig`.
104pub mod linux_node_config {
105    /// Hugepages amount in both 2m and 1g size
106    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
107    pub struct HugepagesConfig {
108        /// Optional. Amount of 2M hugepages
109        #[prost(int32, optional, tag = "1")]
110        pub hugepage_size2m: ::core::option::Option<i32>,
111        /// Optional. Amount of 1G hugepages
112        #[prost(int32, optional, tag = "2")]
113        pub hugepage_size1g: ::core::option::Option<i32>,
114    }
115    /// Configuration for swap memory on a node pool.
116    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
117    pub struct SwapConfig {
118        /// Optional. Enables or disables swap for the node pool.
119        #[prost(bool, optional, tag = "1")]
120        pub enabled: ::core::option::Option<bool>,
121        /// Optional. If omitted, swap space is encrypted by default.
122        #[prost(message, optional, tag = "2")]
123        pub encryption_config: ::core::option::Option<swap_config::EncryptionConfig>,
124        /// Optional. Defines the backing storage for the swap space.
125        /// If omitted, defaults to the 'boot_disk_profile'.
126        #[prost(oneof = "swap_config::PerformanceProfile", tags = "3, 4, 5")]
127        pub performance_profile: ::core::option::Option<swap_config::PerformanceProfile>,
128    }
129    /// Nested message and enum types in `SwapConfig`.
130    pub mod swap_config {
131        /// Defines encryption settings for the swap space.
132        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
133        pub struct EncryptionConfig {
134            /// Optional. If true, swap space will not be encrypted.
135            /// Defaults to false (encrypted).
136            #[prost(bool, optional, tag = "1")]
137            pub disabled: ::core::option::Option<bool>,
138        }
139        /// Swap on the node's boot disk.
140        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
141        pub struct BootDiskProfile {
142            /// Optional. Specifies the size of the swap space. If omitted, GKE
143            /// determines an optimal size based on node memory.
144            #[prost(oneof = "boot_disk_profile::SwapSize", tags = "1, 2")]
145            pub swap_size: ::core::option::Option<boot_disk_profile::SwapSize>,
146        }
147        /// Nested message and enum types in `BootDiskProfile`.
148        pub mod boot_disk_profile {
149            /// Optional. Specifies the size of the swap space. If omitted, GKE
150            /// determines an optimal size based on node memory.
151            #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
152            pub enum SwapSize {
153                /// Specifies the size of the swap space in gibibytes (GiB).
154                #[prost(int64, tag = "1")]
155                SwapSizeGib(i64),
156                /// Specifies the size of the swap space as a percentage of the boot disk
157                /// size.
158                #[prost(int32, tag = "2")]
159                SwapSizePercent(i32),
160            }
161        }
162        /// Swap on the local SSD shared with pod ephemeral storage.
163        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
164        pub struct EphemeralLocalSsdProfile {
165            /// Specifies the size of the swap space to be provisioned.
166            #[prost(oneof = "ephemeral_local_ssd_profile::SwapSize", tags = "1, 2")]
167            pub swap_size: ::core::option::Option<ephemeral_local_ssd_profile::SwapSize>,
168        }
169        /// Nested message and enum types in `EphemeralLocalSsdProfile`.
170        pub mod ephemeral_local_ssd_profile {
171            /// Specifies the size of the swap space to be provisioned.
172            #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
173            pub enum SwapSize {
174                /// Specifies the size of the swap space in gibibytes (GiB).
175                #[prost(int64, tag = "1")]
176                SwapSizeGib(i64),
177                /// Specifies the size of the swap space as a percentage of the ephemeral
178                /// local SSD capacity.
179                #[prost(int32, tag = "2")]
180                SwapSizePercent(i32),
181            }
182        }
183        /// Provisions a new, separate local NVMe SSD exclusively for swap.
184        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
185        pub struct DedicatedLocalSsdProfile {
186            /// The number of physical local NVMe SSD disks to attach.
187            #[prost(int64, tag = "1")]
188            pub disk_count: i64,
189        }
190        /// Optional. Defines the backing storage for the swap space.
191        /// If omitted, defaults to the 'boot_disk_profile'.
192        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
193        pub enum PerformanceProfile {
194            /// Swap on the node's boot disk.
195            #[prost(message, tag = "3")]
196            BootDiskProfile(BootDiskProfile),
197            /// Swap on the local SSD shared with pod ephemeral storage.
198            #[prost(message, tag = "4")]
199            EphemeralLocalSsdProfile(EphemeralLocalSsdProfile),
200            /// Provisions a new, separate local NVMe SSD exclusively for swap.
201            #[prost(message, tag = "5")]
202            DedicatedLocalSsdProfile(DedicatedLocalSsdProfile),
203        }
204    }
205    /// Configuration for kernel module loading on nodes.
206    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
207    pub struct NodeKernelModuleLoading {
208        /// Set the node module loading policy for nodes in the node pool.
209        #[prost(enumeration = "node_kernel_module_loading::Policy", tag = "1")]
210        pub policy: i32,
211    }
212    /// Nested message and enum types in `NodeKernelModuleLoading`.
213    pub mod node_kernel_module_loading {
214        /// Defines the kernel module loading policy for nodes in the nodepool.
215        #[derive(
216            Clone,
217            Copy,
218            Debug,
219            PartialEq,
220            Eq,
221            Hash,
222            PartialOrd,
223            Ord,
224            ::prost::Enumeration
225        )]
226        #[repr(i32)]
227        pub enum Policy {
228            /// Default behavior. GKE selects the image based on node type.
229            /// For CPU and TPU nodes, the image will not allow loading external
230            /// kernel modules.
231            /// For GPU nodes, the image will allow loading any module, whether it
232            /// is signed or not.
233            Unspecified = 0,
234            /// Enforced signature verification: Node pools will use a
235            /// Container-Optimized OS image configured to allow loading of
236            /// *Google-signed* external kernel modules.
237            /// Loadpin is enabled but configured to exclude modules, and kernel
238            /// module signature checking is enforced.
239            EnforceSignedModules = 1,
240            /// Mirrors existing DEFAULT behavior:
241            /// For CPU and TPU nodes, the image will not allow loading external
242            /// kernel modules.
243            /// For GPU nodes, the image will allow loading any module, whether it
244            /// is signed or not.
245            DoNotEnforceSignedModules = 2,
246        }
247        impl Policy {
248            /// String value of the enum field names used in the ProtoBuf definition.
249            ///
250            /// The values are not transformed in any way and thus are considered stable
251            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
252            pub fn as_str_name(&self) -> &'static str {
253                match self {
254                    Self::Unspecified => "POLICY_UNSPECIFIED",
255                    Self::EnforceSignedModules => "ENFORCE_SIGNED_MODULES",
256                    Self::DoNotEnforceSignedModules => "DO_NOT_ENFORCE_SIGNED_MODULES",
257                }
258            }
259            /// Creates an enum from field names used in the ProtoBuf definition.
260            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
261                match value {
262                    "POLICY_UNSPECIFIED" => Some(Self::Unspecified),
263                    "ENFORCE_SIGNED_MODULES" => Some(Self::EnforceSignedModules),
264                    "DO_NOT_ENFORCE_SIGNED_MODULES" => {
265                        Some(Self::DoNotEnforceSignedModules)
266                    }
267                    _ => None,
268                }
269            }
270        }
271    }
272    /// Possible cgroup modes that can be used.
273    #[derive(
274        Clone,
275        Copy,
276        Debug,
277        PartialEq,
278        Eq,
279        Hash,
280        PartialOrd,
281        Ord,
282        ::prost::Enumeration
283    )]
284    #[repr(i32)]
285    pub enum CgroupMode {
286        /// CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
287        /// The default for the GKE node OS image will be used.
288        Unspecified = 0,
289        /// CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
290        /// the node image.
291        V1 = 1,
292        /// CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
293        /// the node image.
294        V2 = 2,
295    }
296    impl CgroupMode {
297        /// String value of the enum field names used in the ProtoBuf definition.
298        ///
299        /// The values are not transformed in any way and thus are considered stable
300        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
301        pub fn as_str_name(&self) -> &'static str {
302            match self {
303                Self::Unspecified => "CGROUP_MODE_UNSPECIFIED",
304                Self::V1 => "CGROUP_MODE_V1",
305                Self::V2 => "CGROUP_MODE_V2",
306            }
307        }
308        /// Creates an enum from field names used in the ProtoBuf definition.
309        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
310            match value {
311                "CGROUP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
312                "CGROUP_MODE_V1" => Some(Self::V1),
313                "CGROUP_MODE_V2" => Some(Self::V2),
314                _ => None,
315            }
316        }
317    }
318    /// Possible values for transparent hugepage enabled support.
319    #[derive(
320        Clone,
321        Copy,
322        Debug,
323        PartialEq,
324        Eq,
325        Hash,
326        PartialOrd,
327        Ord,
328        ::prost::Enumeration
329    )]
330    #[repr(i32)]
331    pub enum TransparentHugepageEnabled {
332        /// Default value. GKE will not modify the kernel configuration.
333        Unspecified = 0,
334        /// Transparent hugepage support for anonymous memory is enabled system wide.
335        Always = 1,
336        /// Transparent hugepage support for anonymous memory is enabled inside
337        /// MADV_HUGEPAGE regions. This is the default kernel configuration.
338        Madvise = 2,
339        /// Transparent hugepage support for anonymous memory is disabled.
340        Never = 3,
341    }
342    impl TransparentHugepageEnabled {
343        /// String value of the enum field names used in the ProtoBuf definition.
344        ///
345        /// The values are not transformed in any way and thus are considered stable
346        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
347        pub fn as_str_name(&self) -> &'static str {
348            match self {
349                Self::Unspecified => "TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED",
350                Self::Always => "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS",
351                Self::Madvise => "TRANSPARENT_HUGEPAGE_ENABLED_MADVISE",
352                Self::Never => "TRANSPARENT_HUGEPAGE_ENABLED_NEVER",
353            }
354        }
355        /// Creates an enum from field names used in the ProtoBuf definition.
356        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
357            match value {
358                "TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED" => Some(Self::Unspecified),
359                "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS" => Some(Self::Always),
360                "TRANSPARENT_HUGEPAGE_ENABLED_MADVISE" => Some(Self::Madvise),
361                "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" => Some(Self::Never),
362                _ => None,
363            }
364        }
365    }
366    /// Possible values for transparent hugepage defrag support.
367    #[derive(
368        Clone,
369        Copy,
370        Debug,
371        PartialEq,
372        Eq,
373        Hash,
374        PartialOrd,
375        Ord,
376        ::prost::Enumeration
377    )]
378    #[repr(i32)]
379    pub enum TransparentHugepageDefrag {
380        /// Default value. GKE will not modify the kernel configuration.
381        Unspecified = 0,
382        /// It means that an application requesting THP will stall on allocation
383        /// failure and directly reclaim pages and compact memory in an effort to
384        /// allocate a THP immediately.
385        Always = 1,
386        /// It means that an application will wake kswapd in the background to
387        /// reclaim pages and wake kcompactd to compact memory so that THP is
388        /// available in the near future. It's the responsibility of khugepaged to
389        /// then install the THP pages later.
390        Defer = 2,
391        /// It means that an application will enter direct reclaim and compaction
392        /// like always, but only for regions that have used madvise(MADV_HUGEPAGE);
393        /// all other regions will wake kswapd in the background to reclaim pages and
394        /// wake kcompactd to compact memory so that THP is available in the near
395        /// future.
396        DeferWithMadvise = 3,
397        /// It means that an application will enter direct reclaim like always but
398        /// only for regions that are have used madvise(MADV_HUGEPAGE). This is the
399        /// default kernel configuration.
400        Madvise = 4,
401        /// It means that an application will never enter direct reclaim or
402        /// compaction.
403        Never = 5,
404    }
405    impl TransparentHugepageDefrag {
406        /// String value of the enum field names used in the ProtoBuf definition.
407        ///
408        /// The values are not transformed in any way and thus are considered stable
409        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
410        pub fn as_str_name(&self) -> &'static str {
411            match self {
412                Self::Unspecified => "TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED",
413                Self::Always => "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS",
414                Self::Defer => "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER",
415                Self::DeferWithMadvise => {
416                    "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE"
417                }
418                Self::Madvise => "TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE",
419                Self::Never => "TRANSPARENT_HUGEPAGE_DEFRAG_NEVER",
420            }
421        }
422        /// Creates an enum from field names used in the ProtoBuf definition.
423        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
424            match value {
425                "TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED" => Some(Self::Unspecified),
426                "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS" => Some(Self::Always),
427                "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER" => Some(Self::Defer),
428                "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE" => {
429                    Some(Self::DeferWithMadvise)
430                }
431                "TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE" => Some(Self::Madvise),
432                "TRANSPARENT_HUGEPAGE_DEFRAG_NEVER" => Some(Self::Never),
433                _ => None,
434            }
435        }
436    }
437}
438/// Parameters that can be configured on Windows nodes.
439/// Windows Node Config that define the parameters that will be used to
440/// configure the Windows node pool settings.
441#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
442pub struct WindowsNodeConfig {
443    /// OSVersion specifies the Windows node config to be used on the node.
444    #[prost(enumeration = "windows_node_config::OsVersion", tag = "1")]
445    pub os_version: i32,
446}
447/// Nested message and enum types in `WindowsNodeConfig`.
448pub mod windows_node_config {
449    /// Possible OS version that can be used.
450    #[derive(
451        Clone,
452        Copy,
453        Debug,
454        PartialEq,
455        Eq,
456        Hash,
457        PartialOrd,
458        Ord,
459        ::prost::Enumeration
460    )]
461    #[repr(i32)]
462    pub enum OsVersion {
463        /// When OSVersion is not specified.
464        Unspecified = 0,
465        /// LTSC2019 specifies to use LTSC2019 as the Windows Servercore Base Image.
466        Ltsc2019 = 1,
467        /// LTSC2022 specifies to use LTSC2022 as the Windows Servercore Base Image.
468        Ltsc2022 = 2,
469    }
470    impl OsVersion {
471        /// String value of the enum field names used in the ProtoBuf definition.
472        ///
473        /// The values are not transformed in any way and thus are considered stable
474        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
475        pub fn as_str_name(&self) -> &'static str {
476            match self {
477                Self::Unspecified => "OS_VERSION_UNSPECIFIED",
478                Self::Ltsc2019 => "OS_VERSION_LTSC2019",
479                Self::Ltsc2022 => "OS_VERSION_LTSC2022",
480            }
481        }
482        /// Creates an enum from field names used in the ProtoBuf definition.
483        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
484            match value {
485                "OS_VERSION_UNSPECIFIED" => Some(Self::Unspecified),
486                "OS_VERSION_LTSC2019" => Some(Self::Ltsc2019),
487                "OS_VERSION_LTSC2022" => Some(Self::Ltsc2022),
488                _ => None,
489            }
490        }
491    }
492}
493/// Node kubelet configs.
494#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
495pub struct NodeKubeletConfig {
496    /// Control the CPU management policy on the node.
497    /// See
498    /// <https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/>
499    ///
500    /// The following values are allowed.
501    ///
502    /// * "none": the default, which represents the existing scheduling behavior.
503    /// * "static": allows pods with certain resource characteristics to be granted
504    ///   increased CPU affinity and exclusivity on the node.
505    ///   The default value is 'none' if unspecified.
506    #[prost(string, tag = "1")]
507    pub cpu_manager_policy: ::prost::alloc::string::String,
508    /// Optional. Controls Topology Manager configuration on the node.
509    /// For more information, see:
510    /// <https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/>
511    #[prost(message, optional, tag = "8")]
512    pub topology_manager: ::core::option::Option<TopologyManager>,
513    /// Optional. Controls NUMA-aware Memory Manager configuration on the
514    /// node. For more information, see:
515    /// <https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/>
516    #[prost(message, optional, tag = "9")]
517    pub memory_manager: ::core::option::Option<MemoryManager>,
518    /// Enable CPU CFS quota enforcement for containers that specify CPU limits.
519    ///
520    /// This option is enabled by default which makes kubelet use CFS quota
521    /// (<https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt>) to
522    /// enforce container CPU limits. Otherwise, CPU limits will not be enforced at
523    /// all.
524    ///
525    /// Disable this option to mitigate CPU throttling problems while still having
526    /// your pods to be in Guaranteed QoS class by specifying the CPU limits.
527    ///
528    /// The default value is 'true' if unspecified.
529    #[prost(message, optional, tag = "2")]
530    pub cpu_cfs_quota: ::core::option::Option<bool>,
531    /// Set the CPU CFS quota period value 'cpu.cfs_period_us'.
532    ///
533    /// The string must be a sequence of decimal numbers, each with optional
534    /// fraction and a unit suffix, such as "300ms".
535    /// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
536    /// The value must be a positive duration between 1ms and 1 second, inclusive.
537    #[prost(string, tag = "3")]
538    pub cpu_cfs_quota_period: ::prost::alloc::string::String,
539    /// Set the Pod PID limits. See
540    /// <https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits>
541    ///
542    /// Controls the maximum number of processes allowed to run in a pod. The value
543    /// must be greater than or equal to 1024 and less than 4194304.
544    #[prost(int64, tag = "4")]
545    pub pod_pids_limit: i64,
546    /// Enable or disable Kubelet read only port.
547    #[prost(bool, optional, tag = "7")]
548    pub insecure_kubelet_readonly_port_enabled: ::core::option::Option<bool>,
549    /// Optional. Defines the percent of disk usage before which image garbage
550    /// collection is never run. Lowest disk usage to garbage collect to. The
551    /// percent is calculated as this field value out of 100.
552    ///
553    /// The value must be between 10 and 85, inclusive and smaller than
554    /// image_gc_high_threshold_percent.
555    ///
556    /// The default value is 80 if unspecified.
557    #[prost(int32, tag = "10")]
558    pub image_gc_low_threshold_percent: i32,
559    /// Optional. Defines the percent of disk usage after which image garbage
560    /// collection is always run. The percent is calculated as this field value out
561    /// of 100.
562    ///
563    /// The value must be between 10 and 85, inclusive and greater than
564    /// image_gc_low_threshold_percent.
565    ///
566    /// The default value is 85 if unspecified.
567    #[prost(int32, tag = "11")]
568    pub image_gc_high_threshold_percent: i32,
569    /// Optional. Defines the minimum age for an unused image before it is garbage
570    /// collected.
571    ///
572    /// The string must be a sequence of decimal numbers, each with optional
573    /// fraction and a unit suffix, such as "300s", "1.5h", and "2h45m". Valid time
574    /// units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
575    ///
576    /// The value must be a positive duration less than or equal to 2 minutes.
577    ///
578    /// The default value is "2m0s" if unspecified.
579    #[prost(string, tag = "12")]
580    pub image_minimum_gc_age: ::prost::alloc::string::String,
581    /// Optional. Defines the maximum age an image can be unused before it is
582    /// garbage collected. The string must be a sequence of decimal numbers, each
583    /// with optional fraction and a unit suffix, such as "300s", "1.5h", and
584    /// "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
585    ///
586    /// The value must be a positive duration greater than image_minimum_gc_age
587    /// or "0s".
588    ///
589    /// The default value is "0s" if unspecified, which disables this field,
590    /// meaning images won't be garbage collected based on being unused for too
591    /// long.
592    #[prost(string, tag = "13")]
593    pub image_maximum_gc_age: ::prost::alloc::string::String,
594    /// Optional. Defines the maximum size of the container log file before it is
595    /// rotated. See
596    /// <https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation>
597    ///
598    /// Valid format is positive number + unit, e.g. 100Ki, 10Mi. Valid units are
599    /// Ki, Mi, Gi.
600    /// The value must be between 10Mi and 500Mi, inclusive.
601    ///
602    /// Note that the total container log size (container_log_max_size *
603    /// container_log_max_files) cannot exceed 1% of the total
604    /// storage of the node, to avoid disk pressure caused by log files.
605    ///
606    /// The default value is 10Mi if unspecified.
607    #[prost(string, tag = "14")]
608    pub container_log_max_size: ::prost::alloc::string::String,
609    /// Optional. Defines the maximum number of container log files that can be
610    /// present for a container. See
611    /// <https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation>
612    ///
613    /// The value must be an integer between 2 and 10, inclusive.
614    /// The default value is 5 if unspecified.
615    #[prost(int32, tag = "15")]
616    pub container_log_max_files: i32,
617    /// Optional. Defines a comma-separated allowlist of unsafe sysctls or sysctl
618    /// patterns (ending in `*`).
619    ///
620    /// The unsafe namespaced sysctl groups are `kernel.shm*`, `kernel.msg*`,
621    /// `kernel.sem`, `fs.mqueue.*`, and `net.*`. Leaving this allowlist empty
622    /// means they cannot be set on Pods.
623    ///
624    /// To allow certain sysctls or sysctl patterns to be set on Pods, list them
625    /// separated by commas.
626    /// For example: `kernel.msg*,net.ipv4.route.min_pmtu`.
627    ///
628    /// See <https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/>
629    /// for more details.
630    #[prost(string, repeated, tag = "16")]
631    pub allowed_unsafe_sysctls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
632    /// Optional. eviction_soft is a map of signal names to quantities that defines
633    /// soft eviction thresholds. Each signal is compared to its corresponding
634    /// threshold to determine if a pod eviction should occur.
635    #[prost(message, optional, tag = "17")]
636    pub eviction_soft: ::core::option::Option<EvictionSignals>,
637    /// Optional. eviction_soft_grace_period is a map of signal names to quantities
638    /// that defines grace periods for each soft eviction signal. The grace period
639    /// is the amount of time that a pod must be under pressure before an eviction
640    /// occurs.
641    #[prost(message, optional, tag = "18")]
642    pub eviction_soft_grace_period: ::core::option::Option<EvictionGracePeriod>,
643    /// Optional. eviction_minimum_reclaim is a map of signal names to quantities
644    /// that defines minimum reclaims, which describe the minimum amount of a given
645    /// resource the kubelet will reclaim when performing a pod eviction while that
646    /// resource is under pressure.
647    #[prost(message, optional, tag = "19")]
648    pub eviction_minimum_reclaim: ::core::option::Option<EvictionMinimumReclaim>,
649    /// Optional. eviction_max_pod_grace_period_seconds is the maximum allowed
650    /// grace period (in seconds) to use when terminating pods in response to a
651    /// soft eviction threshold being met. This value effectively caps the Pod's
652    /// terminationGracePeriodSeconds value during soft evictions. Default: 0.
653    /// Range: \[0, 300\].
654    #[prost(int32, tag = "20")]
655    pub eviction_max_pod_grace_period_seconds: i32,
656    /// Optional. Defines the maximum number of image pulls in parallel.
657    /// The range is 2 to 5, inclusive.
658    /// The default value is 2 or 3 depending on the disk type.
659    ///
660    /// See
661    /// <https://kubernetes.io/docs/concepts/containers/images/#maximum-parallel-image-pulls>
662    /// for more details.
663    #[prost(int32, tag = "21")]
664    pub max_parallel_image_pulls: i32,
665    /// Optional. Defines whether to enable single process OOM killer.
666    /// If true, will prevent the memory.oom.group flag from being set for
667    /// container cgroups in cgroups v2. This causes processes in the container to
668    /// be OOM killed individually instead of as a group.
669    #[prost(bool, optional, tag = "22")]
670    pub single_process_oom_kill: ::core::option::Option<bool>,
671    /// Optional. shutdown_grace_period_seconds is the maximum allowed grace period
672    /// (in seconds) the total duration that the node should delay the shutdown
673    /// during a graceful shutdown. This is the total grace period for pod
674    /// termination for both regular and critical pods.
675    /// <https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/>
676    /// If set to 0, node will not enable the graceful node shutdown functionality.
677    /// This field is only valid for Spot VMs.
678    /// Allowed values: 0, 30, 120.
679    #[prost(int32, optional, tag = "26")]
680    pub shutdown_grace_period_seconds: ::core::option::Option<i32>,
681    /// Optional. shutdown_grace_period_critical_pods_seconds is the maximum
682    /// allowed grace period (in seconds) used to terminate critical pods during a
683    /// node shutdown. This value should be \<= shutdown_grace_period_seconds, and
684    /// is only valid if shutdown_grace_period_seconds is set.
685    /// <https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/>
686    /// Range: \[0, 120\].
687    #[prost(int32, optional, tag = "27")]
688    pub shutdown_grace_period_critical_pods_seconds: ::core::option::Option<i32>,
689}
690/// TopologyManager defines the configuration options for Topology Manager
691/// feature. See
692/// <https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/>
693#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
694pub struct TopologyManager {
695    /// Configures the strategy for resource alignment.
696    /// Allowed values are:
697    ///
698    /// * none: the default policy, and does not perform any topology alignment.
699    /// * restricted: the topology manager stores the preferred NUMA node affinity
700    ///   for the container, and will reject the pod if the affinity if not
701    ///   preferred.
702    /// * best-effort: the topology manager stores the preferred NUMA node affinity
703    ///   for the container. If the affinity is not preferred, the topology manager
704    ///   will admit the pod to the node anyway.
705    /// * single-numa-node: the topology manager determines if the single NUMA node
706    ///   affinity is possible. If it is, Topology Manager will store this and the
707    ///   Hint Providers can then use this information when making the resource
708    ///   allocation decision. If, however, this is not possible then the
709    ///   Topology Manager will reject the pod from the node. This will result in a
710    ///   pod in a Terminated state with a pod admission failure.
711    ///
712    /// The default policy value is 'none' if unspecified.
713    /// Details about each strategy can be found
714    /// [here](<https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-policies>).
715    #[prost(string, tag = "1")]
716    pub policy: ::prost::alloc::string::String,
717    /// The Topology Manager aligns resources in following scopes:
718    ///
719    /// * container
720    /// * pod
721    ///
722    /// The default scope is 'container' if unspecified.
723    /// See
724    /// <https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-scopes>
725    #[prost(string, tag = "2")]
726    pub scope: ::prost::alloc::string::String,
727}
728/// The option enables the Kubernetes NUMA-aware Memory Manager feature.
729/// Detailed description about the feature can be found
730/// [here](<https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/>).
731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
732pub struct MemoryManager {
733    /// Controls the memory management policy on the Node.
734    /// See
735    /// <https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/#policies>
736    ///
737    /// The following values are allowed.
738    ///
739    /// * "none"
740    /// * "static"
741    ///   The default value is 'none' if unspecified.
742    #[prost(string, tag = "1")]
743    pub policy: ::prost::alloc::string::String,
744}
745/// Eviction signals are the current state of a particular resource at a specific
746/// point in time. The kubelet uses eviction signals to make eviction decisions
747/// by comparing the signals to eviction thresholds, which are the minimum amount
748/// of the resource that should be available on the node.
749#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
750pub struct EvictionSignals {
751    /// Optional. Memory available (i.e. capacity - workingSet), in bytes. Defines
752    /// the amount of "memory.available" signal in kubelet. Default is unset, if
753    /// not specified in the kubelet config. Format: positive number + unit, e.g.
754    /// 100Ki, 10Mi, 5Gi. Valid units are Ki, Mi, Gi. Must be >= 100Mi and \<= 50%
755    /// of the node's memory. See
756    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
757    #[prost(string, tag = "1")]
758    pub memory_available: ::prost::alloc::string::String,
759    /// Optional. Amount of storage available on filesystem that kubelet uses for
760    /// volumes, daemon logs, etc. Defines the amount of "nodefs.available" signal
761    /// in kubelet. Default is unset, if not specified in the kubelet config. It
762    /// takses percentage value for now. Sample format: "30%". Must be >= 10% and
763    /// \<= 50%. See
764    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
765    #[prost(string, tag = "2")]
766    pub nodefs_available: ::prost::alloc::string::String,
767    /// Optional. Amount of inodes available on filesystem that kubelet uses for
768    /// volumes, daemon logs, etc. Defines the amount of "nodefs.inodesFree" signal
769    /// in kubelet. Default is unset, if not specified in the kubelet config. Linux
770    /// only. It takses percentage value for now. Sample format: "30%". Must be >=
771    /// 5% and \<= 50%. See
772    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
773    #[prost(string, tag = "3")]
774    pub nodefs_inodes_free: ::prost::alloc::string::String,
775    /// Optional. Amount of storage available on filesystem that container runtime
776    /// uses for storing images layers. If the container filesystem and image
777    /// filesystem are not separate, then imagefs can store both image layers and
778    /// writeable layers. Defines the amount of "imagefs.available" signal in
779    /// kubelet. Default is unset, if not specified in the kubelet config. It
780    /// takses percentage value for now. Sample format: "30%". Must be >= 15% and
781    /// \<= 50%. See
782    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
783    #[prost(string, tag = "4")]
784    pub imagefs_available: ::prost::alloc::string::String,
785    /// Optional. Amount of inodes available on filesystem that container runtime
786    /// uses for storing images layers. Defines the amount of "imagefs.inodesFree"
787    /// signal in kubelet. Default is unset, if not specified in the kubelet
788    /// config. Linux only. It takses percentage value for now. Sample format:
789    /// "30%". Must be >= 5% and \<= 50%. See
790    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
791    #[prost(string, tag = "5")]
792    pub imagefs_inodes_free: ::prost::alloc::string::String,
793    /// Optional. Amount of PID available for pod allocation. Defines the amount of
794    /// "pid.available" signal in kubelet. Default is unset, if not specified in
795    /// the kubelet config. It takses percentage value for now. Sample format:
796    /// "30%". Must be >= 10% and \<= 50%. See
797    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
798    #[prost(string, tag = "6")]
799    pub pid_available: ::prost::alloc::string::String,
800}
801/// Eviction grace periods are grace periods for each eviction signal.
802#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
803pub struct EvictionGracePeriod {
804    /// Optional. Grace period for eviction due to memory available signal. Sample
805    /// format: "10s". Must be >= 0. See
806    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
807    #[prost(string, tag = "1")]
808    pub memory_available: ::prost::alloc::string::String,
809    /// Optional. Grace period for eviction due to nodefs available signal. Sample
810    /// format: "10s". Must be >= 0. See
811    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
812    #[prost(string, tag = "2")]
813    pub nodefs_available: ::prost::alloc::string::String,
814    /// Optional. Grace period for eviction due to nodefs inodes free signal.
815    /// Sample format: "10s". Must be >= 0. See
816    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
817    #[prost(string, tag = "3")]
818    pub nodefs_inodes_free: ::prost::alloc::string::String,
819    /// Optional. Grace period for eviction due to imagefs available signal. Sample
820    /// format: "10s". Must be >= 0. See
821    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
822    #[prost(string, tag = "4")]
823    pub imagefs_available: ::prost::alloc::string::String,
824    /// Optional. Grace period for eviction due to imagefs inodes free signal.
825    /// Sample format: "10s". Must be >= 0. See
826    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
827    #[prost(string, tag = "5")]
828    pub imagefs_inodes_free: ::prost::alloc::string::String,
829    /// Optional. Grace period for eviction due to pid available signal. Sample
830    /// format: "10s". Must be >= 0. See
831    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
832    #[prost(string, tag = "6")]
833    pub pid_available: ::prost::alloc::string::String,
834}
835/// Eviction minimum reclaims are the resource amounts of minimum reclaims for
836/// each eviction signal.
837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
838pub struct EvictionMinimumReclaim {
839    /// Optional. Minimum reclaim for eviction due to memory available signal. Only
840    /// take percentage value for now. Sample format: "10%". Must be \<=10%. See
841    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
842    #[prost(string, tag = "1")]
843    pub memory_available: ::prost::alloc::string::String,
844    /// Optional. Minimum reclaim for eviction due to nodefs available signal. Only
845    /// take percentage value for now. Sample format: "10%". Must be \<=10%. See
846    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
847    #[prost(string, tag = "2")]
848    pub nodefs_available: ::prost::alloc::string::String,
849    /// Optional. Minimum reclaim for eviction due to nodefs inodes free signal.
850    /// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
851    /// See
852    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
853    #[prost(string, tag = "3")]
854    pub nodefs_inodes_free: ::prost::alloc::string::String,
855    /// Optional. Minimum reclaim for eviction due to imagefs available signal.
856    /// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
857    /// See
858    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
859    #[prost(string, tag = "4")]
860    pub imagefs_available: ::prost::alloc::string::String,
861    /// Optional. Minimum reclaim for eviction due to imagefs inodes free signal.
862    /// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
863    /// See
864    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
865    #[prost(string, tag = "5")]
866    pub imagefs_inodes_free: ::prost::alloc::string::String,
867    /// Optional. Minimum reclaim for eviction due to pid available signal. Only
868    /// take percentage value for now. Sample format: "10%". Must be \<=10%. See
869    /// <https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals>
870    #[prost(string, tag = "6")]
871    pub pid_available: ::prost::alloc::string::String,
872}
873/// Parameters that describe the nodes in a cluster.
874///
875/// GKE Autopilot clusters do not
876/// recognize parameters in `NodeConfig`. Use
877/// \[AutoprovisioningNodePoolDefaults\]\[google.container.v1.AutoprovisioningNodePoolDefaults\]
878/// instead.
879#[derive(Clone, PartialEq, ::prost::Message)]
880pub struct NodeConfig {
881    /// The name of a Google Compute Engine [machine
882    /// type](<https://cloud.google.com/compute/docs/machine-types>)
883    ///
884    /// If unspecified, the default machine type is `e2-medium`.
885    #[prost(string, tag = "1")]
886    pub machine_type: ::prost::alloc::string::String,
887    /// Size of the disk attached to each node, specified in GB.
888    /// The smallest allowed disk size is 10GB.
889    ///
890    /// If unspecified, the default disk size is 100GB.
891    #[prost(int32, tag = "2")]
892    pub disk_size_gb: i32,
893    /// The set of Google API scopes to be made available on all of the
894    /// node VMs under the "default" service account.
895    ///
896    /// The following scopes are recommended, but not required, and by default are
897    /// not included:
898    ///
899    /// * `<https://www.googleapis.com/auth/compute`> is required for mounting
900    ///   persistent storage on your nodes.
901    /// * `<https://www.googleapis.com/auth/devstorage.read_only`> is required for
902    ///   communicating with **gcr.io**
903    ///   (the [Artifact Registry](<https://cloud.google.com/artifact-registry/>)).
904    ///
905    /// If unspecified, no scopes are added, unless Cloud Logging or Cloud
906    /// Monitoring are enabled, in which case their required scopes will be added.
907    #[prost(string, repeated, tag = "3")]
908    pub oauth_scopes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
909    /// The Google Cloud Platform Service Account to be used by the node VMs.
910    /// Specify the email address of the Service Account; otherwise, if no Service
911    /// Account is specified, the "default" service account is used.
912    #[prost(string, tag = "9")]
913    pub service_account: ::prost::alloc::string::String,
914    /// The metadata key/value pairs assigned to instances in the cluster.
915    ///
916    /// Keys must conform to the regexp `\[a-zA-Z0-9-_\]+` and be less than 128 bytes
917    /// in length. These are reflected as part of a URL in the metadata server.
918    /// Additionally, to avoid ambiguity, keys must not conflict with any other
919    /// metadata keys for the project or be one of the reserved keys:
920    ///
921    /// * "cluster-location"
922    /// * "cluster-name"
923    /// * "cluster-uid"
924    /// * "configure-sh"
925    /// * "containerd-configure-sh"
926    /// * "enable-os-login"
927    /// * "gci-ensure-gke-docker"
928    /// * "gci-metrics-enabled"
929    /// * "gci-update-strategy"
930    /// * "instance-template"
931    /// * "kube-env"
932    /// * "startup-script"
933    /// * "user-data"
934    /// * "disable-address-manager"
935    /// * "windows-startup-script-ps1"
936    /// * "common-psm1"
937    /// * "k8s-node-setup-psm1"
938    /// * "install-ssh-psm1"
939    /// * "user-profile-psm1"
940    ///
941    /// Values are free-form strings, and only have meaning as interpreted by
942    /// the image running in the instance. The only restriction placed on them is
943    /// that each value's size must be less than or equal to 32 KB.
944    ///
945    /// The total size of all keys and values must be less than 512 KB.
946    #[prost(map = "string, string", tag = "4")]
947    pub metadata: ::std::collections::HashMap<
948        ::prost::alloc::string::String,
949        ::prost::alloc::string::String,
950    >,
951    /// The image type to use for this node. Note that for a given image type,
952    /// the latest version of it will be used. Please see
953    /// <https://cloud.google.com/kubernetes-engine/docs/concepts/node-images>
954    /// for available image types.
955    #[prost(string, tag = "5")]
956    pub image_type: ::prost::alloc::string::String,
957    /// The map of Kubernetes labels (key/value pairs) to be applied to each node.
958    /// These will added in addition to any default label(s) that
959    /// Kubernetes may apply to the node.
960    /// In case of conflict in label keys, the applied set may differ depending on
961    /// the Kubernetes version -- it's best to assume the behavior is undefined
962    /// and conflicts should be avoided.
963    /// For more information, including usage and the valid values, see:
964    /// <https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/>
965    #[prost(map = "string, string", tag = "6")]
966    pub labels: ::std::collections::HashMap<
967        ::prost::alloc::string::String,
968        ::prost::alloc::string::String,
969    >,
970    /// The number of local SSD disks to be attached to the node.
971    ///
972    /// The limit for this value is dependent upon the maximum number of
973    /// disks available on a machine per zone. See:
974    /// <https://cloud.google.com/compute/docs/disks/local-ssd>
975    /// for more information.
976    #[prost(int32, tag = "7")]
977    pub local_ssd_count: i32,
978    /// The list of instance tags applied to all nodes. Tags are used to identify
979    /// valid sources or targets for network firewalls and are specified by
980    /// the client during cluster or node pool creation. Each tag within the list
981    /// must comply with RFC1035.
982    #[prost(string, repeated, tag = "8")]
983    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
984    /// Whether the nodes are created as preemptible VM instances. See:
985    /// <https://cloud.google.com/compute/docs/instances/preemptible>
986    /// for more information about preemptible VM instances.
987    #[prost(bool, tag = "10")]
988    pub preemptible: bool,
989    /// A list of hardware accelerators to be attached to each node.
990    /// See
991    /// <https://cloud.google.com/compute/docs/gpus>
992    /// for more information about support for GPUs.
993    #[prost(message, repeated, tag = "11")]
994    pub accelerators: ::prost::alloc::vec::Vec<AcceleratorConfig>,
995    /// Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
996    /// 'pd-balanced')
997    ///
998    /// If unspecified, the default disk type is 'pd-standard'
999    #[prost(string, tag = "12")]
1000    pub disk_type: ::prost::alloc::string::String,
1001    /// Minimum CPU platform to be used by this instance. The instance may be
1002    /// scheduled on the specified or newer CPU platform. Applicable values are the
1003    /// friendly names of CPU platforms, such as
1004    /// `minCpuPlatform: "Intel Haswell"` or
1005    /// `minCpuPlatform: "Intel Sandy Bridge"`. For more
1006    /// information, read [how to specify min CPU
1007    /// platform](<https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform>)
1008    #[prost(string, tag = "13")]
1009    pub min_cpu_platform: ::prost::alloc::string::String,
1010    /// The workload metadata configuration for this node.
1011    #[prost(message, optional, tag = "14")]
1012    pub workload_metadata_config: ::core::option::Option<WorkloadMetadataConfig>,
1013    /// List of kubernetes taints to be applied to each node.
1014    ///
1015    /// For more information, including usage and the valid values, see:
1016    /// <https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>
1017    #[prost(message, repeated, tag = "15")]
1018    pub taints: ::prost::alloc::vec::Vec<NodeTaint>,
1019    /// Sandbox configuration for this node.
1020    #[prost(message, optional, tag = "17")]
1021    pub sandbox_config: ::core::option::Option<SandboxConfig>,
1022    /// Setting this field will assign instances of this
1023    /// pool to run on the specified node group. This is useful for running
1024    /// workloads on [sole tenant
1025    /// nodes](<https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes>).
1026    #[prost(string, tag = "18")]
1027    pub node_group: ::prost::alloc::string::String,
1028    /// The optional reservation affinity. Setting this field will apply
1029    /// the specified [Zonal Compute
1030    /// Reservation](<https://cloud.google.com/compute/docs/instances/reserving-zonal-resources>)
1031    /// to this node pool.
1032    #[prost(message, optional, tag = "19")]
1033    pub reservation_affinity: ::core::option::Option<ReservationAffinity>,
1034    /// Shielded Instance options.
1035    #[prost(message, optional, tag = "20")]
1036    pub shielded_instance_config: ::core::option::Option<ShieldedInstanceConfig>,
1037    /// Parameters that can be configured on Linux nodes.
1038    #[prost(message, optional, tag = "21")]
1039    pub linux_node_config: ::core::option::Option<LinuxNodeConfig>,
1040    /// Node kubelet configs.
1041    #[prost(message, optional, tag = "22")]
1042    pub kubelet_config: ::core::option::Option<NodeKubeletConfig>,
1043    /// The Customer Managed Encryption Key used to encrypt the boot disk attached
1044    /// to each node in the node pool. This should be of the form
1045    /// projects/\[KEY_PROJECT_ID\]/locations/\[LOCATION\]/keyRings/\[RING_NAME\]/cryptoKeys/\[KEY_NAME\].
1046    /// For more information about protecting resources with Cloud KMS Keys please
1047    /// see:
1048    /// <https://cloud.google.com/compute/docs/disks/customer-managed-encryption>
1049    #[prost(string, tag = "23")]
1050    pub boot_disk_kms_key: ::prost::alloc::string::String,
1051    /// Google Container File System (image streaming) configs.
1052    #[prost(message, optional, tag = "25")]
1053    pub gcfs_config: ::core::option::Option<GcfsConfig>,
1054    /// Advanced features for the Compute Engine VM.
1055    #[prost(message, optional, tag = "26")]
1056    pub advanced_machine_features: ::core::option::Option<AdvancedMachineFeatures>,
1057    /// Enable or disable gvnic in the node pool.
1058    #[prost(message, optional, tag = "29")]
1059    pub gvnic: ::core::option::Option<VirtualNic>,
1060    /// Spot flag for enabling Spot VM, which is a rebrand of
1061    /// the existing preemptible flag.
1062    #[prost(bool, tag = "32")]
1063    pub spot: bool,
1064    /// Confidential nodes config.
1065    /// All the nodes in the node pool will be Confidential VM once enabled.
1066    #[prost(message, optional, tag = "35")]
1067    pub confidential_nodes: ::core::option::Option<ConfidentialNodes>,
1068    /// Enable or disable NCCL fast socket for the node pool.
1069    #[prost(message, optional, tag = "36")]
1070    pub fast_socket: ::core::option::Option<FastSocket>,
1071    /// The resource labels for the node pool to use to annotate any related
1072    /// Google Compute Engine resources.
1073    #[prost(map = "string, string", tag = "37")]
1074    pub resource_labels: ::std::collections::HashMap<
1075        ::prost::alloc::string::String,
1076        ::prost::alloc::string::String,
1077    >,
1078    /// Logging configuration.
1079    #[prost(message, optional, tag = "38")]
1080    pub logging_config: ::core::option::Option<NodePoolLoggingConfig>,
1081    /// Parameters that can be configured on Windows nodes.
1082    #[prost(message, optional, tag = "39")]
1083    pub windows_node_config: ::core::option::Option<WindowsNodeConfig>,
1084    /// Parameters for using raw-block Local NVMe SSDs.
1085    #[prost(message, optional, tag = "40")]
1086    pub local_nvme_ssd_block_config: ::core::option::Option<LocalNvmeSsdBlockConfig>,
1087    /// Parameters for the node ephemeral storage using Local SSDs.
1088    /// If unspecified, ephemeral storage is backed by the boot disk.
1089    #[prost(message, optional, tag = "41")]
1090    pub ephemeral_storage_local_ssd_config: ::core::option::Option<
1091        EphemeralStorageLocalSsdConfig,
1092    >,
1093    /// Parameters for node pools to be backed by shared sole tenant node groups.
1094    #[prost(message, optional, tag = "42")]
1095    pub sole_tenant_config: ::core::option::Option<SoleTenantConfig>,
1096    /// Parameters for containerd customization.
1097    #[prost(message, optional, tag = "43")]
1098    pub containerd_config: ::core::option::Option<ContainerdConfig>,
1099    /// A map of resource manager tag keys and values to be attached to the nodes.
1100    #[prost(message, optional, tag = "45")]
1101    pub resource_manager_tags: ::core::option::Option<ResourceManagerTags>,
1102    /// Optional. Reserved for future use.
1103    #[prost(bool, tag = "46")]
1104    pub enable_confidential_storage: bool,
1105    /// List of secondary boot disks attached to the nodes.
1106    #[prost(message, repeated, tag = "48")]
1107    pub secondary_boot_disks: ::prost::alloc::vec::Vec<SecondaryBootDisk>,
1108    /// List of Storage Pools where boot disks are provisioned.
1109    #[prost(string, repeated, tag = "49")]
1110    pub storage_pools: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1111    /// Secondary boot disk update strategy.
1112    #[prost(message, optional, tag = "50")]
1113    pub secondary_boot_disk_update_strategy: ::core::option::Option<
1114        SecondaryBootDiskUpdateStrategy,
1115    >,
1116    /// The configuration for GPU Direct
1117    #[prost(message, optional, tag = "51")]
1118    pub gpu_direct_config: ::core::option::Option<GpuDirectConfig>,
1119    /// The maximum duration for the nodes to exist.
1120    /// If unspecified, the nodes can exist indefinitely.
1121    #[prost(message, optional, tag = "53")]
1122    pub max_run_duration: ::core::option::Option<::prost_types::Duration>,
1123    /// Specifies which method should be used for encrypting the
1124    /// Local SSDs attached to the node.
1125    #[prost(enumeration = "node_config::LocalSsdEncryptionMode", optional, tag = "54")]
1126    pub local_ssd_encryption_mode: ::core::option::Option<i32>,
1127    /// Output only. effective_cgroup_mode is the cgroup mode actually used by the
1128    /// node pool. It is determined by the cgroup mode specified in the
1129    /// LinuxNodeConfig or the default cgroup mode based on the cluster creation
1130    /// version.
1131    #[prost(enumeration = "node_config::EffectiveCgroupMode", tag = "55")]
1132    pub effective_cgroup_mode: i32,
1133    /// Flex Start flag for enabling Flex Start VM.
1134    #[prost(bool, optional, tag = "56")]
1135    pub flex_start: ::core::option::Option<bool>,
1136    /// The boot disk configuration for the node pool.
1137    #[prost(message, optional, tag = "57")]
1138    pub boot_disk: ::core::option::Option<BootDisk>,
1139    /// Consolidation delay defines duration after which the Cluster Autoscaler can
1140    /// scale down underutilized nodes. If not set, nodes are scaled down by
1141    /// default behavior, i.e. according to the chosen autoscaling profile.
1142    #[prost(message, optional, tag = "60")]
1143    pub consolidation_delay: ::core::option::Option<::prost_types::Duration>,
1144}
1145/// Nested message and enum types in `NodeConfig`.
1146pub mod node_config {
1147    /// LocalSsdEncryptionMode specifies the method used for encrypting the Local
1148    /// SSDs attached to the node.
1149    #[derive(
1150        Clone,
1151        Copy,
1152        Debug,
1153        PartialEq,
1154        Eq,
1155        Hash,
1156        PartialOrd,
1157        Ord,
1158        ::prost::Enumeration
1159    )]
1160    #[repr(i32)]
1161    pub enum LocalSsdEncryptionMode {
1162        /// The given node will be encrypted using keys managed by Google
1163        /// infrastructure and the keys will be deleted when the node is
1164        /// deleted.
1165        Unspecified = 0,
1166        /// The given node will be encrypted using keys managed by Google
1167        /// infrastructure and the keys will be deleted when the node is
1168        /// deleted.
1169        StandardEncryption = 1,
1170        /// The given node will opt-in for using ephemeral key for
1171        /// encryption of Local SSDs.
1172        /// The Local SSDs will not be able to recover data in case of node
1173        /// crash.
1174        EphemeralKeyEncryption = 2,
1175    }
1176    impl LocalSsdEncryptionMode {
1177        /// String value of the enum field names used in the ProtoBuf definition.
1178        ///
1179        /// The values are not transformed in any way and thus are considered stable
1180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1181        pub fn as_str_name(&self) -> &'static str {
1182            match self {
1183                Self::Unspecified => "LOCAL_SSD_ENCRYPTION_MODE_UNSPECIFIED",
1184                Self::StandardEncryption => "STANDARD_ENCRYPTION",
1185                Self::EphemeralKeyEncryption => "EPHEMERAL_KEY_ENCRYPTION",
1186            }
1187        }
1188        /// Creates an enum from field names used in the ProtoBuf definition.
1189        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1190            match value {
1191                "LOCAL_SSD_ENCRYPTION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1192                "STANDARD_ENCRYPTION" => Some(Self::StandardEncryption),
1193                "EPHEMERAL_KEY_ENCRYPTION" => Some(Self::EphemeralKeyEncryption),
1194                _ => None,
1195            }
1196        }
1197    }
1198    /// Possible effective cgroup modes for the node.
1199    #[derive(
1200        Clone,
1201        Copy,
1202        Debug,
1203        PartialEq,
1204        Eq,
1205        Hash,
1206        PartialOrd,
1207        Ord,
1208        ::prost::Enumeration
1209    )]
1210    #[repr(i32)]
1211    pub enum EffectiveCgroupMode {
1212        /// EFFECTIVE_CGROUP_MODE_UNSPECIFIED means the cgroup configuration for the
1213        /// node pool is unspecified, i.e. the node pool is a Windows node pool.
1214        Unspecified = 0,
1215        /// CGROUP_MODE_V1 means the node pool is configured to use cgroupv1 for the
1216        /// cgroup configuration.
1217        V1 = 1,
1218        /// CGROUP_MODE_V2 means the node pool is configured to use cgroupv2 for the
1219        /// cgroup configuration.
1220        V2 = 2,
1221    }
1222    impl EffectiveCgroupMode {
1223        /// String value of the enum field names used in the ProtoBuf definition.
1224        ///
1225        /// The values are not transformed in any way and thus are considered stable
1226        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1227        pub fn as_str_name(&self) -> &'static str {
1228            match self {
1229                Self::Unspecified => "EFFECTIVE_CGROUP_MODE_UNSPECIFIED",
1230                Self::V1 => "EFFECTIVE_CGROUP_MODE_V1",
1231                Self::V2 => "EFFECTIVE_CGROUP_MODE_V2",
1232            }
1233        }
1234        /// Creates an enum from field names used in the ProtoBuf definition.
1235        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1236            match value {
1237                "EFFECTIVE_CGROUP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1238                "EFFECTIVE_CGROUP_MODE_V1" => Some(Self::V1),
1239                "EFFECTIVE_CGROUP_MODE_V2" => Some(Self::V2),
1240                _ => None,
1241            }
1242        }
1243    }
1244}
1245/// Specifies options for controlling advanced machine features.
1246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1247pub struct AdvancedMachineFeatures {
1248    /// The number of threads per physical core. To disable simultaneous
1249    /// multithreading (SMT) set this to 1. If unset, the maximum number of threads
1250    /// supported per core by the underlying processor is assumed.
1251    #[prost(int64, optional, tag = "1")]
1252    pub threads_per_core: ::core::option::Option<i64>,
1253    /// Whether or not to enable nested virtualization (defaults to false).
1254    #[prost(bool, optional, tag = "2")]
1255    pub enable_nested_virtualization: ::core::option::Option<bool>,
1256    /// Type of Performance Monitoring Unit (PMU) requested on node pool instances.
1257    /// If unset, PMU will not be available to the node.
1258    #[prost(
1259        enumeration = "advanced_machine_features::PerformanceMonitoringUnit",
1260        optional,
1261        tag = "3"
1262    )]
1263    pub performance_monitoring_unit: ::core::option::Option<i32>,
1264}
1265/// Nested message and enum types in `AdvancedMachineFeatures`.
1266pub mod advanced_machine_features {
1267    /// Level of PMU access.
1268    #[derive(
1269        Clone,
1270        Copy,
1271        Debug,
1272        PartialEq,
1273        Eq,
1274        Hash,
1275        PartialOrd,
1276        Ord,
1277        ::prost::Enumeration
1278    )]
1279    #[repr(i32)]
1280    pub enum PerformanceMonitoringUnit {
1281        /// PMU not enabled.
1282        Unspecified = 0,
1283        /// Architecturally defined non-LLC events.
1284        Architectural = 1,
1285        /// Most documented core/L2 events.
1286        Standard = 2,
1287        /// Most documented core/L2 and LLC events.
1288        Enhanced = 3,
1289    }
1290    impl PerformanceMonitoringUnit {
1291        /// String value of the enum field names used in the ProtoBuf definition.
1292        ///
1293        /// The values are not transformed in any way and thus are considered stable
1294        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1295        pub fn as_str_name(&self) -> &'static str {
1296            match self {
1297                Self::Unspecified => "PERFORMANCE_MONITORING_UNIT_UNSPECIFIED",
1298                Self::Architectural => "ARCHITECTURAL",
1299                Self::Standard => "STANDARD",
1300                Self::Enhanced => "ENHANCED",
1301            }
1302        }
1303        /// Creates an enum from field names used in the ProtoBuf definition.
1304        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1305            match value {
1306                "PERFORMANCE_MONITORING_UNIT_UNSPECIFIED" => Some(Self::Unspecified),
1307                "ARCHITECTURAL" => Some(Self::Architectural),
1308                "STANDARD" => Some(Self::Standard),
1309                "ENHANCED" => Some(Self::Enhanced),
1310                _ => None,
1311            }
1312        }
1313    }
1314}
1315/// Parameters for node pool-level network config.
1316#[derive(Clone, PartialEq, ::prost::Message)]
1317pub struct NodeNetworkConfig {
1318    /// Input only. Whether to create a new range for pod IPs in this node pool.
1319    /// Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they
1320    /// are not specified.
1321    ///
1322    /// If neither `create_pod_range` or `pod_range` are specified, the
1323    /// cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is
1324    /// used.
1325    ///
1326    /// Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
1327    ///
1328    /// This field cannot be changed after the node pool has been created.
1329    #[prost(bool, tag = "4")]
1330    pub create_pod_range: bool,
1331    /// The ID of the secondary range for pod IPs.
1332    /// If `create_pod_range` is true, this ID is used for the new range.
1333    /// If `create_pod_range` is false, uses an existing secondary range with this
1334    /// ID.
1335    ///
1336    /// Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
1337    ///
1338    /// This field cannot be changed after the node pool has been created.
1339    #[prost(string, tag = "5")]
1340    pub pod_range: ::prost::alloc::string::String,
1341    /// The IP address range for pod IPs in this node pool.
1342    ///
1343    /// Only applicable if `create_pod_range` is true.
1344    ///
1345    /// Set to blank to have a range chosen with the default size.
1346    ///
1347    /// Set to /netmask (e.g. `/14`) to have a range chosen with a specific
1348    /// netmask.
1349    ///
1350    /// Set to a
1351    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
1352    /// notation (e.g. `10.96.0.0/14`) to pick a specific range to use.
1353    ///
1354    /// Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
1355    ///
1356    /// This field cannot be changed after the node pool has been created.
1357    #[prost(string, tag = "6")]
1358    pub pod_ipv4_cidr_block: ::prost::alloc::string::String,
1359    /// Whether nodes have internal IP addresses only.
1360    /// If enable_private_nodes is not specified, then the value is derived from
1361    /// \[Cluster.NetworkConfig.default_enable_private_nodes\]\[\]
1362    #[prost(bool, optional, tag = "9")]
1363    pub enable_private_nodes: ::core::option::Option<bool>,
1364    /// Network bandwidth tier configuration.
1365    #[prost(message, optional, tag = "11")]
1366    pub network_performance_config: ::core::option::Option<
1367        node_network_config::NetworkPerformanceConfig,
1368    >,
1369    /// \[PRIVATE FIELD\]
1370    /// Pod CIDR size overprovisioning config for the nodepool.
1371    ///
1372    /// Pod CIDR size per node depends on max_pods_per_node. By default, the value
1373    /// of max_pods_per_node is rounded off to next power of 2 and we then double
1374    /// that to get the size of pod CIDR block per node.
1375    /// Example: max_pods_per_node of 30 would result in 64 IPs (/26).
1376    ///
1377    /// This config can disable the doubling of IPs (we still round off to next
1378    /// power of 2)
1379    /// Example: max_pods_per_node of 30 will result in 32 IPs (/27) when
1380    /// overprovisioning is disabled.
1381    #[prost(message, optional, tag = "13")]
1382    pub pod_cidr_overprovision_config: ::core::option::Option<
1383        PodCidrOverprovisionConfig,
1384    >,
1385    /// We specify the additional node networks for this node pool using this list.
1386    /// Each node network corresponds to an additional interface
1387    #[prost(message, repeated, tag = "14")]
1388    pub additional_node_network_configs: ::prost::alloc::vec::Vec<
1389        AdditionalNodeNetworkConfig,
1390    >,
1391    /// We specify the additional pod networks for this node pool using this list.
1392    /// Each pod network corresponds to an additional alias IP range for the node
1393    #[prost(message, repeated, tag = "15")]
1394    pub additional_pod_network_configs: ::prost::alloc::vec::Vec<
1395        AdditionalPodNetworkConfig,
1396    >,
1397    /// Output only. The utilization of the IPv4 range for the pod.
1398    /// The ratio is Usage/\[Total number of IPs in the secondary range\],
1399    /// Usage=numNodes*numZones*podIPsPerNode.
1400    #[prost(double, tag = "16")]
1401    pub pod_ipv4_range_utilization: f64,
1402    /// Optional. The subnetwork name/path for the node pool.
1403    /// Format: projects/{project}/regions/{region}/subnetworks/{subnetwork}
1404    /// If the cluster is associated with multiple subnetworks, the subnetwork can
1405    /// be either:
1406    ///
1407    /// 1. A user supplied subnetwork name/full path during node pool creation.
1408    ///    Example1: my-subnet
1409    ///    Example2: projects/gke-project/regions/us-central1/subnetworks/my-subnet
1410    /// 1. A subnetwork path picked based on the IP utilization during node pool
1411    ///    creation and is immutable.
1412    #[prost(string, tag = "19")]
1413    pub subnetwork: ::prost::alloc::string::String,
1414    /// Output only. The network tier configuration for the node pool inherits from
1415    /// the cluster-level configuration and remains immutable throughout the node
1416    /// pool's lifecycle, including during upgrades.
1417    #[prost(message, optional, tag = "20")]
1418    pub network_tier_config: ::core::option::Option<NetworkTierConfig>,
1419}
1420/// Nested message and enum types in `NodeNetworkConfig`.
1421pub mod node_network_config {
1422    /// Configuration of all network bandwidth tiers
1423    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1424    pub struct NetworkPerformanceConfig {
1425        /// Specifies the total network bandwidth tier for the NodePool.
1426        #[prost(enumeration = "network_performance_config::Tier", optional, tag = "1")]
1427        pub total_egress_bandwidth_tier: ::core::option::Option<i32>,
1428    }
1429    /// Nested message and enum types in `NetworkPerformanceConfig`.
1430    pub mod network_performance_config {
1431        /// Node network tier
1432        #[derive(
1433            Clone,
1434            Copy,
1435            Debug,
1436            PartialEq,
1437            Eq,
1438            Hash,
1439            PartialOrd,
1440            Ord,
1441            ::prost::Enumeration
1442        )]
1443        #[repr(i32)]
1444        pub enum Tier {
1445            /// Default value
1446            Unspecified = 0,
1447            /// Higher bandwidth, actual values based on VM size.
1448            Tier1 = 1,
1449        }
1450        impl Tier {
1451            /// String value of the enum field names used in the ProtoBuf definition.
1452            ///
1453            /// The values are not transformed in any way and thus are considered stable
1454            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1455            pub fn as_str_name(&self) -> &'static str {
1456                match self {
1457                    Self::Unspecified => "TIER_UNSPECIFIED",
1458                    Self::Tier1 => "TIER_1",
1459                }
1460            }
1461            /// Creates an enum from field names used in the ProtoBuf definition.
1462            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1463                match value {
1464                    "TIER_UNSPECIFIED" => Some(Self::Unspecified),
1465                    "TIER_1" => Some(Self::Tier1),
1466                    _ => None,
1467                }
1468            }
1469        }
1470    }
1471}
1472/// AdditionalNodeNetworkConfig is the configuration for additional node networks
1473/// within the NodeNetworkConfig message
1474#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1475pub struct AdditionalNodeNetworkConfig {
1476    /// Name of the VPC where the additional interface belongs
1477    #[prost(string, tag = "1")]
1478    pub network: ::prost::alloc::string::String,
1479    /// Name of the subnetwork where the additional interface belongs
1480    #[prost(string, tag = "2")]
1481    pub subnetwork: ::prost::alloc::string::String,
1482}
1483/// AdditionalPodNetworkConfig is the configuration for additional pod networks
1484/// within the NodeNetworkConfig message
1485#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1486pub struct AdditionalPodNetworkConfig {
1487    /// Name of the subnetwork where the additional pod network belongs.
1488    #[prost(string, tag = "1")]
1489    pub subnetwork: ::prost::alloc::string::String,
1490    /// The name of the secondary range on the subnet which provides IP address for
1491    /// this pod range.
1492    #[prost(string, tag = "2")]
1493    pub secondary_pod_range: ::prost::alloc::string::String,
1494    /// The maximum number of pods per node which use this pod network.
1495    #[prost(message, optional, tag = "3")]
1496    pub max_pods_per_node: ::core::option::Option<MaxPodsConstraint>,
1497}
1498/// A set of Shielded Instance options.
1499#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1500pub struct ShieldedInstanceConfig {
1501    /// Defines whether the instance has Secure Boot enabled.
1502    ///
1503    /// Secure Boot helps ensure that the system only runs authentic software by
1504    /// verifying the digital signature of all boot components, and halting the
1505    /// boot process if signature verification fails.
1506    #[prost(bool, tag = "1")]
1507    pub enable_secure_boot: bool,
1508    /// Defines whether the instance has integrity monitoring enabled.
1509    ///
1510    /// Enables monitoring and attestation of the boot integrity of the instance.
1511    /// The attestation is performed against the integrity policy baseline. This
1512    /// baseline is initially derived from the implicitly trusted boot image when
1513    /// the instance is created.
1514    #[prost(bool, tag = "2")]
1515    pub enable_integrity_monitoring: bool,
1516}
1517/// SandboxConfig contains configurations of the sandbox to use for the node.
1518#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1519pub struct SandboxConfig {
1520    /// Type of the sandbox to use for the node.
1521    #[prost(enumeration = "sandbox_config::Type", tag = "2")]
1522    pub r#type: i32,
1523}
1524/// Nested message and enum types in `SandboxConfig`.
1525pub mod sandbox_config {
1526    /// Possible types of sandboxes.
1527    #[derive(
1528        Clone,
1529        Copy,
1530        Debug,
1531        PartialEq,
1532        Eq,
1533        Hash,
1534        PartialOrd,
1535        Ord,
1536        ::prost::Enumeration
1537    )]
1538    #[repr(i32)]
1539    pub enum Type {
1540        /// Default value. This should not be used.
1541        Unspecified = 0,
1542        /// Run sandbox using gvisor.
1543        Gvisor = 1,
1544    }
1545    impl Type {
1546        /// String value of the enum field names used in the ProtoBuf definition.
1547        ///
1548        /// The values are not transformed in any way and thus are considered stable
1549        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1550        pub fn as_str_name(&self) -> &'static str {
1551            match self {
1552                Self::Unspecified => "UNSPECIFIED",
1553                Self::Gvisor => "GVISOR",
1554            }
1555        }
1556        /// Creates an enum from field names used in the ProtoBuf definition.
1557        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1558            match value {
1559                "UNSPECIFIED" => Some(Self::Unspecified),
1560                "GVISOR" => Some(Self::Gvisor),
1561                _ => None,
1562            }
1563        }
1564    }
1565}
1566/// GcfsConfig contains configurations of Google Container File System
1567/// (image streaming).
1568#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1569pub struct GcfsConfig {
1570    /// Whether to use GCFS.
1571    #[prost(bool, tag = "1")]
1572    pub enabled: bool,
1573}
1574/// [ReservationAffinity](<https://cloud.google.com/compute/docs/instances/reserving-zonal-resources>)
1575/// is the configuration of desired reservation which instances could take
1576/// capacity from.
1577#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1578pub struct ReservationAffinity {
1579    /// Corresponds to the type of reservation consumption.
1580    #[prost(enumeration = "reservation_affinity::Type", tag = "1")]
1581    pub consume_reservation_type: i32,
1582    /// Corresponds to the label key of a reservation resource. To target a
1583    /// SPECIFIC_RESERVATION by name, specify
1584    /// "compute.googleapis.com/reservation-name" as the key and specify the name
1585    /// of your reservation as its value.
1586    #[prost(string, tag = "2")]
1587    pub key: ::prost::alloc::string::String,
1588    /// Corresponds to the label value(s) of reservation resource(s).
1589    #[prost(string, repeated, tag = "3")]
1590    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1591}
1592/// Nested message and enum types in `ReservationAffinity`.
1593pub mod reservation_affinity {
1594    /// Indicates whether to consume capacity from a reservation or not.
1595    #[derive(
1596        Clone,
1597        Copy,
1598        Debug,
1599        PartialEq,
1600        Eq,
1601        Hash,
1602        PartialOrd,
1603        Ord,
1604        ::prost::Enumeration
1605    )]
1606    #[repr(i32)]
1607    pub enum Type {
1608        /// Default value. This should not be used.
1609        Unspecified = 0,
1610        /// Do not consume from any reserved capacity.
1611        NoReservation = 1,
1612        /// Consume any reservation available.
1613        AnyReservation = 2,
1614        /// Must consume from a specific reservation. Must specify key value fields
1615        /// for specifying the reservations.
1616        SpecificReservation = 3,
1617    }
1618    impl Type {
1619        /// String value of the enum field names used in the ProtoBuf definition.
1620        ///
1621        /// The values are not transformed in any way and thus are considered stable
1622        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1623        pub fn as_str_name(&self) -> &'static str {
1624            match self {
1625                Self::Unspecified => "UNSPECIFIED",
1626                Self::NoReservation => "NO_RESERVATION",
1627                Self::AnyReservation => "ANY_RESERVATION",
1628                Self::SpecificReservation => "SPECIFIC_RESERVATION",
1629            }
1630        }
1631        /// Creates an enum from field names used in the ProtoBuf definition.
1632        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1633            match value {
1634                "UNSPECIFIED" => Some(Self::Unspecified),
1635                "NO_RESERVATION" => Some(Self::NoReservation),
1636                "ANY_RESERVATION" => Some(Self::AnyReservation),
1637                "SPECIFIC_RESERVATION" => Some(Self::SpecificReservation),
1638                _ => None,
1639            }
1640        }
1641    }
1642}
1643/// SoleTenantConfig contains the NodeAffinities to specify what shared sole
1644/// tenant node groups should back the node pool.
1645#[derive(Clone, PartialEq, ::prost::Message)]
1646pub struct SoleTenantConfig {
1647    /// NodeAffinities used to match to a shared sole tenant node group.
1648    #[prost(message, repeated, tag = "1")]
1649    pub node_affinities: ::prost::alloc::vec::Vec<sole_tenant_config::NodeAffinity>,
1650    /// Optional. The minimum number of virtual CPUs this instance will consume
1651    /// when running on a sole-tenant node. This field can only be set if the node
1652    /// pool is created in a shared sole-tenant node group.
1653    #[prost(int32, optional, tag = "2")]
1654    pub min_node_cpus: ::core::option::Option<i32>,
1655}
1656/// Nested message and enum types in `SoleTenantConfig`.
1657pub mod sole_tenant_config {
1658    /// Specifies the NodeAffinity key, values, and affinity operator according to
1659    /// [shared sole tenant node group
1660    /// affinities](<https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity>).
1661    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1662    pub struct NodeAffinity {
1663        /// Key for NodeAffinity.
1664        #[prost(string, tag = "1")]
1665        pub key: ::prost::alloc::string::String,
1666        /// Operator for NodeAffinity.
1667        #[prost(enumeration = "node_affinity::Operator", tag = "2")]
1668        pub operator: i32,
1669        /// Values for NodeAffinity.
1670        #[prost(string, repeated, tag = "3")]
1671        pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1672    }
1673    /// Nested message and enum types in `NodeAffinity`.
1674    pub mod node_affinity {
1675        /// Operator allows user to specify affinity or anti-affinity for the
1676        /// given key values.
1677        #[derive(
1678            Clone,
1679            Copy,
1680            Debug,
1681            PartialEq,
1682            Eq,
1683            Hash,
1684            PartialOrd,
1685            Ord,
1686            ::prost::Enumeration
1687        )]
1688        #[repr(i32)]
1689        pub enum Operator {
1690            /// Invalid or unspecified affinity operator.
1691            Unspecified = 0,
1692            /// Affinity operator.
1693            In = 1,
1694            /// Anti-affinity operator.
1695            NotIn = 2,
1696        }
1697        impl Operator {
1698            /// String value of the enum field names used in the ProtoBuf definition.
1699            ///
1700            /// The values are not transformed in any way and thus are considered stable
1701            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1702            pub fn as_str_name(&self) -> &'static str {
1703                match self {
1704                    Self::Unspecified => "OPERATOR_UNSPECIFIED",
1705                    Self::In => "IN",
1706                    Self::NotIn => "NOT_IN",
1707                }
1708            }
1709            /// Creates an enum from field names used in the ProtoBuf definition.
1710            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1711                match value {
1712                    "OPERATOR_UNSPECIFIED" => Some(Self::Unspecified),
1713                    "IN" => Some(Self::In),
1714                    "NOT_IN" => Some(Self::NotIn),
1715                    _ => None,
1716                }
1717            }
1718        }
1719    }
1720}
1721/// ContainerdConfig contains configuration to customize containerd.
1722#[derive(Clone, PartialEq, ::prost::Message)]
1723pub struct ContainerdConfig {
1724    /// PrivateRegistryAccessConfig is used to configure access configuration
1725    /// for private container registries.
1726    #[prost(message, optional, tag = "1")]
1727    pub private_registry_access_config: ::core::option::Option<
1728        containerd_config::PrivateRegistryAccessConfig,
1729    >,
1730    /// Optional. WritableCgroups defines writable cgroups configuration for the
1731    /// node pool.
1732    #[prost(message, optional, tag = "2")]
1733    pub writable_cgroups: ::core::option::Option<containerd_config::WritableCgroups>,
1734    /// RegistryHostConfig configures containerd registry host configuration.
1735    /// Each registry_hosts represents a hosts.toml file.
1736    /// At most 25 registry_hosts are allowed.
1737    #[prost(message, repeated, tag = "3")]
1738    pub registry_hosts: ::prost::alloc::vec::Vec<containerd_config::RegistryHostConfig>,
1739}
1740/// Nested message and enum types in `ContainerdConfig`.
1741pub mod containerd_config {
1742    /// PrivateRegistryAccessConfig contains access configuration for
1743    /// private container registries.
1744    #[derive(Clone, PartialEq, ::prost::Message)]
1745    pub struct PrivateRegistryAccessConfig {
1746        /// Private registry access is enabled.
1747        #[prost(bool, tag = "1")]
1748        pub enabled: bool,
1749        /// Private registry access configuration.
1750        #[prost(message, repeated, tag = "2")]
1751        pub certificate_authority_domain_config: ::prost::alloc::vec::Vec<
1752            private_registry_access_config::CertificateAuthorityDomainConfig,
1753        >,
1754    }
1755    /// Nested message and enum types in `PrivateRegistryAccessConfig`.
1756    pub mod private_registry_access_config {
1757        /// CertificateAuthorityDomainConfig configures one or more fully qualified
1758        /// domain names (FQDN) to a specific certificate.
1759        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1760        pub struct CertificateAuthorityDomainConfig {
1761            /// List of fully qualified domain names (FQDN).
1762            /// Specifying port is supported.
1763            /// Wildcards are NOT supported.
1764            /// Examples:
1765            ///
1766            /// * my.customdomain.com
1767            /// * 10.0.1.2:5000
1768            #[prost(string, repeated, tag = "1")]
1769            pub fqdns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1770            /// Certificate access config. The following are supported:
1771            ///
1772            /// * GCPSecretManagerCertificateConfig
1773            #[prost(
1774                oneof = "certificate_authority_domain_config::CertificateConfig",
1775                tags = "2"
1776            )]
1777            pub certificate_config: ::core::option::Option<
1778                certificate_authority_domain_config::CertificateConfig,
1779            >,
1780        }
1781        /// Nested message and enum types in `CertificateAuthorityDomainConfig`.
1782        pub mod certificate_authority_domain_config {
1783            /// GCPSecretManagerCertificateConfig configures a secret from
1784            /// [Secret Manager](<https://cloud.google.com/secret-manager>).
1785            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1786            pub struct GcpSecretManagerCertificateConfig {
1787                /// Secret URI, in the form
1788                /// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION".
1789                /// Version can be fixed (e.g. "2") or "latest"
1790                #[prost(string, tag = "1")]
1791                pub secret_uri: ::prost::alloc::string::String,
1792            }
1793            /// Certificate access config. The following are supported:
1794            ///
1795            /// * GCPSecretManagerCertificateConfig
1796            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1797            pub enum CertificateConfig {
1798                /// Secret Manager certificate configuration.
1799                #[prost(message, tag = "2")]
1800                GcpSecretManagerCertificateConfig(GcpSecretManagerCertificateConfig),
1801            }
1802        }
1803    }
1804    /// Defines writable cgroups configuration.
1805    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1806    pub struct WritableCgroups {
1807        /// Optional. Whether writable cgroups is enabled.
1808        #[prost(bool, tag = "1")]
1809        pub enabled: bool,
1810    }
1811    /// RegistryHostConfig configures the top-level structure for a single
1812    /// containerd registry server's configuration, which represents one hosts.toml
1813    /// file on the node. It will override the same fqdns in
1814    /// PrivateRegistryAccessConfig.
1815    #[derive(Clone, PartialEq, ::prost::Message)]
1816    pub struct RegistryHostConfig {
1817        /// Defines the host name of the registry server, which will be used to
1818        /// create configuration file as /etc/containerd/hosts.d/<server>/hosts.toml.
1819        /// It supports fully qualified domain names (FQDN) and IP addresses:
1820        /// Specifying port is supported.
1821        /// Wildcards are NOT supported.
1822        /// Examples:
1823        ///
1824        /// * my.customdomain.com
1825        /// * 10.0.1.2:5000
1826        #[prost(string, tag = "1")]
1827        pub server: ::prost::alloc::string::String,
1828        /// HostConfig configures a list of host-specific configurations for the
1829        /// server.
1830        /// Each server can have at most 10 host configurations.
1831        #[prost(message, repeated, tag = "2")]
1832        pub hosts: ::prost::alloc::vec::Vec<registry_host_config::HostConfig>,
1833    }
1834    /// Nested message and enum types in `RegistryHostConfig`.
1835    pub mod registry_host_config {
1836        /// CertificateConfig configures certificate for the registry.
1837        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1838        pub struct CertificateConfig {
1839            /// One of the methods to configure the certificate.
1840            #[prost(oneof = "certificate_config::Certificate", tags = "1")]
1841            pub certificate: ::core::option::Option<certificate_config::Certificate>,
1842        }
1843        /// Nested message and enum types in `CertificateConfig`.
1844        pub mod certificate_config {
1845            /// One of the methods to configure the certificate.
1846            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1847            pub enum Certificate {
1848                /// The URI configures a secret from
1849                /// [Secret Manager](<https://cloud.google.com/secret-manager>)
1850                /// in the format
1851                /// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION" for
1852                /// global secret or
1853                /// "projects/$PROJECT_ID/locations/$REGION/secrets/$SECRET_NAME/versions/$VERSION"
1854                /// for regional secret. Version can be fixed (e.g. "2") or "latest"
1855                #[prost(string, tag = "1")]
1856                GcpSecretManagerSecretUri(::prost::alloc::string::String),
1857            }
1858        }
1859        /// CertificateConfigPair configures pairs of certificates, which is used for
1860        /// client certificate and key pairs under a registry.
1861        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1862        pub struct CertificateConfigPair {
1863            /// Cert configures the client certificate.
1864            #[prost(message, optional, tag = "1")]
1865            pub cert: ::core::option::Option<CertificateConfig>,
1866            /// Key configures the client private key. Optional.
1867            #[prost(message, optional, tag = "2")]
1868            pub key: ::core::option::Option<CertificateConfig>,
1869        }
1870        /// RegistryHeader configures headers for the registry.
1871        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1872        pub struct RegistryHeader {
1873            /// Key configures the header key.
1874            #[prost(string, tag = "1")]
1875            pub key: ::prost::alloc::string::String,
1876            /// Value configures the header value.
1877            #[prost(string, repeated, tag = "2")]
1878            pub value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1879        }
1880        /// HostConfig configures the registry host under a given Server.
1881        #[derive(Clone, PartialEq, ::prost::Message)]
1882        pub struct HostConfig {
1883            /// Host configures the registry host/mirror.
1884            /// It supports fully qualified domain names (FQDN) and IP addresses:
1885            /// Specifying port is supported.
1886            /// Wildcards are NOT supported.
1887            /// Examples:
1888            ///
1889            /// * my.customdomain.com
1890            /// * 10.0.1.2:5000
1891            #[prost(string, tag = "1")]
1892            pub host: ::prost::alloc::string::String,
1893            /// Capabilities represent the capabilities of the registry host,
1894            /// specifying what operations a host is capable of performing.
1895            /// If not set, containerd enables all capabilities by default.
1896            #[prost(enumeration = "HostCapability", repeated, tag = "2")]
1897            pub capabilities: ::prost::alloc::vec::Vec<i32>,
1898            /// OverridePath is used to indicate the host's API root endpoint is
1899            /// defined in the URL path rather than by the API specification. This may
1900            /// be used with non-compliant OCI registries which are missing the /v2
1901            /// prefix.
1902            /// If not set, containerd sets default false.
1903            #[prost(bool, tag = "3")]
1904            pub override_path: bool,
1905            /// Header configures the registry host headers.
1906            #[prost(message, repeated, tag = "4")]
1907            pub header: ::prost::alloc::vec::Vec<RegistryHeader>,
1908            /// CA configures the registry host certificate.
1909            #[prost(message, repeated, tag = "5")]
1910            pub ca: ::prost::alloc::vec::Vec<CertificateConfig>,
1911            /// Client configures the registry host client certificate and key.
1912            #[prost(message, repeated, tag = "6")]
1913            pub client: ::prost::alloc::vec::Vec<CertificateConfigPair>,
1914            /// Specifies the maximum duration allowed for a connection attempt to
1915            /// complete. A shorter timeout helps reduce delays when falling back to
1916            /// the original registry if the mirror is unreachable.
1917            /// Maximum allowed value is 180s. If not set, containerd sets default 30s.
1918            /// The value should be a decimal number of seconds with an `s` suffix.
1919            #[prost(message, optional, tag = "7")]
1920            pub dial_timeout: ::core::option::Option<::prost_types::Duration>,
1921        }
1922        /// HostCapability configures capabilities for the registry host.
1923        #[derive(
1924            Clone,
1925            Copy,
1926            Debug,
1927            PartialEq,
1928            Eq,
1929            Hash,
1930            PartialOrd,
1931            Ord,
1932            ::prost::Enumeration
1933        )]
1934        #[repr(i32)]
1935        pub enum HostCapability {
1936            /// UNKNOWN should never be set.
1937            Unspecified = 0,
1938            /// Pull represents the capability to fetch manifests and blobs by digest.
1939            Pull = 1,
1940            /// Resolve represents the capability to fetch manifests by name.
1941            Resolve = 2,
1942            /// Push represents the capability to push blobs and manifests.
1943            Push = 3,
1944        }
1945        impl HostCapability {
1946            /// String value of the enum field names used in the ProtoBuf definition.
1947            ///
1948            /// The values are not transformed in any way and thus are considered stable
1949            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1950            pub fn as_str_name(&self) -> &'static str {
1951                match self {
1952                    Self::Unspecified => "HOST_CAPABILITY_UNSPECIFIED",
1953                    Self::Pull => "HOST_CAPABILITY_PULL",
1954                    Self::Resolve => "HOST_CAPABILITY_RESOLVE",
1955                    Self::Push => "HOST_CAPABILITY_PUSH",
1956                }
1957            }
1958            /// Creates an enum from field names used in the ProtoBuf definition.
1959            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1960                match value {
1961                    "HOST_CAPABILITY_UNSPECIFIED" => Some(Self::Unspecified),
1962                    "HOST_CAPABILITY_PULL" => Some(Self::Pull),
1963                    "HOST_CAPABILITY_RESOLVE" => Some(Self::Resolve),
1964                    "HOST_CAPABILITY_PUSH" => Some(Self::Push),
1965                    _ => None,
1966                }
1967            }
1968        }
1969    }
1970}
1971/// Kubernetes taint is composed of three fields: key, value, and effect. Effect
1972/// can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
1973///
1974/// See
1975/// [here](<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration>)
1976/// for more information, including usage and the valid values.
1977#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1978pub struct NodeTaint {
1979    /// Key for taint.
1980    #[prost(string, tag = "1")]
1981    pub key: ::prost::alloc::string::String,
1982    /// Value for taint.
1983    #[prost(string, tag = "2")]
1984    pub value: ::prost::alloc::string::String,
1985    /// Effect for taint.
1986    #[prost(enumeration = "node_taint::Effect", tag = "3")]
1987    pub effect: i32,
1988}
1989/// Nested message and enum types in `NodeTaint`.
1990pub mod node_taint {
1991    /// Possible values for Effect in taint.
1992    #[derive(
1993        Clone,
1994        Copy,
1995        Debug,
1996        PartialEq,
1997        Eq,
1998        Hash,
1999        PartialOrd,
2000        Ord,
2001        ::prost::Enumeration
2002    )]
2003    #[repr(i32)]
2004    pub enum Effect {
2005        /// Not set
2006        Unspecified = 0,
2007        /// NoSchedule
2008        NoSchedule = 1,
2009        /// PreferNoSchedule
2010        PreferNoSchedule = 2,
2011        /// NoExecute
2012        NoExecute = 3,
2013    }
2014    impl Effect {
2015        /// String value of the enum field names used in the ProtoBuf definition.
2016        ///
2017        /// The values are not transformed in any way and thus are considered stable
2018        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2019        pub fn as_str_name(&self) -> &'static str {
2020            match self {
2021                Self::Unspecified => "EFFECT_UNSPECIFIED",
2022                Self::NoSchedule => "NO_SCHEDULE",
2023                Self::PreferNoSchedule => "PREFER_NO_SCHEDULE",
2024                Self::NoExecute => "NO_EXECUTE",
2025            }
2026        }
2027        /// Creates an enum from field names used in the ProtoBuf definition.
2028        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2029            match value {
2030                "EFFECT_UNSPECIFIED" => Some(Self::Unspecified),
2031                "NO_SCHEDULE" => Some(Self::NoSchedule),
2032                "PREFER_NO_SCHEDULE" => Some(Self::PreferNoSchedule),
2033                "NO_EXECUTE" => Some(Self::NoExecute),
2034                _ => None,
2035            }
2036        }
2037    }
2038}
2039/// Collection of Kubernetes [node
2040/// taints](<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration>).
2041#[derive(Clone, PartialEq, ::prost::Message)]
2042pub struct NodeTaints {
2043    /// List of node taints.
2044    #[prost(message, repeated, tag = "1")]
2045    pub taints: ::prost::alloc::vec::Vec<NodeTaint>,
2046}
2047/// Collection of node-level [Kubernetes
2048/// labels](<https://kubernetes.io/docs/concepts/overview/working-with-objects/labels>).
2049#[derive(Clone, PartialEq, ::prost::Message)]
2050pub struct NodeLabels {
2051    /// Map of node label keys and node label values.
2052    #[prost(map = "string, string", tag = "1")]
2053    pub labels: ::std::collections::HashMap<
2054        ::prost::alloc::string::String,
2055        ::prost::alloc::string::String,
2056    >,
2057}
2058/// Collection of [Resource Manager
2059/// labels](<https://cloud.google.com/resource-manager/docs/creating-managing-labels>).
2060#[derive(Clone, PartialEq, ::prost::Message)]
2061pub struct ResourceLabels {
2062    /// Map of node label keys and node label values.
2063    #[prost(map = "string, string", tag = "1")]
2064    pub labels: ::std::collections::HashMap<
2065        ::prost::alloc::string::String,
2066        ::prost::alloc::string::String,
2067    >,
2068}
2069/// Collection of Compute Engine network tags that can be applied to a node's
2070/// underlying VM instance.
2071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2072pub struct NetworkTags {
2073    /// List of network tags.
2074    #[prost(string, repeated, tag = "1")]
2075    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2076}
2077/// The authentication information for accessing the master endpoint.
2078/// Authentication can be done using HTTP basic auth or using client
2079/// certificates.
2080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2081pub struct MasterAuth {
2082    /// The username to use for HTTP basic authentication to the master endpoint.
2083    /// For clusters v1.6.0 and later, basic authentication can be disabled by
2084    /// leaving username unspecified (or setting it to the empty string).
2085    ///
2086    /// Warning: basic authentication is deprecated, and will be removed in GKE
2087    /// control plane versions 1.19 and newer. For a list of recommended
2088    /// authentication methods, see:
2089    /// <https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication>
2090    #[deprecated]
2091    #[prost(string, tag = "1")]
2092    pub username: ::prost::alloc::string::String,
2093    /// The password to use for HTTP basic authentication to the master endpoint.
2094    /// Because the master endpoint is open to the Internet, you should create a
2095    /// strong password.  If a password is provided for cluster creation, username
2096    /// must be non-empty.
2097    ///
2098    /// Warning: basic authentication is deprecated, and will be removed in GKE
2099    /// control plane versions 1.19 and newer. For a list of recommended
2100    /// authentication methods, see:
2101    /// <https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication>
2102    #[deprecated]
2103    #[prost(string, tag = "2")]
2104    pub password: ::prost::alloc::string::String,
2105    /// Configuration for client certificate authentication on the cluster. For
2106    /// clusters before v1.12, if no configuration is specified, a client
2107    /// certificate is issued.
2108    #[prost(message, optional, tag = "3")]
2109    pub client_certificate_config: ::core::option::Option<ClientCertificateConfig>,
2110    /// Output only. Base64-encoded public certificate that is the root of
2111    /// trust for the cluster.
2112    #[prost(string, tag = "100")]
2113    pub cluster_ca_certificate: ::prost::alloc::string::String,
2114    /// Output only. Base64-encoded public certificate used by clients to
2115    /// authenticate to the cluster endpoint. Issued only if
2116    /// client_certificate_config is set.
2117    #[prost(string, tag = "101")]
2118    pub client_certificate: ::prost::alloc::string::String,
2119    /// Output only. Base64-encoded private key used by clients to authenticate
2120    /// to the cluster endpoint.
2121    #[prost(string, tag = "102")]
2122    pub client_key: ::prost::alloc::string::String,
2123}
2124/// Configuration for client certificates on the cluster.
2125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2126pub struct ClientCertificateConfig {
2127    /// Issue a client certificate.
2128    #[prost(bool, tag = "1")]
2129    pub issue_client_certificate: bool,
2130}
2131/// Configuration for the addons that can be automatically spun up in the
2132/// cluster, enabling additional functionality.
2133#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2134pub struct AddonsConfig {
2135    /// Configuration for the HTTP (L7) load balancing controller addon, which
2136    /// makes it easy to set up HTTP load balancers for services in a cluster.
2137    #[prost(message, optional, tag = "1")]
2138    pub http_load_balancing: ::core::option::Option<HttpLoadBalancing>,
2139    /// Configuration for the horizontal pod autoscaling feature, which
2140    /// increases or decreases the number of replica pods a replication controller
2141    /// has based on the resource usage of the existing pods.
2142    #[prost(message, optional, tag = "2")]
2143    pub horizontal_pod_autoscaling: ::core::option::Option<HorizontalPodAutoscaling>,
2144    /// Configuration for the Kubernetes Dashboard.
2145    /// This addon is deprecated, and will be disabled in 1.15. It is recommended
2146    /// to use the Cloud Console to manage and monitor your Kubernetes clusters,
2147    /// workloads and applications. For more information, see:
2148    /// <https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards>
2149    #[deprecated]
2150    #[prost(message, optional, tag = "3")]
2151    pub kubernetes_dashboard: ::core::option::Option<KubernetesDashboard>,
2152    /// Configuration for NetworkPolicy. This only tracks whether the addon
2153    /// is enabled or not on the Master, it does not track whether network policy
2154    /// is enabled for the nodes.
2155    #[prost(message, optional, tag = "4")]
2156    pub network_policy_config: ::core::option::Option<NetworkPolicyConfig>,
2157    /// Configuration for the Cloud Run addon, which allows the user to use a
2158    /// managed Knative service.
2159    #[prost(message, optional, tag = "7")]
2160    pub cloud_run_config: ::core::option::Option<CloudRunConfig>,
2161    /// Configuration for NodeLocalDNS, a dns cache running on cluster nodes
2162    #[prost(message, optional, tag = "8")]
2163    pub dns_cache_config: ::core::option::Option<DnsCacheConfig>,
2164    /// Configuration for the ConfigConnector add-on, a Kubernetes
2165    /// extension to manage hosted Google Cloud services through the Kubernetes
2166    /// API.
2167    #[prost(message, optional, tag = "10")]
2168    pub config_connector_config: ::core::option::Option<ConfigConnectorConfig>,
2169    /// Configuration for the Compute Engine Persistent Disk CSI driver.
2170    #[prost(message, optional, tag = "11")]
2171    pub gce_persistent_disk_csi_driver_config: ::core::option::Option<
2172        GcePersistentDiskCsiDriverConfig,
2173    >,
2174    /// Configuration for the Filestore CSI driver.
2175    #[prost(message, optional, tag = "14")]
2176    pub gcp_filestore_csi_driver_config: ::core::option::Option<
2177        GcpFilestoreCsiDriverConfig,
2178    >,
2179    /// Configuration for the Backup for GKE agent addon.
2180    #[prost(message, optional, tag = "16")]
2181    pub gke_backup_agent_config: ::core::option::Option<GkeBackupAgentConfig>,
2182    /// Configuration for the Cloud Storage Fuse CSI driver.
2183    #[prost(message, optional, tag = "17")]
2184    pub gcs_fuse_csi_driver_config: ::core::option::Option<GcsFuseCsiDriverConfig>,
2185    /// Optional. Configuration for the StatefulHA add-on.
2186    #[prost(message, optional, tag = "18")]
2187    pub stateful_ha_config: ::core::option::Option<StatefulHaConfig>,
2188    /// Configuration for the Cloud Storage Parallelstore CSI driver.
2189    #[prost(message, optional, tag = "19")]
2190    pub parallelstore_csi_driver_config: ::core::option::Option<
2191        ParallelstoreCsiDriverConfig,
2192    >,
2193    /// Optional. Configuration for Ray Operator addon.
2194    #[prost(message, optional, tag = "21")]
2195    pub ray_operator_config: ::core::option::Option<RayOperatorConfig>,
2196    /// Configuration for the High Scale Checkpointing add-on.
2197    #[prost(message, optional, tag = "22")]
2198    pub high_scale_checkpointing_config: ::core::option::Option<
2199        HighScaleCheckpointingConfig,
2200    >,
2201    /// Configuration for the Lustre CSI driver.
2202    #[prost(message, optional, tag = "23")]
2203    pub lustre_csi_driver_config: ::core::option::Option<LustreCsiDriverConfig>,
2204    /// Optional. Configuration for the slice controller add-on.
2205    #[prost(message, optional, tag = "26")]
2206    pub slice_controller_config: ::core::option::Option<SliceControllerConfig>,
2207}
2208/// Configuration options for the HTTP (L7) load balancing controller addon,
2209/// which makes it easy to set up HTTP load balancers for services in a cluster.
2210#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2211pub struct HttpLoadBalancing {
2212    /// Whether the HTTP Load Balancing controller is enabled in the cluster.
2213    /// When enabled, it runs a small pod in the cluster that manages the load
2214    /// balancers.
2215    #[prost(bool, tag = "1")]
2216    pub disabled: bool,
2217}
2218/// Configuration options for the horizontal pod autoscaling feature, which
2219/// increases or decreases the number of replica pods a replication controller
2220/// has based on the resource usage of the existing pods.
2221#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2222pub struct HorizontalPodAutoscaling {
2223    /// Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
2224    /// When enabled, it ensures that metrics are collected into Stackdriver
2225    /// Monitoring.
2226    #[prost(bool, tag = "1")]
2227    pub disabled: bool,
2228}
2229/// Configuration for the Kubernetes Dashboard.
2230#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2231pub struct KubernetesDashboard {
2232    /// Whether the Kubernetes Dashboard is enabled for this cluster.
2233    #[prost(bool, tag = "1")]
2234    pub disabled: bool,
2235}
2236/// Configuration for NetworkPolicy. This only tracks whether the addon
2237/// is enabled or not on the Master, it does not track whether network policy
2238/// is enabled for the nodes.
2239#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2240pub struct NetworkPolicyConfig {
2241    /// Whether NetworkPolicy is enabled for this cluster.
2242    #[prost(bool, tag = "1")]
2243    pub disabled: bool,
2244}
2245/// Configuration for NodeLocal DNSCache
2246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2247pub struct DnsCacheConfig {
2248    /// Whether NodeLocal DNSCache is enabled for this cluster.
2249    #[prost(bool, tag = "1")]
2250    pub enabled: bool,
2251}
2252/// Configuration for controlling master global access settings.
2253#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2254pub struct PrivateClusterMasterGlobalAccessConfig {
2255    /// Whenever master is accessible globally or not.
2256    #[prost(bool, tag = "1")]
2257    pub enabled: bool,
2258}
2259/// Configuration options for private clusters.
2260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2261pub struct PrivateClusterConfig {
2262    /// Whether nodes have internal IP addresses only. If enabled, all nodes are
2263    /// given only RFC 1918 private addresses and communicate with the master via
2264    /// private networking.
2265    ///
2266    /// Deprecated: Use
2267    /// \[NetworkConfig.default_enable_private_nodes\]\[google.container.v1.NetworkConfig.default_enable_private_nodes\]
2268    /// instead.
2269    #[deprecated]
2270    #[prost(bool, tag = "1")]
2271    pub enable_private_nodes: bool,
2272    /// Whether the master's internal IP address is used as the cluster endpoint.
2273    ///
2274    /// Deprecated: Use
2275    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_public_endpoint\]\[google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_public_endpoint\]
2276    /// instead. Note that the value of enable_public_endpoint is reversed: if
2277    /// enable_private_endpoint is false, then enable_public_endpoint will be true.
2278    #[deprecated]
2279    #[prost(bool, tag = "2")]
2280    pub enable_private_endpoint: bool,
2281    /// The IP range in CIDR notation to use for the hosted master network. This
2282    /// range will be used for assigning internal IP addresses to the master or
2283    /// set of masters, as well as the ILB VIP. This range must not overlap with
2284    /// any other ranges in use within the cluster's network.
2285    #[prost(string, tag = "3")]
2286    pub master_ipv4_cidr_block: ::prost::alloc::string::String,
2287    /// Output only. The internal IP address of this cluster's master endpoint.
2288    ///
2289    /// Deprecated: Use
2290    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint\]\[google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint\]
2291    /// instead.
2292    #[deprecated]
2293    #[prost(string, tag = "4")]
2294    pub private_endpoint: ::prost::alloc::string::String,
2295    /// Output only. The external IP address of this cluster's master endpoint.
2296    ///
2297    /// Deprecated:Use
2298    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.public_endpoint\]\[google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.public_endpoint\]
2299    /// instead.
2300    #[deprecated]
2301    #[prost(string, tag = "5")]
2302    pub public_endpoint: ::prost::alloc::string::String,
2303    /// Output only. The peering name in the customer VPC used by this cluster.
2304    #[prost(string, tag = "7")]
2305    pub peering_name: ::prost::alloc::string::String,
2306    /// Controls master global access settings.
2307    ///
2308    /// Deprecated: Use
2309    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_global_access\]\[\]
2310    /// instead.
2311    #[deprecated]
2312    #[prost(message, optional, tag = "8")]
2313    pub master_global_access_config: ::core::option::Option<
2314        PrivateClusterMasterGlobalAccessConfig,
2315    >,
2316    /// Subnet to provision the master's private endpoint during cluster creation.
2317    /// Specified in projects/*/regions/*/subnetworks/\* format.
2318    ///
2319    /// Deprecated: Use
2320    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint_subnetwork\]\[google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint_subnetwork\]
2321    /// instead.
2322    #[deprecated]
2323    #[prost(string, tag = "10")]
2324    pub private_endpoint_subnetwork: ::prost::alloc::string::String,
2325}
2326/// Configuration for returning group information from authenticators.
2327#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2328pub struct AuthenticatorGroupsConfig {
2329    /// Whether this cluster should return group membership lookups
2330    /// during authentication using a group of security groups.
2331    #[prost(bool, tag = "1")]
2332    pub enabled: bool,
2333    /// The name of the security group-of-groups to be used. Only relevant
2334    /// if enabled = true.
2335    #[prost(string, tag = "2")]
2336    pub security_group: ::prost::alloc::string::String,
2337}
2338/// Configuration options for the Cloud Run feature.
2339#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2340pub struct CloudRunConfig {
2341    /// Whether Cloud Run addon is enabled for this cluster.
2342    #[prost(bool, tag = "1")]
2343    pub disabled: bool,
2344    /// Which load balancer type is installed for Cloud Run.
2345    #[prost(enumeration = "cloud_run_config::LoadBalancerType", tag = "3")]
2346    pub load_balancer_type: i32,
2347}
2348/// Nested message and enum types in `CloudRunConfig`.
2349pub mod cloud_run_config {
2350    /// Load balancer type of ingress service of Cloud Run.
2351    #[derive(
2352        Clone,
2353        Copy,
2354        Debug,
2355        PartialEq,
2356        Eq,
2357        Hash,
2358        PartialOrd,
2359        Ord,
2360        ::prost::Enumeration
2361    )]
2362    #[repr(i32)]
2363    pub enum LoadBalancerType {
2364        /// Load balancer type for Cloud Run is unspecified.
2365        Unspecified = 0,
2366        /// Install external load balancer for Cloud Run.
2367        External = 1,
2368        /// Install internal load balancer for Cloud Run.
2369        Internal = 2,
2370    }
2371    impl LoadBalancerType {
2372        /// String value of the enum field names used in the ProtoBuf definition.
2373        ///
2374        /// The values are not transformed in any way and thus are considered stable
2375        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2376        pub fn as_str_name(&self) -> &'static str {
2377            match self {
2378                Self::Unspecified => "LOAD_BALANCER_TYPE_UNSPECIFIED",
2379                Self::External => "LOAD_BALANCER_TYPE_EXTERNAL",
2380                Self::Internal => "LOAD_BALANCER_TYPE_INTERNAL",
2381            }
2382        }
2383        /// Creates an enum from field names used in the ProtoBuf definition.
2384        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2385            match value {
2386                "LOAD_BALANCER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2387                "LOAD_BALANCER_TYPE_EXTERNAL" => Some(Self::External),
2388                "LOAD_BALANCER_TYPE_INTERNAL" => Some(Self::Internal),
2389                _ => None,
2390            }
2391        }
2392    }
2393}
2394/// Configuration options for the Config Connector add-on.
2395#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2396pub struct ConfigConnectorConfig {
2397    /// Whether Cloud Connector is enabled for this cluster.
2398    #[prost(bool, tag = "1")]
2399    pub enabled: bool,
2400}
2401/// Configuration for the Compute Engine PD CSI driver.
2402#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2403pub struct GcePersistentDiskCsiDriverConfig {
2404    /// Whether the Compute Engine PD CSI driver is enabled for this cluster.
2405    #[prost(bool, tag = "1")]
2406    pub enabled: bool,
2407}
2408/// Configuration for the Filestore CSI driver.
2409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2410pub struct GcpFilestoreCsiDriverConfig {
2411    /// Whether the Filestore CSI driver is enabled for this cluster.
2412    #[prost(bool, tag = "1")]
2413    pub enabled: bool,
2414}
2415/// Configuration for the Cloud Storage Fuse CSI driver.
2416#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2417pub struct GcsFuseCsiDriverConfig {
2418    /// Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
2419    #[prost(bool, tag = "1")]
2420    pub enabled: bool,
2421}
2422/// Configuration for the Cloud Storage Parallelstore CSI driver.
2423#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2424pub struct ParallelstoreCsiDriverConfig {
2425    /// Whether the Cloud Storage Parallelstore CSI driver is enabled for this
2426    /// cluster.
2427    #[prost(bool, tag = "1")]
2428    pub enabled: bool,
2429}
2430/// Configuration for the High Scale Checkpointing.
2431#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2432pub struct HighScaleCheckpointingConfig {
2433    /// Whether the High Scale Checkpointing is enabled for this
2434    /// cluster.
2435    #[prost(bool, tag = "1")]
2436    pub enabled: bool,
2437}
2438/// Configuration for the Lustre CSI driver.
2439#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2440pub struct LustreCsiDriverConfig {
2441    /// Whether the Lustre CSI driver is enabled for this cluster.
2442    #[prost(bool, tag = "1")]
2443    pub enabled: bool,
2444    /// If set to true, the Lustre CSI driver will install Lustre kernel modules
2445    /// using port 6988.
2446    /// This serves as a workaround for a port conflict with the
2447    /// gke-metadata-server. This field is required ONLY under the following
2448    /// conditions:
2449    ///
2450    /// 1. The GKE node version is older than 1.33.2-gke.4655000.
2451    /// 1. You're connecting to a Lustre instance that has the
2452    ///    'gke-support-enabled' flag.
2453    ///    Deprecated: This flag is no longer required as of GKE node version
2454    ///    1.33.2-gke.4655000, unless you are connecting to a Lustre instance
2455    ///    that has the `gke-support-enabled` flag.
2456    #[deprecated]
2457    #[prost(bool, tag = "3")]
2458    pub enable_legacy_lustre_port: bool,
2459}
2460/// Configuration for the Slice Controller.
2461#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2462pub struct SliceControllerConfig {
2463    /// Optional. Indicates whether Slice Controller is enabled in the cluster.
2464    #[prost(bool, tag = "1")]
2465    pub enabled: bool,
2466}
2467/// Configuration options for the Ray Operator add-on.
2468#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2469pub struct RayOperatorConfig {
2470    /// Whether the Ray Operator addon is enabled for this cluster.
2471    #[prost(bool, tag = "1")]
2472    pub enabled: bool,
2473    /// Optional. Logging configuration for Ray clusters.
2474    #[prost(message, optional, tag = "2")]
2475    pub ray_cluster_logging_config: ::core::option::Option<RayClusterLoggingConfig>,
2476    /// Optional. Monitoring configuration for Ray clusters.
2477    #[prost(message, optional, tag = "3")]
2478    pub ray_cluster_monitoring_config: ::core::option::Option<
2479        RayClusterMonitoringConfig,
2480    >,
2481}
2482/// Configuration for the Backup for GKE Agent.
2483#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2484pub struct GkeBackupAgentConfig {
2485    /// Whether the Backup for GKE agent is enabled for this cluster.
2486    #[prost(bool, tag = "1")]
2487    pub enabled: bool,
2488}
2489/// Configuration for the Stateful HA add-on.
2490#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2491pub struct StatefulHaConfig {
2492    /// Whether the Stateful HA add-on is enabled for this cluster.
2493    #[prost(bool, tag = "1")]
2494    pub enabled: bool,
2495}
2496/// Configuration options for the master authorized networks feature. Enabled
2497/// master authorized networks will disallow all external traffic to access
2498/// Kubernetes master through HTTPS except traffic from the given CIDR blocks,
2499/// Google Compute Engine Public IPs and Google Prod IPs.
2500#[derive(Clone, PartialEq, ::prost::Message)]
2501pub struct MasterAuthorizedNetworksConfig {
2502    /// Whether or not master authorized networks is enabled.
2503    #[prost(bool, tag = "1")]
2504    pub enabled: bool,
2505    /// cidr_blocks define up to 50 external networks that could access
2506    /// Kubernetes master through HTTPS.
2507    #[prost(message, repeated, tag = "2")]
2508    pub cidr_blocks: ::prost::alloc::vec::Vec<
2509        master_authorized_networks_config::CidrBlock,
2510    >,
2511    /// Whether master is accessible via Google Compute Engine Public IP addresses.
2512    #[prost(bool, optional, tag = "3")]
2513    pub gcp_public_cidrs_access_enabled: ::core::option::Option<bool>,
2514    /// Whether master authorized networks is enforced on private endpoint or not.
2515    #[prost(bool, optional, tag = "5")]
2516    pub private_endpoint_enforcement_enabled: ::core::option::Option<bool>,
2517}
2518/// Nested message and enum types in `MasterAuthorizedNetworksConfig`.
2519pub mod master_authorized_networks_config {
2520    /// CidrBlock contains an optional name and one CIDR block.
2521    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2522    pub struct CidrBlock {
2523        /// display_name is an optional field for users to identify CIDR blocks.
2524        #[prost(string, tag = "1")]
2525        pub display_name: ::prost::alloc::string::String,
2526        /// cidr_block must be specified in CIDR notation.
2527        #[prost(string, tag = "2")]
2528        pub cidr_block: ::prost::alloc::string::String,
2529    }
2530}
2531/// Configuration for the legacy Attribute Based Access Control authorization
2532/// mode.
2533#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2534pub struct LegacyAbac {
2535    /// Whether the ABAC authorizer is enabled for this cluster. When enabled,
2536    /// identities in the system, including service accounts, nodes, and
2537    /// controllers, will have statically granted permissions beyond those
2538    /// provided by the RBAC configuration or IAM.
2539    #[prost(bool, tag = "1")]
2540    pub enabled: bool,
2541}
2542/// Configuration options for the NetworkPolicy feature.
2543/// <https://kubernetes.io/docs/concepts/services-networking/networkpolicies/>
2544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2545pub struct NetworkPolicy {
2546    /// The selected network policy provider.
2547    #[prost(enumeration = "network_policy::Provider", tag = "1")]
2548    pub provider: i32,
2549    /// Whether network policy is enabled on the cluster.
2550    #[prost(bool, tag = "2")]
2551    pub enabled: bool,
2552}
2553/// Nested message and enum types in `NetworkPolicy`.
2554pub mod network_policy {
2555    /// Allowed Network Policy providers.
2556    #[derive(
2557        Clone,
2558        Copy,
2559        Debug,
2560        PartialEq,
2561        Eq,
2562        Hash,
2563        PartialOrd,
2564        Ord,
2565        ::prost::Enumeration
2566    )]
2567    #[repr(i32)]
2568    pub enum Provider {
2569        /// Not set
2570        Unspecified = 0,
2571        /// Tigera (Calico Felix).
2572        Calico = 1,
2573    }
2574    impl Provider {
2575        /// String value of the enum field names used in the ProtoBuf definition.
2576        ///
2577        /// The values are not transformed in any way and thus are considered stable
2578        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2579        pub fn as_str_name(&self) -> &'static str {
2580            match self {
2581                Self::Unspecified => "PROVIDER_UNSPECIFIED",
2582                Self::Calico => "CALICO",
2583            }
2584        }
2585        /// Creates an enum from field names used in the ProtoBuf definition.
2586        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2587            match value {
2588                "PROVIDER_UNSPECIFIED" => Some(Self::Unspecified),
2589                "CALICO" => Some(Self::Calico),
2590                _ => None,
2591            }
2592        }
2593    }
2594}
2595/// Configuration for Binary Authorization.
2596#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2597pub struct BinaryAuthorization {
2598    /// This field is deprecated. Leave this unset and instead configure
2599    /// BinaryAuthorization using evaluation_mode. If evaluation_mode is set to
2600    /// anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
2601    #[deprecated]
2602    #[prost(bool, tag = "1")]
2603    pub enabled: bool,
2604    /// Mode of operation for binauthz policy evaluation. If unspecified, defaults
2605    /// to DISABLED.
2606    #[prost(enumeration = "binary_authorization::EvaluationMode", tag = "2")]
2607    pub evaluation_mode: i32,
2608}
2609/// Nested message and enum types in `BinaryAuthorization`.
2610pub mod binary_authorization {
2611    /// Binary Authorization mode of operation.
2612    #[derive(
2613        Clone,
2614        Copy,
2615        Debug,
2616        PartialEq,
2617        Eq,
2618        Hash,
2619        PartialOrd,
2620        Ord,
2621        ::prost::Enumeration
2622    )]
2623    #[repr(i32)]
2624    pub enum EvaluationMode {
2625        /// Default value
2626        Unspecified = 0,
2627        /// Disable BinaryAuthorization
2628        Disabled = 1,
2629        /// Enforce Kubernetes admission requests with BinaryAuthorization using the
2630        /// project's singleton policy. This is equivalent to setting the
2631        /// enabled boolean to true.
2632        ProjectSingletonPolicyEnforce = 2,
2633    }
2634    impl EvaluationMode {
2635        /// String value of the enum field names used in the ProtoBuf definition.
2636        ///
2637        /// The values are not transformed in any way and thus are considered stable
2638        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2639        pub fn as_str_name(&self) -> &'static str {
2640            match self {
2641                Self::Unspecified => "EVALUATION_MODE_UNSPECIFIED",
2642                Self::Disabled => "DISABLED",
2643                Self::ProjectSingletonPolicyEnforce => "PROJECT_SINGLETON_POLICY_ENFORCE",
2644            }
2645        }
2646        /// Creates an enum from field names used in the ProtoBuf definition.
2647        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2648            match value {
2649                "EVALUATION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2650                "DISABLED" => Some(Self::Disabled),
2651                "PROJECT_SINGLETON_POLICY_ENFORCE" => {
2652                    Some(Self::ProjectSingletonPolicyEnforce)
2653                }
2654                _ => None,
2655            }
2656        }
2657    }
2658}
2659/// \[PRIVATE FIELD\]
2660/// Config for pod CIDR size overprovisioning.
2661#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2662pub struct PodCidrOverprovisionConfig {
2663    /// Whether Pod CIDR overprovisioning is disabled.
2664    /// Note: Pod CIDR overprovisioning is enabled by default.
2665    #[prost(bool, tag = "1")]
2666    pub disable: bool,
2667}
2668/// Configuration for controlling how IPs are allocated in the cluster.
2669#[derive(Clone, PartialEq, ::prost::Message)]
2670pub struct IpAllocationPolicy {
2671    /// Whether alias IPs will be used for pod IPs in the cluster.
2672    /// This is used in conjunction with use_routes. It cannot
2673    /// be true if use_routes is true. If both use_ip_aliases and use_routes are
2674    /// false, then the server picks the default IP allocation mode
2675    #[prost(bool, tag = "1")]
2676    pub use_ip_aliases: bool,
2677    /// Whether a new subnetwork will be created automatically for the cluster.
2678    ///
2679    /// This field is only applicable when `use_ip_aliases` is true.
2680    #[prost(bool, tag = "2")]
2681    pub create_subnetwork: bool,
2682    /// A custom subnetwork name to be used if `create_subnetwork` is true.  If
2683    /// this field is empty, then an automatic name will be chosen for the new
2684    /// subnetwork.
2685    #[prost(string, tag = "3")]
2686    pub subnetwork_name: ::prost::alloc::string::String,
2687    /// This field is deprecated, use cluster_ipv4_cidr_block.
2688    #[deprecated]
2689    #[prost(string, tag = "4")]
2690    pub cluster_ipv4_cidr: ::prost::alloc::string::String,
2691    /// This field is deprecated, use node_ipv4_cidr_block.
2692    #[deprecated]
2693    #[prost(string, tag = "5")]
2694    pub node_ipv4_cidr: ::prost::alloc::string::String,
2695    /// This field is deprecated, use services_ipv4_cidr_block.
2696    #[deprecated]
2697    #[prost(string, tag = "6")]
2698    pub services_ipv4_cidr: ::prost::alloc::string::String,
2699    /// The name of the secondary range to be used for the cluster CIDR
2700    /// block.  The secondary range will be used for pod IP
2701    /// addresses. This must be an existing secondary range associated
2702    /// with the cluster subnetwork.
2703    ///
2704    /// This field is only applicable with use_ip_aliases is true and
2705    /// create_subnetwork is false.
2706    #[prost(string, tag = "7")]
2707    pub cluster_secondary_range_name: ::prost::alloc::string::String,
2708    /// The name of the secondary range to be used as for the services
2709    /// CIDR block.  The secondary range will be used for service
2710    /// ClusterIPs. This must be an existing secondary range associated
2711    /// with the cluster subnetwork.
2712    ///
2713    /// This field is only applicable with use_ip_aliases is true and
2714    /// create_subnetwork is false.
2715    #[prost(string, tag = "8")]
2716    pub services_secondary_range_name: ::prost::alloc::string::String,
2717    /// The IP address range for the cluster pod IPs. If this field is set, then
2718    /// `cluster.cluster_ipv4_cidr` must be left blank.
2719    ///
2720    /// This field is only applicable when `use_ip_aliases` is true.
2721    ///
2722    /// Set to blank to have a range chosen with the default size.
2723    ///
2724    /// Set to /netmask (e.g. `/14`) to have a range chosen with a specific
2725    /// netmask.
2726    ///
2727    /// Set to a
2728    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
2729    /// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
2730    /// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
2731    /// to use.
2732    #[prost(string, tag = "9")]
2733    pub cluster_ipv4_cidr_block: ::prost::alloc::string::String,
2734    /// The IP address range of the instance IPs in this cluster.
2735    ///
2736    /// This is applicable only if `create_subnetwork` is true.
2737    ///
2738    /// Set to blank to have a range chosen with the default size.
2739    ///
2740    /// Set to /netmask (e.g. `/14`) to have a range chosen with a specific
2741    /// netmask.
2742    ///
2743    /// Set to a
2744    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
2745    /// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
2746    /// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
2747    /// to use.
2748    #[prost(string, tag = "10")]
2749    pub node_ipv4_cidr_block: ::prost::alloc::string::String,
2750    /// The IP address range of the services IPs in this cluster. If blank, a range
2751    /// will be automatically chosen with the default size.
2752    ///
2753    /// This field is only applicable when `use_ip_aliases` is true.
2754    ///
2755    /// Set to blank to have a range chosen with the default size.
2756    ///
2757    /// Set to /netmask (e.g. `/14`) to have a range chosen with a specific
2758    /// netmask.
2759    ///
2760    /// Set to a
2761    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
2762    /// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
2763    /// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
2764    /// to use.
2765    #[prost(string, tag = "11")]
2766    pub services_ipv4_cidr_block: ::prost::alloc::string::String,
2767    /// The IP address range of the Cloud TPUs in this cluster. If unspecified, a
2768    /// range will be automatically chosen with the default size.
2769    ///
2770    /// This field is only applicable when `use_ip_aliases` is true.
2771    ///
2772    /// If unspecified, the range will use the default size.
2773    ///
2774    /// Set to /netmask (e.g. `/14`) to have a range chosen with a specific
2775    /// netmask.
2776    ///
2777    /// Set to a
2778    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
2779    /// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
2780    /// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
2781    /// to use.
2782    ///
2783    /// This field is deprecated due to the deprecation of 2VM TPU. The end of life
2784    /// date for 2VM TPU is 2025-04-25.
2785    #[deprecated]
2786    #[prost(string, tag = "13")]
2787    pub tpu_ipv4_cidr_block: ::prost::alloc::string::String,
2788    /// Whether routes will be used for pod IPs in the cluster.
2789    /// This is used in conjunction with use_ip_aliases. It cannot be true if
2790    /// use_ip_aliases is true. If both use_ip_aliases and use_routes are false,
2791    /// then the server picks the default IP allocation mode
2792    #[prost(bool, tag = "15")]
2793    pub use_routes: bool,
2794    /// The IP stack type of the cluster
2795    #[prost(enumeration = "StackType", tag = "16")]
2796    pub stack_type: i32,
2797    /// The ipv6 access type (internal or external) when create_subnetwork is true
2798    #[prost(enumeration = "IPv6AccessType", tag = "17")]
2799    pub ipv6_access_type: i32,
2800    /// \[PRIVATE FIELD\]
2801    /// Pod CIDR size overprovisioning config for the cluster.
2802    ///
2803    /// Pod CIDR size per node depends on max_pods_per_node. By default, the value
2804    /// of max_pods_per_node is doubled and then rounded off to next power of 2 to
2805    /// get the size of pod CIDR block per node.
2806    /// Example: max_pods_per_node of 30 would result in 64 IPs (/26).
2807    ///
2808    /// This config can disable the doubling of IPs (we still round off to next
2809    /// power of 2)
2810    /// Example: max_pods_per_node of 30 will result in 32 IPs (/27) when
2811    /// overprovisioning is disabled.
2812    #[prost(message, optional, tag = "21")]
2813    pub pod_cidr_overprovision_config: ::core::option::Option<
2814        PodCidrOverprovisionConfig,
2815    >,
2816    /// Output only. The subnet's IPv6 CIDR block used by nodes and pods.
2817    #[prost(string, tag = "22")]
2818    pub subnet_ipv6_cidr_block: ::prost::alloc::string::String,
2819    /// Output only. The services IPv6 CIDR block for the cluster.
2820    #[prost(string, tag = "23")]
2821    pub services_ipv6_cidr_block: ::prost::alloc::string::String,
2822    /// Output only. The additional pod ranges that are added to the cluster.
2823    /// These pod ranges can be used by new node pools to allocate pod IPs
2824    /// automatically. Once the range is removed it will not show up in
2825    /// IPAllocationPolicy.
2826    #[prost(message, optional, tag = "24")]
2827    pub additional_pod_ranges_config: ::core::option::Option<AdditionalPodRangesConfig>,
2828    /// Output only. The utilization of the cluster default IPv4 range for the
2829    /// pod. The ratio is Usage/\[Total number of IPs in the secondary range\],
2830    /// Usage=numNodes*numZones*podIPsPerNode.
2831    #[prost(double, tag = "25")]
2832    pub default_pod_ipv4_range_utilization: f64,
2833    /// Output only. The additional IP ranges that are added to the cluster.
2834    /// These IP ranges can be used by new node pools to allocate node and pod IPs
2835    /// automatically.
2836    /// Each AdditionalIPRangesConfig corresponds to a single subnetwork.
2837    /// Once a range is removed it will not show up in IPAllocationPolicy.
2838    #[prost(message, repeated, tag = "29")]
2839    pub additional_ip_ranges_configs: ::prost::alloc::vec::Vec<AdditionalIpRangesConfig>,
2840    /// Optional. AutoIpamConfig contains all information related to Auto IPAM
2841    #[prost(message, optional, tag = "30")]
2842    pub auto_ipam_config: ::core::option::Option<AutoIpamConfig>,
2843    /// Cluster-level network tier configuration is used to determine the default
2844    /// network tier for external IP addresses on cluster resources, such as node
2845    /// pools and load balancers.
2846    #[prost(message, optional, tag = "31")]
2847    pub network_tier_config: ::core::option::Option<NetworkTierConfig>,
2848}
2849/// A Google Kubernetes Engine cluster.
2850#[derive(Clone, PartialEq, ::prost::Message)]
2851pub struct Cluster {
2852    /// The name of this cluster. The name must be unique within this project
2853    /// and location (e.g. zone or region), and can be up to 40 characters with
2854    /// the following restrictions:
2855    ///
2856    /// * Lowercase letters, numbers, and hyphens only.
2857    /// * Must start with a letter.
2858    /// * Must end with a number or a letter.
2859    #[prost(string, tag = "1")]
2860    pub name: ::prost::alloc::string::String,
2861    /// An optional description of this cluster.
2862    #[prost(string, tag = "2")]
2863    pub description: ::prost::alloc::string::String,
2864    /// The number of nodes to create in this cluster. You must ensure that your
2865    /// Compute Engine [resource
2866    /// quota](<https://cloud.google.com/compute/quotas>)
2867    /// is sufficient for this number of instances. You must also have available
2868    /// firewall and routes quota.
2869    /// For requests, this field should only be used in lieu of a
2870    /// "node_pool" object, since this configuration (along with the
2871    /// "node_config") will be used to create a "NodePool" object with an
2872    /// auto-generated name. Do not use this and a node_pool at the same time.
2873    ///
2874    /// This field is deprecated, use node_pool.initial_node_count instead.
2875    #[deprecated]
2876    #[prost(int32, tag = "3")]
2877    pub initial_node_count: i32,
2878    /// Parameters used in creating the cluster's nodes.
2879    /// For requests, this field should only be used in lieu of a
2880    /// "node_pool" object, since this configuration (along with the
2881    /// "initial_node_count") will be used to create a "NodePool" object with an
2882    /// auto-generated name. Do not use this and a node_pool at the same time.
2883    /// For responses, this field will be populated with the node configuration of
2884    /// the first node pool. (For configuration of each node pool, see
2885    /// `node_pool.config`)
2886    ///
2887    /// If unspecified, the defaults are used.
2888    /// This field is deprecated, use node_pool.config instead.
2889    #[deprecated]
2890    #[prost(message, optional, tag = "4")]
2891    pub node_config: ::core::option::Option<NodeConfig>,
2892    /// The authentication information for accessing the master endpoint.
2893    /// If unspecified, the defaults are used:
2894    /// For clusters before v1.12, if master_auth is unspecified, `username` will
2895    /// be set to "admin", a random password will be generated, and a client
2896    /// certificate will be issued.
2897    #[prost(message, optional, tag = "5")]
2898    pub master_auth: ::core::option::Option<MasterAuth>,
2899    /// The logging service the cluster should use to write logs.
2900    /// Currently available options:
2901    ///
2902    /// * `logging.googleapis.com/kubernetes` - The Cloud Logging
2903    ///   service with a Kubernetes-native resource model
2904    /// * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
2905    ///   available as of GKE 1.15).
2906    /// * `none` - no logs will be exported from the cluster.
2907    ///
2908    /// If left as an empty string,`logging.googleapis.com/kubernetes` will be
2909    /// used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
2910    #[prost(string, tag = "6")]
2911    pub logging_service: ::prost::alloc::string::String,
2912    /// The monitoring service the cluster should use to write metrics.
2913    /// Currently available options:
2914    ///
2915    /// * `monitoring.googleapis.com/kubernetes` - The Cloud Monitoring
2916    ///   service with a Kubernetes-native resource model
2917    /// * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
2918    ///   longer available as of GKE 1.15).
2919    /// * `none` - No metrics will be exported from the cluster.
2920    ///
2921    /// If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
2922    /// used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
2923    #[prost(string, tag = "7")]
2924    pub monitoring_service: ::prost::alloc::string::String,
2925    /// The name of the Google Compute Engine
2926    /// [network](<https://cloud.google.com/compute/docs/networks-and-firewalls#networks>)
2927    /// to which the cluster is connected. If left unspecified, the `default`
2928    /// network will be used.
2929    #[prost(string, tag = "8")]
2930    pub network: ::prost::alloc::string::String,
2931    /// The IP address range of the container pods in this cluster, in
2932    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
2933    /// notation (e.g. `10.96.0.0/14`). Leave blank to have
2934    /// one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
2935    #[prost(string, tag = "9")]
2936    pub cluster_ipv4_cidr: ::prost::alloc::string::String,
2937    /// Configurations for the various addons available to run in the cluster.
2938    #[prost(message, optional, tag = "10")]
2939    pub addons_config: ::core::option::Option<AddonsConfig>,
2940    /// The name of the Google Compute Engine
2941    /// [subnetwork](<https://cloud.google.com/compute/docs/subnetworks>)
2942    /// to which the cluster is connected.
2943    #[prost(string, tag = "11")]
2944    pub subnetwork: ::prost::alloc::string::String,
2945    /// The node pools associated with this cluster.
2946    /// This field should not be set if "node_config" or "initial_node_count" are
2947    /// specified.
2948    #[prost(message, repeated, tag = "12")]
2949    pub node_pools: ::prost::alloc::vec::Vec<NodePool>,
2950    /// The list of Google Compute Engine
2951    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
2952    /// in which the cluster's nodes should be located.
2953    ///
2954    /// This field provides a default value if
2955    /// [NodePool.Locations](<https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations>)
2956    /// are not specified during node pool creation.
2957    ///
2958    /// Warning: changing cluster locations will update the
2959    /// [NodePool.Locations](<https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations>)
2960    /// of all node pools and will result in nodes being added and/or removed.
2961    #[prost(string, repeated, tag = "13")]
2962    pub locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2963    /// Kubernetes alpha features are enabled on this cluster. This includes alpha
2964    /// API groups (e.g. v1alpha1) and features that may not be production ready in
2965    /// the kubernetes version of the master and nodes.
2966    /// The cluster has no SLA for uptime and master/node upgrades are disabled.
2967    /// Alpha enabled clusters are automatically deleted thirty days after
2968    /// creation.
2969    #[prost(bool, tag = "14")]
2970    pub enable_kubernetes_alpha: bool,
2971    /// The list of user specified Kubernetes feature gates.
2972    /// Each string represents the activation status of a feature gate (e.g.
2973    /// "featureX=true" or "featureX=false")
2974    #[prost(string, repeated, tag = "160")]
2975    pub alpha_cluster_feature_gates: ::prost::alloc::vec::Vec<
2976        ::prost::alloc::string::String,
2977    >,
2978    /// The resource labels for the cluster to use to annotate any related
2979    /// Google Compute Engine resources.
2980    #[prost(map = "string, string", tag = "15")]
2981    pub resource_labels: ::std::collections::HashMap<
2982        ::prost::alloc::string::String,
2983        ::prost::alloc::string::String,
2984    >,
2985    /// The fingerprint of the set of labels for this cluster.
2986    #[prost(string, tag = "16")]
2987    pub label_fingerprint: ::prost::alloc::string::String,
2988    /// Configuration for the legacy ABAC authorization mode.
2989    #[prost(message, optional, tag = "18")]
2990    pub legacy_abac: ::core::option::Option<LegacyAbac>,
2991    /// Configuration options for the NetworkPolicy feature.
2992    #[prost(message, optional, tag = "19")]
2993    pub network_policy: ::core::option::Option<NetworkPolicy>,
2994    /// Configuration for cluster IP allocation.
2995    #[prost(message, optional, tag = "20")]
2996    pub ip_allocation_policy: ::core::option::Option<IpAllocationPolicy>,
2997    /// The configuration options for master authorized networks feature.
2998    ///
2999    /// Deprecated: Use
3000    /// \[ControlPlaneEndpointsConfig.IPEndpointsConfig.authorized_networks_config\]\[google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.authorized_networks_config\]
3001    /// instead.
3002    #[deprecated]
3003    #[prost(message, optional, tag = "22")]
3004    pub master_authorized_networks_config: ::core::option::Option<
3005        MasterAuthorizedNetworksConfig,
3006    >,
3007    /// Configure the maintenance policy for this cluster.
3008    #[prost(message, optional, tag = "23")]
3009    pub maintenance_policy: ::core::option::Option<MaintenancePolicy>,
3010    /// Configuration for Binary Authorization.
3011    #[prost(message, optional, tag = "24")]
3012    pub binary_authorization: ::core::option::Option<BinaryAuthorization>,
3013    /// Cluster-level autoscaling configuration.
3014    #[prost(message, optional, tag = "26")]
3015    pub autoscaling: ::core::option::Option<ClusterAutoscaling>,
3016    /// Configuration for cluster networking.
3017    #[prost(message, optional, tag = "27")]
3018    pub network_config: ::core::option::Option<NetworkConfig>,
3019    /// The default constraint on the maximum number of pods that can be run
3020    /// simultaneously on a node in the node pool of this cluster. Only honored
3021    /// if cluster created with IP Alias support.
3022    #[prost(message, optional, tag = "30")]
3023    pub default_max_pods_constraint: ::core::option::Option<MaxPodsConstraint>,
3024    /// Configuration for exporting resource usages. Resource usage export is
3025    /// disabled when this config is unspecified.
3026    #[prost(message, optional, tag = "33")]
3027    pub resource_usage_export_config: ::core::option::Option<ResourceUsageExportConfig>,
3028    /// Configuration controlling RBAC group membership information.
3029    #[prost(message, optional, tag = "34")]
3030    pub authenticator_groups_config: ::core::option::Option<AuthenticatorGroupsConfig>,
3031    /// Configuration for private cluster.
3032    #[prost(message, optional, tag = "37")]
3033    pub private_cluster_config: ::core::option::Option<PrivateClusterConfig>,
3034    /// Configuration of etcd encryption.
3035    #[prost(message, optional, tag = "38")]
3036    pub database_encryption: ::core::option::Option<DatabaseEncryption>,
3037    /// Cluster-level Vertical Pod Autoscaling configuration.
3038    #[prost(message, optional, tag = "39")]
3039    pub vertical_pod_autoscaling: ::core::option::Option<VerticalPodAutoscaling>,
3040    /// Shielded Nodes configuration.
3041    #[prost(message, optional, tag = "40")]
3042    pub shielded_nodes: ::core::option::Option<ShieldedNodes>,
3043    /// Release channel configuration. If left unspecified on cluster creation and
3044    /// a version is specified, the cluster is enrolled in the most mature release
3045    /// channel where the version is available (first checking STABLE, then
3046    /// REGULAR, and finally RAPID). Otherwise, if no release channel
3047    /// configuration and no version is specified, the cluster is enrolled in the
3048    /// REGULAR channel with its default version.
3049    #[prost(message, optional, tag = "41")]
3050    pub release_channel: ::core::option::Option<ReleaseChannel>,
3051    /// Configuration for the use of Kubernetes Service Accounts in IAM policies.
3052    #[prost(message, optional, tag = "43")]
3053    pub workload_identity_config: ::core::option::Option<WorkloadIdentityConfig>,
3054    /// Configuration for issuance of mTLS keys and certificates to Kubernetes
3055    /// pods.
3056    #[prost(message, optional, tag = "67")]
3057    pub mesh_certificates: ::core::option::Option<MeshCertificates>,
3058    /// Configuration for the fine-grained cost management feature.
3059    #[prost(message, optional, tag = "45")]
3060    pub cost_management_config: ::core::option::Option<CostManagementConfig>,
3061    /// Notification configuration of the cluster.
3062    #[prost(message, optional, tag = "49")]
3063    pub notification_config: ::core::option::Option<NotificationConfig>,
3064    /// Configuration of Confidential Nodes.
3065    /// All the nodes in the cluster will be Confidential VM once enabled.
3066    #[prost(message, optional, tag = "50")]
3067    pub confidential_nodes: ::core::option::Option<ConfidentialNodes>,
3068    /// Configuration for Identity Service component.
3069    #[prost(message, optional, tag = "54")]
3070    pub identity_service_config: ::core::option::Option<IdentityServiceConfig>,
3071    /// Output only. Server-defined URL for the resource.
3072    #[prost(string, tag = "100")]
3073    pub self_link: ::prost::alloc::string::String,
3074    /// Output only. The name of the Google Compute Engine
3075    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
3076    /// in which the cluster resides. This field is deprecated, use location
3077    /// instead.
3078    #[deprecated]
3079    #[prost(string, tag = "101")]
3080    pub zone: ::prost::alloc::string::String,
3081    /// Output only. The IP address of this cluster's master endpoint.
3082    /// The endpoint can be accessed from the internet at
3083    /// `<https://username:password@endpoint/`.>
3084    ///
3085    /// See the `masterAuth` property of this resource for username and
3086    /// password information.
3087    #[prost(string, tag = "102")]
3088    pub endpoint: ::prost::alloc::string::String,
3089    /// The initial Kubernetes version for this cluster.  Valid versions are those
3090    /// found in validMasterVersions returned by getServerConfig.  The version can
3091    /// be upgraded over time; such upgrades are reflected in
3092    /// currentMasterVersion and currentNodeVersion.
3093    ///
3094    /// Users may specify either explicit versions offered by
3095    /// Kubernetes Engine or version aliases, which have the following behavior:
3096    ///
3097    /// * "latest": picks the highest valid Kubernetes version
3098    /// * "1.X": picks the highest valid patch+gke.N patch in the 1.X version
3099    /// * "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
3100    /// * "1.X.Y-gke.N": picks an explicit Kubernetes version
3101    /// * "","-": picks the default Kubernetes version
3102    #[prost(string, tag = "103")]
3103    pub initial_cluster_version: ::prost::alloc::string::String,
3104    /// Output only. The current software version of the master endpoint.
3105    #[prost(string, tag = "104")]
3106    pub current_master_version: ::prost::alloc::string::String,
3107    /// Output only. Deprecated, use
3108    /// [NodePools.version](<https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools>)
3109    /// instead. The current version of the node software components. If they are
3110    /// currently at multiple versions because they're in the process of being
3111    /// upgraded, this reflects the minimum version of all nodes.
3112    #[deprecated]
3113    #[prost(string, tag = "105")]
3114    pub current_node_version: ::prost::alloc::string::String,
3115    /// Output only. The time the cluster was created, in
3116    /// [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
3117    #[prost(string, tag = "106")]
3118    pub create_time: ::prost::alloc::string::String,
3119    /// Output only. The current status of this cluster.
3120    #[prost(enumeration = "cluster::Status", tag = "107")]
3121    pub status: i32,
3122    /// Output only. Deprecated. Use conditions instead.
3123    /// Additional information about the current status of this
3124    /// cluster, if available.
3125    #[deprecated]
3126    #[prost(string, tag = "108")]
3127    pub status_message: ::prost::alloc::string::String,
3128    /// Output only. The size of the address space on each node for hosting
3129    /// containers. This is provisioned from within the `container_ipv4_cidr`
3130    /// range. This field will only be set when cluster is in route-based network
3131    /// mode.
3132    #[prost(int32, tag = "109")]
3133    pub node_ipv4_cidr_size: i32,
3134    /// Output only. The IP address range of the Kubernetes services in
3135    /// this cluster, in
3136    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
3137    /// notation (e.g. `1.2.3.4/29`). Service addresses are
3138    /// typically put in the last `/16` from the container CIDR.
3139    #[prost(string, tag = "110")]
3140    pub services_ipv4_cidr: ::prost::alloc::string::String,
3141    /// Output only. Deprecated. Use node_pools.instance_group_urls.
3142    #[deprecated]
3143    #[prost(string, repeated, tag = "111")]
3144    pub instance_group_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3145    /// Output only. The number of nodes currently in the cluster. Deprecated.
3146    /// Call Kubernetes API directly to retrieve node information.
3147    #[deprecated]
3148    #[prost(int32, tag = "112")]
3149    pub current_node_count: i32,
3150    /// Output only. The time the cluster will be automatically
3151    /// deleted in [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
3152    #[prost(string, tag = "113")]
3153    pub expire_time: ::prost::alloc::string::String,
3154    /// Output only. The name of the Google Compute Engine
3155    /// [zone](<https://cloud.google.com/compute/docs/regions-zones/regions-zones#available>)
3156    /// or
3157    /// [region](<https://cloud.google.com/compute/docs/regions-zones/regions-zones#available>)
3158    /// in which the cluster resides.
3159    #[prost(string, tag = "114")]
3160    pub location: ::prost::alloc::string::String,
3161    /// Enable the ability to use Cloud TPUs in this cluster.
3162    /// This field is deprecated due to the deprecation of 2VM TPU. The end of life
3163    /// date for 2VM TPU is 2025-04-25.
3164    #[deprecated]
3165    #[prost(bool, tag = "115")]
3166    pub enable_tpu: bool,
3167    /// Output only. The IP address range of the Cloud TPUs in this cluster, in
3168    /// [CIDR](<https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing>)
3169    /// notation (e.g. `1.2.3.4/29`).
3170    /// This field is deprecated due to the deprecation of 2VM TPU. The end of life
3171    /// date for 2VM TPU is 2025-04-25.
3172    #[deprecated]
3173    #[prost(string, tag = "116")]
3174    pub tpu_ipv4_cidr_block: ::prost::alloc::string::String,
3175    /// Which conditions caused the current cluster state.
3176    #[prost(message, repeated, tag = "118")]
3177    pub conditions: ::prost::alloc::vec::Vec<StatusCondition>,
3178    /// Autopilot configuration for the cluster.
3179    #[prost(message, optional, tag = "128")]
3180    pub autopilot: ::core::option::Option<Autopilot>,
3181    /// Output only. Unique id for the cluster.
3182    #[prost(string, tag = "129")]
3183    pub id: ::prost::alloc::string::String,
3184    /// Default NodePool settings for the entire cluster. These settings are
3185    /// overridden if specified on the specific NodePool object.
3186    #[prost(message, optional, tag = "131")]
3187    pub node_pool_defaults: ::core::option::Option<NodePoolDefaults>,
3188    /// Logging configuration for the cluster.
3189    #[prost(message, optional, tag = "132")]
3190    pub logging_config: ::core::option::Option<LoggingConfig>,
3191    /// Monitoring configuration for the cluster.
3192    #[prost(message, optional, tag = "133")]
3193    pub monitoring_config: ::core::option::Option<MonitoringConfig>,
3194    /// Node pool configs that apply to all auto-provisioned node pools
3195    /// in autopilot clusters and node auto-provisioning enabled clusters.
3196    #[prost(message, optional, tag = "136")]
3197    pub node_pool_auto_config: ::core::option::Option<NodePoolAutoConfig>,
3198    /// The config for pod autoscaling.
3199    #[prost(message, optional, tag = "138")]
3200    pub pod_autoscaling: ::core::option::Option<PodAutoscaling>,
3201    /// This checksum is computed by the server based on the value of cluster
3202    /// fields, and may be sent on update requests to ensure the client has an
3203    /// up-to-date value before proceeding.
3204    #[prost(string, tag = "139")]
3205    pub etag: ::prost::alloc::string::String,
3206    /// Fleet information for the cluster.
3207    #[prost(message, optional, tag = "140")]
3208    pub fleet: ::core::option::Option<Fleet>,
3209    /// Enable/Disable Security Posture API features for the cluster.
3210    #[prost(message, optional, tag = "145")]
3211    pub security_posture_config: ::core::option::Option<SecurityPostureConfig>,
3212    /// Configuration for all cluster's control plane endpoints.
3213    #[prost(message, optional, tag = "146")]
3214    pub control_plane_endpoints_config: ::core::option::Option<
3215        ControlPlaneEndpointsConfig,
3216    >,
3217    /// Beta APIs Config
3218    #[prost(message, optional, tag = "143")]
3219    pub enable_k8s_beta_apis: ::core::option::Option<K8sBetaApiConfig>,
3220    /// GKE Enterprise Configuration.
3221    ///
3222    /// Deprecated: GKE Enterprise features are now available without an Enterprise
3223    /// tier.
3224    #[deprecated]
3225    #[prost(message, optional, tag = "149")]
3226    pub enterprise_config: ::core::option::Option<EnterpriseConfig>,
3227    /// Secret CSI driver configuration.
3228    #[prost(message, optional, tag = "150")]
3229    pub secret_manager_config: ::core::option::Option<SecretManagerConfig>,
3230    /// Enable/Disable Compliance Posture features for the cluster.
3231    #[prost(message, optional, tag = "151")]
3232    pub compliance_posture_config: ::core::option::Option<CompliancePostureConfig>,
3233    /// Output only. Reserved for future use.
3234    #[prost(bool, optional, tag = "152")]
3235    pub satisfies_pzs: ::core::option::Option<bool>,
3236    /// Output only. Reserved for future use.
3237    #[prost(bool, optional, tag = "153")]
3238    pub satisfies_pzi: ::core::option::Option<bool>,
3239    /// The Custom keys configuration for the cluster.
3240    #[prost(message, optional, tag = "154")]
3241    pub user_managed_keys_config: ::core::option::Option<UserManagedKeysConfig>,
3242    /// RBACBindingConfig allows user to restrict ClusterRoleBindings an
3243    /// RoleBindings that can be created.
3244    #[prost(message, optional, tag = "156")]
3245    pub rbac_binding_config: ::core::option::Option<RbacBindingConfig>,
3246    /// Configuration for GKE auto upgrades.
3247    #[prost(message, optional, tag = "163")]
3248    pub gke_auto_upgrade_config: ::core::option::Option<GkeAutoUpgradeConfig>,
3249    /// Configuration for limiting anonymous access to all endpoints except the
3250    /// health checks.
3251    #[prost(message, optional, tag = "164")]
3252    pub anonymous_authentication_config: ::core::option::Option<
3253        AnonymousAuthenticationConfig,
3254    >,
3255    /// Configuration for Managed OpenTelemetry pipeline.
3256    #[prost(message, optional, tag = "168")]
3257    pub managed_opentelemetry_config: ::core::option::Option<ManagedOpenTelemetryConfig>,
3258}
3259/// Nested message and enum types in `Cluster`.
3260pub mod cluster {
3261    /// The current status of the cluster.
3262    #[derive(
3263        Clone,
3264        Copy,
3265        Debug,
3266        PartialEq,
3267        Eq,
3268        Hash,
3269        PartialOrd,
3270        Ord,
3271        ::prost::Enumeration
3272    )]
3273    #[repr(i32)]
3274    pub enum Status {
3275        /// Not set.
3276        Unspecified = 0,
3277        /// The PROVISIONING state indicates the cluster is being created.
3278        Provisioning = 1,
3279        /// The RUNNING state indicates the cluster has been created and is fully
3280        /// usable.
3281        Running = 2,
3282        /// The RECONCILING state indicates that some work is actively being done on
3283        /// the cluster, such as upgrading the master or node software. Details can
3284        /// be found in the `statusMessage` field.
3285        Reconciling = 3,
3286        /// The STOPPING state indicates the cluster is being deleted.
3287        Stopping = 4,
3288        /// The ERROR state indicates the cluster is unusable. It will be
3289        /// automatically deleted. Details can be found in the `statusMessage` field.
3290        Error = 5,
3291        /// The DEGRADED state indicates the cluster requires user action to restore
3292        /// full functionality. Details can be found in the `statusMessage` field.
3293        Degraded = 6,
3294    }
3295    impl Status {
3296        /// String value of the enum field names used in the ProtoBuf definition.
3297        ///
3298        /// The values are not transformed in any way and thus are considered stable
3299        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3300        pub fn as_str_name(&self) -> &'static str {
3301            match self {
3302                Self::Unspecified => "STATUS_UNSPECIFIED",
3303                Self::Provisioning => "PROVISIONING",
3304                Self::Running => "RUNNING",
3305                Self::Reconciling => "RECONCILING",
3306                Self::Stopping => "STOPPING",
3307                Self::Error => "ERROR",
3308                Self::Degraded => "DEGRADED",
3309            }
3310        }
3311        /// Creates an enum from field names used in the ProtoBuf definition.
3312        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3313            match value {
3314                "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
3315                "PROVISIONING" => Some(Self::Provisioning),
3316                "RUNNING" => Some(Self::Running),
3317                "RECONCILING" => Some(Self::Reconciling),
3318                "STOPPING" => Some(Self::Stopping),
3319                "ERROR" => Some(Self::Error),
3320                "DEGRADED" => Some(Self::Degraded),
3321                _ => None,
3322            }
3323        }
3324    }
3325}
3326/// RBACBindingConfig allows user to restrict ClusterRoleBindings an RoleBindings
3327/// that can be created.
3328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3329pub struct RbacBindingConfig {
3330    /// Setting this to true will allow any ClusterRoleBinding and RoleBinding
3331    /// with subjets system:anonymous or system:unauthenticated.
3332    #[prost(bool, optional, tag = "1")]
3333    pub enable_insecure_binding_system_unauthenticated: ::core::option::Option<bool>,
3334    /// Setting this to true will allow any ClusterRoleBinding and RoleBinding
3335    /// with subjects system:authenticated.
3336    #[prost(bool, optional, tag = "2")]
3337    pub enable_insecure_binding_system_authenticated: ::core::option::Option<bool>,
3338}
3339/// UserManagedKeysConfig holds the resource address to Keys which are used
3340/// for signing certs and token that are used for communication within cluster.
3341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3342pub struct UserManagedKeysConfig {
3343    /// The Certificate Authority Service caPool to use for the cluster CA in this
3344    /// cluster.
3345    #[prost(string, tag = "10")]
3346    pub cluster_ca: ::prost::alloc::string::String,
3347    /// Resource path of the Certificate Authority Service caPool to use for the
3348    /// etcd API CA in this cluster.
3349    #[prost(string, tag = "11")]
3350    pub etcd_api_ca: ::prost::alloc::string::String,
3351    /// Resource path of the Certificate Authority Service caPool to use for the
3352    /// etcd peer CA in this cluster.
3353    #[prost(string, tag = "12")]
3354    pub etcd_peer_ca: ::prost::alloc::string::String,
3355    /// The Cloud KMS cryptoKeyVersions to use for signing service account JWTs
3356    /// issued by this cluster.
3357    ///
3358    /// Format:
3359    /// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
3360    #[prost(string, repeated, tag = "13")]
3361    pub service_account_signing_keys: ::prost::alloc::vec::Vec<
3362        ::prost::alloc::string::String,
3363    >,
3364    /// The Cloud KMS cryptoKeyVersions to use for verifying service account JWTs
3365    /// issued by this cluster.
3366    ///
3367    /// Format:
3368    /// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
3369    #[prost(string, repeated, tag = "14")]
3370    pub service_account_verification_keys: ::prost::alloc::vec::Vec<
3371        ::prost::alloc::string::String,
3372    >,
3373    /// The Certificate Authority Service caPool to use for the aggregation CA in
3374    /// this cluster.
3375    #[prost(string, tag = "15")]
3376    pub aggregation_ca: ::prost::alloc::string::String,
3377    /// The Cloud KMS cryptoKey to use for Confidential Hyperdisk on the control
3378    /// plane nodes.
3379    #[prost(string, tag = "16")]
3380    pub control_plane_disk_encryption_key: ::prost::alloc::string::String,
3381    /// Output only. All of the versions of the Cloud KMS cryptoKey that are used
3382    /// by Confidential Hyperdisks on the control plane nodes.
3383    #[prost(string, repeated, tag = "18")]
3384    pub control_plane_disk_encryption_key_versions: ::prost::alloc::vec::Vec<
3385        ::prost::alloc::string::String,
3386    >,
3387    /// Resource path of the Cloud KMS cryptoKey to use for encryption of internal
3388    /// etcd backups.
3389    #[prost(string, tag = "17")]
3390    pub gkeops_etcd_backup_encryption_key: ::prost::alloc::string::String,
3391}
3392/// AnonymousAuthenticationConfig defines the settings needed to limit endpoints
3393/// that allow anonymous authentication.
3394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3395pub struct AnonymousAuthenticationConfig {
3396    /// Defines the mode of limiting anonymous access in the cluster.
3397    #[prost(enumeration = "anonymous_authentication_config::Mode", tag = "1")]
3398    pub mode: i32,
3399}
3400/// Nested message and enum types in `AnonymousAuthenticationConfig`.
3401pub mod anonymous_authentication_config {
3402    /// Mode defines the mode of anonymous authentication
3403    /// allowed in the cluster.
3404    #[derive(
3405        Clone,
3406        Copy,
3407        Debug,
3408        PartialEq,
3409        Eq,
3410        Hash,
3411        PartialOrd,
3412        Ord,
3413        ::prost::Enumeration
3414    )]
3415    #[repr(i32)]
3416    pub enum Mode {
3417        /// Default value not specified.
3418        Unspecified = 0,
3419        /// Anonymous authentication is allowed for all endpoints.
3420        Enabled = 1,
3421        /// Anonymous authentication is allowed for only health check endpoints.
3422        Limited = 2,
3423    }
3424    impl Mode {
3425        /// String value of the enum field names used in the ProtoBuf definition.
3426        ///
3427        /// The values are not transformed in any way and thus are considered stable
3428        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3429        pub fn as_str_name(&self) -> &'static str {
3430            match self {
3431                Self::Unspecified => "MODE_UNSPECIFIED",
3432                Self::Enabled => "ENABLED",
3433                Self::Limited => "LIMITED",
3434            }
3435        }
3436        /// Creates an enum from field names used in the ProtoBuf definition.
3437        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3438            match value {
3439                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
3440                "ENABLED" => Some(Self::Enabled),
3441                "LIMITED" => Some(Self::Limited),
3442                _ => None,
3443            }
3444        }
3445    }
3446}
3447/// CompliancePostureConfig defines the settings needed to enable/disable
3448/// features for the Compliance Posture.
3449#[derive(Clone, PartialEq, ::prost::Message)]
3450pub struct CompliancePostureConfig {
3451    /// Defines the enablement mode for Compliance Posture.
3452    #[prost(enumeration = "compliance_posture_config::Mode", optional, tag = "1")]
3453    pub mode: ::core::option::Option<i32>,
3454    /// List of enabled compliance standards.
3455    #[prost(message, repeated, tag = "2")]
3456    pub compliance_standards: ::prost::alloc::vec::Vec<
3457        compliance_posture_config::ComplianceStandard,
3458    >,
3459}
3460/// Nested message and enum types in `CompliancePostureConfig`.
3461pub mod compliance_posture_config {
3462    /// Defines the details of a compliance standard.
3463    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3464    pub struct ComplianceStandard {
3465        /// Name of the compliance standard.
3466        #[prost(string, optional, tag = "1")]
3467        pub standard: ::core::option::Option<::prost::alloc::string::String>,
3468    }
3469    /// Mode defines enablement mode for Compliance Posture.
3470    #[derive(
3471        Clone,
3472        Copy,
3473        Debug,
3474        PartialEq,
3475        Eq,
3476        Hash,
3477        PartialOrd,
3478        Ord,
3479        ::prost::Enumeration
3480    )]
3481    #[repr(i32)]
3482    pub enum Mode {
3483        /// Default value not specified.
3484        Unspecified = 0,
3485        /// Disables Compliance Posture features on the cluster.
3486        Disabled = 1,
3487        /// Enables Compliance Posture features on the cluster.
3488        Enabled = 2,
3489    }
3490    impl Mode {
3491        /// String value of the enum field names used in the ProtoBuf definition.
3492        ///
3493        /// The values are not transformed in any way and thus are considered stable
3494        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3495        pub fn as_str_name(&self) -> &'static str {
3496            match self {
3497                Self::Unspecified => "MODE_UNSPECIFIED",
3498                Self::Disabled => "DISABLED",
3499                Self::Enabled => "ENABLED",
3500            }
3501        }
3502        /// Creates an enum from field names used in the ProtoBuf definition.
3503        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3504            match value {
3505                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
3506                "DISABLED" => Some(Self::Disabled),
3507                "ENABLED" => Some(Self::Enabled),
3508                _ => None,
3509            }
3510        }
3511    }
3512}
3513/// K8sBetaAPIConfig , configuration for beta APIs
3514#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3515pub struct K8sBetaApiConfig {
3516    /// Enabled k8s beta APIs.
3517    #[prost(string, repeated, tag = "1")]
3518    pub enabled_apis: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3519}
3520/// SecurityPostureConfig defines the flags needed to enable/disable features for
3521/// the Security Posture API.
3522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3523pub struct SecurityPostureConfig {
3524    /// Sets which mode to use for Security Posture features.
3525    #[prost(enumeration = "security_posture_config::Mode", optional, tag = "1")]
3526    pub mode: ::core::option::Option<i32>,
3527    /// Sets which mode to use for vulnerability scanning.
3528    #[prost(
3529        enumeration = "security_posture_config::VulnerabilityMode",
3530        optional,
3531        tag = "2"
3532    )]
3533    pub vulnerability_mode: ::core::option::Option<i32>,
3534}
3535/// Nested message and enum types in `SecurityPostureConfig`.
3536pub mod security_posture_config {
3537    /// Mode defines enablement mode for GKE Security posture features.
3538    #[derive(
3539        Clone,
3540        Copy,
3541        Debug,
3542        PartialEq,
3543        Eq,
3544        Hash,
3545        PartialOrd,
3546        Ord,
3547        ::prost::Enumeration
3548    )]
3549    #[repr(i32)]
3550    pub enum Mode {
3551        /// Default value not specified.
3552        Unspecified = 0,
3553        /// Disables Security Posture features on the cluster.
3554        Disabled = 1,
3555        /// Applies Security Posture features on the cluster.
3556        Basic = 2,
3557        /// Applies the Security Posture off cluster Enterprise level features.
3558        Enterprise = 3,
3559    }
3560    impl Mode {
3561        /// String value of the enum field names used in the ProtoBuf definition.
3562        ///
3563        /// The values are not transformed in any way and thus are considered stable
3564        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3565        pub fn as_str_name(&self) -> &'static str {
3566            match self {
3567                Self::Unspecified => "MODE_UNSPECIFIED",
3568                Self::Disabled => "DISABLED",
3569                Self::Basic => "BASIC",
3570                Self::Enterprise => "ENTERPRISE",
3571            }
3572        }
3573        /// Creates an enum from field names used in the ProtoBuf definition.
3574        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3575            match value {
3576                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
3577                "DISABLED" => Some(Self::Disabled),
3578                "BASIC" => Some(Self::Basic),
3579                "ENTERPRISE" => Some(Self::Enterprise),
3580                _ => None,
3581            }
3582        }
3583    }
3584    /// VulnerabilityMode defines enablement mode for vulnerability scanning.
3585    #[derive(
3586        Clone,
3587        Copy,
3588        Debug,
3589        PartialEq,
3590        Eq,
3591        Hash,
3592        PartialOrd,
3593        Ord,
3594        ::prost::Enumeration
3595    )]
3596    #[repr(i32)]
3597    pub enum VulnerabilityMode {
3598        /// Default value not specified.
3599        Unspecified = 0,
3600        /// Disables vulnerability scanning on the cluster.
3601        VulnerabilityDisabled = 1,
3602        /// Applies basic vulnerability scanning on the cluster.
3603        VulnerabilityBasic = 2,
3604        /// Applies the Security Posture's vulnerability on cluster Enterprise level
3605        /// features.
3606        VulnerabilityEnterprise = 3,
3607    }
3608    impl VulnerabilityMode {
3609        /// String value of the enum field names used in the ProtoBuf definition.
3610        ///
3611        /// The values are not transformed in any way and thus are considered stable
3612        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3613        pub fn as_str_name(&self) -> &'static str {
3614            match self {
3615                Self::Unspecified => "VULNERABILITY_MODE_UNSPECIFIED",
3616                Self::VulnerabilityDisabled => "VULNERABILITY_DISABLED",
3617                Self::VulnerabilityBasic => "VULNERABILITY_BASIC",
3618                Self::VulnerabilityEnterprise => "VULNERABILITY_ENTERPRISE",
3619            }
3620        }
3621        /// Creates an enum from field names used in the ProtoBuf definition.
3622        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3623            match value {
3624                "VULNERABILITY_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3625                "VULNERABILITY_DISABLED" => Some(Self::VulnerabilityDisabled),
3626                "VULNERABILITY_BASIC" => Some(Self::VulnerabilityBasic),
3627                "VULNERABILITY_ENTERPRISE" => Some(Self::VulnerabilityEnterprise),
3628                _ => None,
3629            }
3630        }
3631    }
3632}
3633/// Node pool configs that apply to all auto-provisioned node pools
3634/// in autopilot clusters and node auto-provisioning enabled clusters.
3635#[derive(Clone, PartialEq, ::prost::Message)]
3636pub struct NodePoolAutoConfig {
3637    /// The list of instance tags applied to all nodes. Tags are used to identify
3638    /// valid sources or targets for network firewalls and are specified by
3639    /// the client during cluster creation. Each tag within the list
3640    /// must comply with RFC1035.
3641    #[prost(message, optional, tag = "1")]
3642    pub network_tags: ::core::option::Option<NetworkTags>,
3643    /// Resource manager tag keys and values to be attached to the nodes
3644    /// for managing Compute Engine firewalls using Network Firewall Policies.
3645    #[prost(message, optional, tag = "2")]
3646    pub resource_manager_tags: ::core::option::Option<ResourceManagerTags>,
3647    /// NodeKubeletConfig controls the defaults for autoprovisioned node-pools.
3648    ///
3649    /// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
3650    #[prost(message, optional, tag = "3")]
3651    pub node_kubelet_config: ::core::option::Option<NodeKubeletConfig>,
3652    /// Output only. Configuration options for Linux nodes.
3653    #[prost(message, optional, tag = "4")]
3654    pub linux_node_config: ::core::option::Option<LinuxNodeConfig>,
3655}
3656/// Subset of Nodepool message that has defaults.
3657#[derive(Clone, PartialEq, ::prost::Message)]
3658pub struct NodePoolDefaults {
3659    /// Subset of NodeConfig message that has defaults.
3660    #[prost(message, optional, tag = "1")]
3661    pub node_config_defaults: ::core::option::Option<NodeConfigDefaults>,
3662}
3663/// Subset of NodeConfig message that has defaults.
3664#[derive(Clone, PartialEq, ::prost::Message)]
3665pub struct NodeConfigDefaults {
3666    /// GCFS (Google Container File System, also known as Riptide) options.
3667    #[prost(message, optional, tag = "1")]
3668    pub gcfs_config: ::core::option::Option<GcfsConfig>,
3669    /// Logging configuration for node pools.
3670    #[prost(message, optional, tag = "3")]
3671    pub logging_config: ::core::option::Option<NodePoolLoggingConfig>,
3672    /// Parameters for containerd customization.
3673    #[prost(message, optional, tag = "4")]
3674    pub containerd_config: ::core::option::Option<ContainerdConfig>,
3675    /// NodeKubeletConfig controls the defaults for new node-pools.
3676    ///
3677    /// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
3678    #[prost(message, optional, tag = "6")]
3679    pub node_kubelet_config: ::core::option::Option<NodeKubeletConfig>,
3680}
3681/// ClusterUpdate describes an update to the cluster. Exactly one update can
3682/// be applied to a cluster with each request, so at most one field can be
3683/// provided.
3684#[derive(Clone, PartialEq, ::prost::Message)]
3685pub struct ClusterUpdate {
3686    /// The Kubernetes version to change the nodes to (typically an
3687    /// upgrade).
3688    ///
3689    /// Users may specify either explicit versions offered by
3690    /// Kubernetes Engine or version aliases, which have the following behavior:
3691    ///
3692    /// * "latest": picks the highest valid Kubernetes version
3693    /// * "1.X": picks the highest valid patch+gke.N patch in the 1.X version
3694    /// * "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
3695    /// * "1.X.Y-gke.N": picks an explicit Kubernetes version
3696    /// * "-": picks the Kubernetes master version
3697    #[prost(string, tag = "4")]
3698    pub desired_node_version: ::prost::alloc::string::String,
3699    /// The monitoring service the cluster should use to write metrics.
3700    /// Currently available options:
3701    ///
3702    /// * `monitoring.googleapis.com/kubernetes` - The Cloud Monitoring
3703    ///   service with a Kubernetes-native resource model
3704    /// * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
3705    ///   longer available as of GKE 1.15).
3706    /// * `none` - No metrics will be exported from the cluster.
3707    ///
3708    /// If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
3709    /// used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
3710    #[prost(string, tag = "5")]
3711    pub desired_monitoring_service: ::prost::alloc::string::String,
3712    /// Configurations for the various addons available to run in the cluster.
3713    #[prost(message, optional, tag = "6")]
3714    pub desired_addons_config: ::core::option::Option<AddonsConfig>,
3715    /// The node pool to be upgraded. This field is mandatory if
3716    /// "desired_node_version", "desired_image_family" or
3717    /// "desired_node_pool_autoscaling" is specified and there is more than one
3718    /// node pool on the cluster.
3719    #[prost(string, tag = "7")]
3720    pub desired_node_pool_id: ::prost::alloc::string::String,
3721    /// The desired image type for the node pool.
3722    /// NOTE: Set the "desired_node_pool" field as well.
3723    #[prost(string, tag = "8")]
3724    pub desired_image_type: ::prost::alloc::string::String,
3725    /// Configuration of etcd encryption.
3726    #[prost(message, optional, tag = "46")]
3727    pub desired_database_encryption: ::core::option::Option<DatabaseEncryption>,
3728    /// Configuration for Workload Identity.
3729    #[prost(message, optional, tag = "47")]
3730    pub desired_workload_identity_config: ::core::option::Option<WorkloadIdentityConfig>,
3731    /// Configuration for issuance of mTLS keys and certificates to Kubernetes
3732    /// pods.
3733    #[prost(message, optional, tag = "67")]
3734    pub desired_mesh_certificates: ::core::option::Option<MeshCertificates>,
3735    /// Configuration for Shielded Nodes.
3736    #[prost(message, optional, tag = "48")]
3737    pub desired_shielded_nodes: ::core::option::Option<ShieldedNodes>,
3738    /// The desired configuration for the fine-grained cost management feature.
3739    #[prost(message, optional, tag = "49")]
3740    pub desired_cost_management_config: ::core::option::Option<CostManagementConfig>,
3741    /// DNSConfig contains clusterDNS config for this cluster.
3742    #[prost(message, optional, tag = "53")]
3743    pub desired_dns_config: ::core::option::Option<DnsConfig>,
3744    /// Autoscaler configuration for the node pool specified in
3745    /// desired_node_pool_id. If there is only one pool in the
3746    /// cluster and desired_node_pool_id is not provided then
3747    /// the change applies to that single node pool.
3748    #[prost(message, optional, tag = "9")]
3749    pub desired_node_pool_autoscaling: ::core::option::Option<NodePoolAutoscaling>,
3750    /// The desired list of Google Compute Engine
3751    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
3752    /// in which the cluster's nodes should be located.
3753    ///
3754    /// This list must always include the cluster's primary zone.
3755    ///
3756    /// Warning: changing cluster locations will update the locations of all node
3757    /// pools and will result in nodes being added and/or removed.
3758    #[prost(string, repeated, tag = "10")]
3759    pub desired_locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3760    /// The desired configuration options for master authorized networks feature.
3761    ///
3762    /// Deprecated: Use
3763    /// desired_control_plane_endpoints_config.ip_endpoints_config.authorized_networks_config
3764    /// instead.
3765    #[deprecated]
3766    #[prost(message, optional, tag = "12")]
3767    pub desired_master_authorized_networks_config: ::core::option::Option<
3768        MasterAuthorizedNetworksConfig,
3769    >,
3770    /// Cluster-level autoscaling configuration.
3771    #[prost(message, optional, tag = "15")]
3772    pub desired_cluster_autoscaling: ::core::option::Option<ClusterAutoscaling>,
3773    /// The desired configuration options for the Binary Authorization feature.
3774    #[prost(message, optional, tag = "16")]
3775    pub desired_binary_authorization: ::core::option::Option<BinaryAuthorization>,
3776    /// The logging service the cluster should use to write logs.
3777    /// Currently available options:
3778    ///
3779    /// * `logging.googleapis.com/kubernetes` - The Cloud Logging
3780    ///   service with a Kubernetes-native resource model
3781    /// * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
3782    ///   available as of GKE 1.15).
3783    /// * `none` - no logs will be exported from the cluster.
3784    ///
3785    /// If left as an empty string,`logging.googleapis.com/kubernetes` will be
3786    /// used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
3787    #[prost(string, tag = "19")]
3788    pub desired_logging_service: ::prost::alloc::string::String,
3789    /// The desired configuration for exporting resource usage.
3790    #[prost(message, optional, tag = "21")]
3791    pub desired_resource_usage_export_config: ::core::option::Option<
3792        ResourceUsageExportConfig,
3793    >,
3794    /// Cluster-level Vertical Pod Autoscaling configuration.
3795    #[prost(message, optional, tag = "22")]
3796    pub desired_vertical_pod_autoscaling: ::core::option::Option<VerticalPodAutoscaling>,
3797    /// The desired private cluster configuration. master_global_access_config is
3798    /// the only field that can be changed via this field.
3799    /// See also
3800    /// \[ClusterUpdate.desired_enable_private_endpoint\]\[google.container.v1.ClusterUpdate.desired_enable_private_endpoint\]
3801    /// for modifying other fields within
3802    /// \[PrivateClusterConfig\]\[google.container.v1.PrivateClusterConfig\].
3803    ///
3804    /// Deprecated: Use
3805    /// desired_control_plane_endpoints_config.ip_endpoints_config.global_access
3806    /// instead.
3807    #[deprecated]
3808    #[prost(message, optional, tag = "25")]
3809    pub desired_private_cluster_config: ::core::option::Option<PrivateClusterConfig>,
3810    /// The desired config of Intra-node visibility.
3811    #[prost(message, optional, tag = "26")]
3812    pub desired_intra_node_visibility_config: ::core::option::Option<
3813        IntraNodeVisibilityConfig,
3814    >,
3815    /// The desired status of whether to disable default sNAT for this cluster.
3816    #[prost(message, optional, tag = "28")]
3817    pub desired_default_snat_status: ::core::option::Option<DefaultSnatStatus>,
3818    /// The desired release channel configuration.
3819    #[prost(message, optional, tag = "31")]
3820    pub desired_release_channel: ::core::option::Option<ReleaseChannel>,
3821    /// The desired L4 Internal Load Balancer Subsetting configuration.
3822    #[prost(message, optional, tag = "39")]
3823    pub desired_l4ilb_subsetting_config: ::core::option::Option<IlbSubsettingConfig>,
3824    /// The desired datapath provider for the cluster.
3825    #[prost(enumeration = "DatapathProvider", tag = "50")]
3826    pub desired_datapath_provider: i32,
3827    /// The desired state of IPv6 connectivity to Google Services.
3828    #[prost(enumeration = "PrivateIPv6GoogleAccess", tag = "51")]
3829    pub desired_private_ipv6_google_access: i32,
3830    /// The desired notification configuration.
3831    #[prost(message, optional, tag = "55")]
3832    pub desired_notification_config: ::core::option::Option<NotificationConfig>,
3833    /// The desired authenticator groups config for the cluster.
3834    #[prost(message, optional, tag = "63")]
3835    pub desired_authenticator_groups_config: ::core::option::Option<
3836        AuthenticatorGroupsConfig,
3837    >,
3838    /// The desired logging configuration.
3839    #[prost(message, optional, tag = "64")]
3840    pub desired_logging_config: ::core::option::Option<LoggingConfig>,
3841    /// The desired monitoring configuration.
3842    #[prost(message, optional, tag = "65")]
3843    pub desired_monitoring_config: ::core::option::Option<MonitoringConfig>,
3844    /// The desired Identity Service component configuration.
3845    #[prost(message, optional, tag = "66")]
3846    pub desired_identity_service_config: ::core::option::Option<IdentityServiceConfig>,
3847    /// ServiceExternalIPsConfig specifies the config for the use of Services with
3848    /// ExternalIPs field.
3849    #[prost(message, optional, tag = "60")]
3850    pub desired_service_external_ips_config: ::core::option::Option<
3851        ServiceExternalIPsConfig,
3852    >,
3853    /// Enable/Disable private endpoint for the cluster's master.
3854    ///
3855    /// Deprecated: Use
3856    /// desired_control_plane_endpoints_config.ip_endpoints_config.enable_public_endpoint
3857    /// instead. Note that the value of enable_public_endpoint is reversed: if
3858    /// enable_private_endpoint is false, then enable_public_endpoint will be true.
3859    #[deprecated]
3860    #[prost(bool, optional, tag = "71")]
3861    pub desired_enable_private_endpoint: ::core::option::Option<bool>,
3862    /// Override the default setting of whether future created
3863    /// nodes have private IP addresses only, namely
3864    /// \[NetworkConfig.default_enable_private_nodes\]\[google.container.v1.NetworkConfig.default_enable_private_nodes\]
3865    #[prost(bool, optional, tag = "72")]
3866    pub desired_default_enable_private_nodes: ::core::option::Option<bool>,
3867    /// \[Control plane
3868    /// endpoints\]\[google.container.v1.Cluster.control_plane_endpoints_config\]
3869    /// configuration.
3870    #[prost(message, optional, tag = "73")]
3871    pub desired_control_plane_endpoints_config: ::core::option::Option<
3872        ControlPlaneEndpointsConfig,
3873    >,
3874    /// The Kubernetes version to change the master to.
3875    ///
3876    /// Users may specify either explicit versions offered by
3877    /// Kubernetes Engine or version aliases, which have the following behavior:
3878    ///
3879    /// * "latest": picks the highest valid Kubernetes version
3880    /// * "1.X": picks the highest valid patch+gke.N patch in the 1.X version
3881    /// * "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
3882    /// * "1.X.Y-gke.N": picks an explicit Kubernetes version
3883    /// * "-": picks the default Kubernetes version
3884    #[prost(string, tag = "100")]
3885    pub desired_master_version: ::prost::alloc::string::String,
3886    /// The desired GCFS config for the cluster
3887    #[prost(message, optional, tag = "109")]
3888    pub desired_gcfs_config: ::core::option::Option<GcfsConfig>,
3889    /// The desired network tags that apply to all auto-provisioned node pools
3890    /// in autopilot clusters and node auto-provisioning enabled clusters.
3891    #[prost(message, optional, tag = "110")]
3892    pub desired_node_pool_auto_config_network_tags: ::core::option::Option<NetworkTags>,
3893    /// The desired config for pod autoscaling.
3894    #[prost(message, optional, tag = "113")]
3895    pub desired_pod_autoscaling: ::core::option::Option<PodAutoscaling>,
3896    /// The desired config of Gateway API on this cluster.
3897    #[prost(message, optional, tag = "114")]
3898    pub desired_gateway_api_config: ::core::option::Option<GatewayApiConfig>,
3899    /// The current etag of the cluster.
3900    /// If an etag is provided and does not match the current etag of the cluster,
3901    /// update will be blocked and an ABORTED error will be returned.
3902    #[prost(string, tag = "115")]
3903    pub etag: ::prost::alloc::string::String,
3904    /// The desired node pool logging configuration defaults for the cluster.
3905    #[prost(message, optional, tag = "116")]
3906    pub desired_node_pool_logging_config: ::core::option::Option<NodePoolLoggingConfig>,
3907    /// The desired fleet configuration for the cluster.
3908    #[prost(message, optional, tag = "117")]
3909    pub desired_fleet: ::core::option::Option<Fleet>,
3910    /// The desired stack type of the cluster.
3911    /// If a stack type is provided and does not match the current stack type of
3912    /// the cluster, update will attempt to change the stack type to the new type.
3913    #[prost(enumeration = "StackType", tag = "119")]
3914    pub desired_stack_type: i32,
3915    /// The additional pod ranges to be added to the cluster. These pod ranges
3916    /// can be used by node pools to allocate pod IPs.
3917    #[prost(message, optional, tag = "120")]
3918    pub additional_pod_ranges_config: ::core::option::Option<AdditionalPodRangesConfig>,
3919    /// The additional pod ranges that are to be removed from the cluster.
3920    /// The pod ranges specified here must have been specified earlier in the
3921    /// 'additional_pod_ranges_config' argument.
3922    #[prost(message, optional, tag = "121")]
3923    pub removed_additional_pod_ranges_config: ::core::option::Option<
3924        AdditionalPodRangesConfig,
3925    >,
3926    /// Kubernetes open source beta apis enabled on the cluster. Only beta apis
3927    #[prost(message, optional, tag = "122")]
3928    pub enable_k8s_beta_apis: ::core::option::Option<K8sBetaApiConfig>,
3929    /// Enable/Disable Security Posture API features for the cluster.
3930    #[prost(message, optional, tag = "124")]
3931    pub desired_security_posture_config: ::core::option::Option<SecurityPostureConfig>,
3932    /// The desired network performance config.
3933    #[prost(message, optional, tag = "125")]
3934    pub desired_network_performance_config: ::core::option::Option<
3935        network_config::ClusterNetworkPerformanceConfig,
3936    >,
3937    /// Enable/Disable FQDN Network Policy for the cluster.
3938    #[prost(bool, optional, tag = "126")]
3939    pub desired_enable_fqdn_network_policy: ::core::option::Option<bool>,
3940    /// WorkloadPolicyConfig is the configuration related to GCW workload policy
3941    #[prost(message, optional, tag = "128")]
3942    pub desired_autopilot_workload_policy_config: ::core::option::Option<
3943        WorkloadPolicyConfig,
3944    >,
3945    /// Desired Beta APIs to be enabled for cluster.
3946    #[prost(message, optional, tag = "131")]
3947    pub desired_k8s_beta_apis: ::core::option::Option<K8sBetaApiConfig>,
3948    /// The desired containerd config for the cluster.
3949    #[prost(message, optional, tag = "134")]
3950    pub desired_containerd_config: ::core::option::Option<ContainerdConfig>,
3951    /// Enable/Disable Multi-Networking for the cluster
3952    #[prost(bool, optional, tag = "135")]
3953    pub desired_enable_multi_networking: ::core::option::Option<bool>,
3954    /// The desired resource manager tags that apply to all auto-provisioned node
3955    /// pools in autopilot clusters and node auto-provisioning enabled clusters.
3956    #[prost(message, optional, tag = "136")]
3957    pub desired_node_pool_auto_config_resource_manager_tags: ::core::option::Option<
3958        ResourceManagerTags,
3959    >,
3960    /// Specify the details of in-transit encryption.
3961    #[prost(enumeration = "InTransitEncryptionConfig", optional, tag = "137")]
3962    pub desired_in_transit_encryption_config: ::core::option::Option<i32>,
3963    /// Enable/Disable Cilium Clusterwide Network Policy for the cluster.
3964    #[prost(bool, optional, tag = "138")]
3965    pub desired_enable_cilium_clusterwide_network_policy: ::core::option::Option<bool>,
3966    /// Enable/Disable Secret Manager Config.
3967    #[prost(message, optional, tag = "139")]
3968    pub desired_secret_manager_config: ::core::option::Option<SecretManagerConfig>,
3969    /// Enable/Disable Compliance Posture features for the cluster.
3970    #[prost(message, optional, tag = "140")]
3971    pub desired_compliance_posture_config: ::core::option::Option<
3972        CompliancePostureConfig,
3973    >,
3974    /// The desired node kubelet config for the cluster.
3975    #[prost(message, optional, tag = "141")]
3976    pub desired_node_kubelet_config: ::core::option::Option<NodeKubeletConfig>,
3977    /// The desired node kubelet config for all auto-provisioned node pools
3978    /// in autopilot clusters and node auto-provisioning enabled clusters.
3979    #[prost(message, optional, tag = "142")]
3980    pub desired_node_pool_auto_config_kubelet_config: ::core::option::Option<
3981        NodeKubeletConfig,
3982    >,
3983    /// The Custom keys configuration for the cluster.
3984    ///
3985    /// This field is deprecated.
3986    /// Use
3987    /// \[ClusterUpdate.desired_user_managed_keys_config\]\[google.container.v1.ClusterUpdate.desired_user_managed_keys_config\]
3988    /// instead.
3989    #[deprecated]
3990    #[prost(message, optional, tag = "143")]
3991    pub user_managed_keys_config: ::core::option::Option<UserManagedKeysConfig>,
3992    /// RBACBindingConfig allows user to restrict ClusterRoleBindings an
3993    /// RoleBindings that can be created.
3994    #[prost(message, optional, tag = "144")]
3995    pub desired_rbac_binding_config: ::core::option::Option<RbacBindingConfig>,
3996    /// The desired config for additional subnetworks attached to the cluster.
3997    #[prost(message, optional, tag = "145")]
3998    pub desired_additional_ip_ranges_config: ::core::option::Option<
3999        DesiredAdditionalIpRangesConfig,
4000    >,
4001    /// The desired enterprise configuration for the cluster.
4002    ///
4003    /// Deprecated: GKE Enterprise features are now available without an Enterprise
4004    /// tier.
4005    #[deprecated]
4006    #[prost(message, optional, tag = "147")]
4007    pub desired_enterprise_config: ::core::option::Option<DesiredEnterpriseConfig>,
4008    /// AutoIpamConfig contains all information related to Auto IPAM
4009    #[prost(message, optional, tag = "148")]
4010    pub desired_auto_ipam_config: ::core::option::Option<AutoIpamConfig>,
4011    /// Enable/Disable L4 LB VPC firewall reconciliation for the cluster.
4012    #[prost(bool, optional, tag = "149")]
4013    pub desired_disable_l4_lb_firewall_reconciliation: ::core::option::Option<bool>,
4014    /// The desired Linux node config for all auto-provisioned node pools
4015    /// in autopilot clusters and node auto-provisioning enabled clusters.
4016    ///
4017    /// Currently only `cgroup_mode` can be set here.
4018    #[prost(message, optional, tag = "150")]
4019    pub desired_node_pool_auto_config_linux_node_config: ::core::option::Option<
4020        LinuxNodeConfig,
4021    >,
4022    /// The desired user managed keys config for the cluster.
4023    #[prost(message, optional, tag = "152")]
4024    pub desired_user_managed_keys_config: ::core::option::Option<UserManagedKeysConfig>,
4025    /// Configuration for limiting anonymous access to all endpoints except the
4026    /// health checks.
4027    #[prost(message, optional, tag = "156")]
4028    pub desired_anonymous_authentication_config: ::core::option::Option<
4029        AnonymousAuthenticationConfig,
4030    >,
4031    /// Configuration for GKE auto upgrade.
4032    #[prost(message, optional, tag = "154")]
4033    pub gke_auto_upgrade_config: ::core::option::Option<GkeAutoUpgradeConfig>,
4034    /// The desired network tier configuration for the cluster.
4035    #[prost(message, optional, tag = "155")]
4036    pub desired_network_tier_config: ::core::option::Option<NetworkTierConfig>,
4037    /// The desired privileged admission config for the cluster.
4038    #[prost(message, optional, tag = "159")]
4039    pub desired_privileged_admission_config: ::core::option::Option<
4040        PrivilegedAdmissionConfig,
4041    >,
4042    /// The desired managed open telemetry configuration.
4043    #[prost(message, optional, tag = "163")]
4044    pub desired_managed_opentelemetry_config: ::core::option::Option<
4045        ManagedOpenTelemetryConfig,
4046    >,
4047}
4048/// AdditionalPodRangesConfig is the configuration for additional pod secondary
4049/// ranges supporting the ClusterUpdate message.
4050#[derive(Clone, PartialEq, ::prost::Message)]
4051pub struct AdditionalPodRangesConfig {
4052    /// Name for pod secondary ipv4 range which has the actual range defined ahead.
4053    #[prost(string, repeated, tag = "1")]
4054    pub pod_range_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4055    /// Output only. Information for additional pod range.
4056    #[prost(message, repeated, tag = "2")]
4057    pub pod_range_info: ::prost::alloc::vec::Vec<RangeInfo>,
4058}
4059/// AdditionalIPRangesConfig is the configuration for individual additional
4060/// subnetwork attached to the cluster
4061#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4062pub struct AdditionalIpRangesConfig {
4063    /// Name of the subnetwork. This can be the full path of the subnetwork or
4064    /// just the name.
4065    /// Example1: my-subnet
4066    /// Example2: projects/gke-project/regions/us-central1/subnetworks/my-subnet
4067    #[prost(string, tag = "1")]
4068    pub subnetwork: ::prost::alloc::string::String,
4069    /// List of secondary ranges names within this subnetwork that can be used for
4070    /// pod IPs.
4071    /// Example1: gke-pod-range1
4072    /// Example2: gke-pod-range1,gke-pod-range2
4073    #[prost(string, repeated, tag = "2")]
4074    pub pod_ipv4_range_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4075    /// Draining status of the additional subnet.
4076    #[prost(enumeration = "additional_ip_ranges_config::Status", tag = "3")]
4077    pub status: i32,
4078}
4079/// Nested message and enum types in `AdditionalIPRangesConfig`.
4080pub mod additional_ip_ranges_config {
4081    /// Additional subnet with DRAINING status will not be selected during new node
4082    /// pool creation. To undrain the draining status, update the cluster to set
4083    /// the sunbet to ACTIVE status. To remove the additional subnet, use the
4084    /// update cluster API to remove the subnet from the
4085    /// desired_additional_ip_ranges list. IP ranges can be removed regardless of
4086    /// its status, as long as no node pools are using them.
4087    #[derive(
4088        Clone,
4089        Copy,
4090        Debug,
4091        PartialEq,
4092        Eq,
4093        Hash,
4094        PartialOrd,
4095        Ord,
4096        ::prost::Enumeration
4097    )]
4098    #[repr(i32)]
4099    pub enum Status {
4100        /// Not set, same as ACTIVE.
4101        Unspecified = 0,
4102        /// ACTIVE status indicates that the subnet is available for new node pool
4103        /// creation.
4104        Active = 1,
4105        /// DRAINING status indicates that the subnet is not used for new node pool
4106        /// creation.
4107        Draining = 2,
4108    }
4109    impl Status {
4110        /// String value of the enum field names used in the ProtoBuf definition.
4111        ///
4112        /// The values are not transformed in any way and thus are considered stable
4113        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4114        pub fn as_str_name(&self) -> &'static str {
4115            match self {
4116                Self::Unspecified => "STATUS_UNSPECIFIED",
4117                Self::Active => "ACTIVE",
4118                Self::Draining => "DRAINING",
4119            }
4120        }
4121        /// Creates an enum from field names used in the ProtoBuf definition.
4122        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4123            match value {
4124                "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
4125                "ACTIVE" => Some(Self::Active),
4126                "DRAINING" => Some(Self::Draining),
4127                _ => None,
4128            }
4129        }
4130    }
4131}
4132/// DesiredAdditionalIPRangesConfig is a wrapper used for cluster update
4133/// operation and contains multiple AdditionalIPRangesConfigs.
4134#[derive(Clone, PartialEq, ::prost::Message)]
4135pub struct DesiredAdditionalIpRangesConfig {
4136    /// List of additional IP ranges configs where each AdditionalIPRangesConfig
4137    /// corresponds to one subnetwork's IP ranges
4138    #[prost(message, repeated, tag = "1")]
4139    pub additional_ip_ranges_configs: ::prost::alloc::vec::Vec<AdditionalIpRangesConfig>,
4140}
4141/// AutoIpamConfig contains all information related to Auto IPAM
4142#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4143pub struct AutoIpamConfig {
4144    /// The flag that enables Auto IPAM on this cluster
4145    #[prost(bool, optional, tag = "1")]
4146    pub enabled: ::core::option::Option<bool>,
4147}
4148/// RangeInfo contains the range name and the range utilization by this cluster.
4149#[derive(Clone, PartialEq, ::prost::Message)]
4150pub struct RangeInfo {
4151    /// Output only. Name of a range.
4152    #[prost(string, tag = "1")]
4153    pub range_name: ::prost::alloc::string::String,
4154    /// Output only. The utilization of the range.
4155    #[prost(double, tag = "2")]
4156    pub utilization: f64,
4157}
4158/// DesiredEnterpriseConfig is a wrapper used for updating enterprise_config.
4159///
4160/// Deprecated: GKE Enterprise features are now available without an Enterprise
4161/// tier.
4162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4163pub struct DesiredEnterpriseConfig {
4164    /// desired_tier specifies the desired tier of the cluster.
4165    #[prost(enumeration = "enterprise_config::ClusterTier", tag = "1")]
4166    pub desired_tier: i32,
4167}
4168/// This operation resource represents operations that may have happened or are
4169/// happening on the cluster. All fields are output only.
4170#[derive(Clone, PartialEq, ::prost::Message)]
4171pub struct Operation {
4172    /// Output only. The server-assigned ID for the operation.
4173    #[prost(string, tag = "1")]
4174    pub name: ::prost::alloc::string::String,
4175    /// Output only. The name of the Google Compute Engine
4176    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4177    /// in which the operation is taking place. This field is deprecated, use
4178    /// location instead.
4179    #[deprecated]
4180    #[prost(string, tag = "2")]
4181    pub zone: ::prost::alloc::string::String,
4182    /// Output only. The operation type.
4183    #[prost(enumeration = "operation::Type", tag = "3")]
4184    pub operation_type: i32,
4185    /// Output only. The current status of the operation.
4186    #[prost(enumeration = "operation::Status", tag = "4")]
4187    pub status: i32,
4188    /// Output only. Detailed operation progress, if available.
4189    #[prost(string, tag = "8")]
4190    pub detail: ::prost::alloc::string::String,
4191    /// Output only. If an error has occurred, a textual description of the error.
4192    /// Deprecated. Use the field error instead.
4193    #[deprecated]
4194    #[prost(string, tag = "5")]
4195    pub status_message: ::prost::alloc::string::String,
4196    /// Output only. Server-defined URI for the operation. Example:
4197    /// `<https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.>
4198    #[prost(string, tag = "6")]
4199    pub self_link: ::prost::alloc::string::String,
4200    /// Output only. Server-defined URI for the target of the operation. The format
4201    /// of this is a URI to the resource being modified (such as a cluster, node
4202    /// pool, or node). For node pool repairs, there may be multiple nodes being
4203    /// repaired, but only one will be the target.
4204    ///
4205    /// Examples:
4206    ///
4207    /// *
4208    ///
4209    /// ##
4210    ///
4211    /// `<https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster`>
4212    ///
4213    /// ##
4214    ///
4215    /// `<https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np`>
4216    ///
4217    /// `<https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`>
4218    #[prost(string, tag = "7")]
4219    pub target_link: ::prost::alloc::string::String,
4220    /// Output only. The name of the Google Compute Engine
4221    /// [zone](<https://cloud.google.com/compute/docs/regions-zones/regions-zones#available>)
4222    /// or
4223    /// [region](<https://cloud.google.com/compute/docs/regions-zones/regions-zones#available>)
4224    /// in which the cluster resides.
4225    #[prost(string, tag = "9")]
4226    pub location: ::prost::alloc::string::String,
4227    /// Output only. The time the operation started, in
4228    /// [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
4229    #[prost(string, tag = "10")]
4230    pub start_time: ::prost::alloc::string::String,
4231    /// Output only. The time the operation completed, in
4232    /// [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
4233    #[prost(string, tag = "11")]
4234    pub end_time: ::prost::alloc::string::String,
4235    /// Output only. Progress information for an operation.
4236    #[prost(message, optional, tag = "12")]
4237    pub progress: ::core::option::Option<OperationProgress>,
4238    /// Which conditions caused the current cluster state.
4239    /// Deprecated. Use field error instead.
4240    #[deprecated]
4241    #[prost(message, repeated, tag = "13")]
4242    pub cluster_conditions: ::prost::alloc::vec::Vec<StatusCondition>,
4243    /// Which conditions caused the current node pool state.
4244    /// Deprecated. Use field error instead.
4245    #[deprecated]
4246    #[prost(message, repeated, tag = "14")]
4247    pub nodepool_conditions: ::prost::alloc::vec::Vec<StatusCondition>,
4248    /// The error result of the operation in case of failure.
4249    #[prost(message, optional, tag = "15")]
4250    pub error: ::core::option::Option<super::super::rpc::Status>,
4251}
4252/// Nested message and enum types in `Operation`.
4253pub mod operation {
4254    /// Current status of the operation.
4255    #[derive(
4256        Clone,
4257        Copy,
4258        Debug,
4259        PartialEq,
4260        Eq,
4261        Hash,
4262        PartialOrd,
4263        Ord,
4264        ::prost::Enumeration
4265    )]
4266    #[repr(i32)]
4267    pub enum Status {
4268        /// Not set.
4269        Unspecified = 0,
4270        /// The operation has been created.
4271        Pending = 1,
4272        /// The operation is currently running.
4273        Running = 2,
4274        /// The operation is done, either cancelled or completed.
4275        Done = 3,
4276        /// The operation is aborting.
4277        Aborting = 4,
4278    }
4279    impl Status {
4280        /// String value of the enum field names used in the ProtoBuf definition.
4281        ///
4282        /// The values are not transformed in any way and thus are considered stable
4283        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4284        pub fn as_str_name(&self) -> &'static str {
4285            match self {
4286                Self::Unspecified => "STATUS_UNSPECIFIED",
4287                Self::Pending => "PENDING",
4288                Self::Running => "RUNNING",
4289                Self::Done => "DONE",
4290                Self::Aborting => "ABORTING",
4291            }
4292        }
4293        /// Creates an enum from field names used in the ProtoBuf definition.
4294        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4295            match value {
4296                "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
4297                "PENDING" => Some(Self::Pending),
4298                "RUNNING" => Some(Self::Running),
4299                "DONE" => Some(Self::Done),
4300                "ABORTING" => Some(Self::Aborting),
4301                _ => None,
4302            }
4303        }
4304    }
4305    /// Operation type categorizes the operation.
4306    #[derive(
4307        Clone,
4308        Copy,
4309        Debug,
4310        PartialEq,
4311        Eq,
4312        Hash,
4313        PartialOrd,
4314        Ord,
4315        ::prost::Enumeration
4316    )]
4317    #[repr(i32)]
4318    pub enum Type {
4319        /// Not set.
4320        Unspecified = 0,
4321        /// The cluster is being created. The cluster should be assumed to be
4322        /// unusable until the operation finishes.
4323        ///
4324        /// In the event of the operation failing, the cluster will enter the
4325        /// \[ERROR state\]\[google.container.v1.Cluster.Status.ERROR\] and eventually be
4326        /// deleted.
4327        CreateCluster = 1,
4328        /// The cluster is being deleted. The cluster should be assumed to be
4329        /// unusable as soon as this operation starts.
4330        ///
4331        /// In the event of the operation failing, the cluster will enter the
4332        /// \[ERROR state\]\[google.container.v1.Cluster.Status.ERROR\] and the deletion
4333        /// will be automatically retried until completed.
4334        DeleteCluster = 2,
4335        /// The \[cluster
4336        /// version\]\[google.container.v1.ClusterUpdate.desired_master_version\] is
4337        /// being updated. Note that this includes "upgrades" to the same version,
4338        /// which are simply a recreation. This also includes
4339        /// [auto-upgrades](<https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#upgrading_automatically>).
4340        /// For more details, see [documentation on cluster
4341        /// upgrades](<https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#cluster_upgrades>).
4342        UpgradeMaster = 3,
4343        /// A node pool is being updated. Despite calling this an "upgrade", this
4344        /// includes most forms of updates to node pools. This also includes
4345        /// [auto-upgrades](<https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-upgrades>).
4346        ///
4347        /// This operation sets the
4348        /// \[progress\]\[google.container.v1.Operation.progress\] field and may be
4349        /// \[canceled\]\[google.container.v1.ClusterManager.CancelOperation\].
4350        ///
4351        /// The upgrade strategy depends on [node pool
4352        /// configuration](<https://cloud.google.com/kubernetes-engine/docs/concepts/node-pool-upgrade-strategies>).
4353        /// The nodes are generally still usable during this operation.
4354        UpgradeNodes = 4,
4355        /// A problem has been detected with the control plane and is being repaired.
4356        /// This operation type is initiated by GKE. For more details, see
4357        /// [documentation on
4358        /// repairs](<https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs>).
4359        RepairCluster = 5,
4360        /// The cluster is being updated. This is a broad category of operations and
4361        /// includes operations that only change metadata as well as those that must
4362        /// recreate the entire cluster. If the control plane must be recreated, this
4363        /// will cause temporary downtime for zonal clusters.
4364        ///
4365        /// Some features require recreating the nodes as well. Those will be
4366        /// recreated as separate operations and the update may not be completely
4367        /// functional until the node pools recreations finish. Node recreations will
4368        /// generally follow [maintenance
4369        /// policies](<https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions>).
4370        ///
4371        /// Some GKE-initiated operations use this type. This includes certain types
4372        /// of auto-upgrades and incident mitigations.
4373        UpdateCluster = 6,
4374        /// A node pool is being created. The node pool should be assumed to be
4375        /// unusable until this operation finishes. In the event of an error, the
4376        /// node pool may be partially created.
4377        ///
4378        /// If enabled, [node
4379        /// autoprovisioning](<https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning>)
4380        /// may have automatically initiated such operations.
4381        CreateNodePool = 7,
4382        /// The node pool is being deleted. The node pool should be assumed to be
4383        /// unusable as soon as this operation starts.
4384        DeleteNodePool = 8,
4385        /// The node pool's \[manamagent\]\[google.container.v1.NodePool.management\]
4386        /// field is being updated. These operations only update metadata and may be
4387        /// concurrent with most other operations.
4388        SetNodePoolManagement = 9,
4389        /// A problem has been detected with nodes and [they are being
4390        /// repaired](<https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair>).
4391        /// This operation type is initiated by GKE, typically automatically. This
4392        /// operation may be concurrent with other operations and there may be
4393        /// multiple repairs occurring on the same node pool.
4394        AutoRepairNodes = 10,
4395        /// Unused. Automatic node upgrade uses
4396        /// \[UPGRADE_NODES\]\[google.container.v1.Operation.Type.UPGRADE_NODES\].
4397        #[deprecated]
4398        AutoUpgradeNodes = 11,
4399        /// Unused. Updating labels uses
4400        /// \[UPDATE_CLUSTER\]\[google.container.v1.Operation.Type.UPDATE_CLUSTER\].
4401        #[deprecated]
4402        SetLabels = 12,
4403        /// Unused. Updating master auth uses
4404        /// \[UPDATE_CLUSTER\]\[google.container.v1.Operation.Type.UPDATE_CLUSTER\].
4405        #[deprecated]
4406        SetMasterAuth = 13,
4407        /// The node pool is being resized. With the exception of resizing to or from
4408        /// size zero, the node pool is generally usable during this operation.
4409        SetNodePoolSize = 14,
4410        /// Unused. Updating network policy uses
4411        /// \[UPDATE_CLUSTER\]\[google.container.v1.Operation.Type.UPDATE_CLUSTER\].
4412        #[deprecated]
4413        SetNetworkPolicy = 15,
4414        /// Unused. Updating maintenance policy uses
4415        /// \[UPDATE_CLUSTER\]\[google.container.v1.Operation.Type.UPDATE_CLUSTER\].
4416        #[deprecated]
4417        SetMaintenancePolicy = 16,
4418        /// The control plane is being resized. This operation type is initiated by
4419        /// GKE. These operations are often performed preemptively to ensure that the
4420        /// control plane has sufficient resources and is not typically an indication
4421        /// of issues. For more details, see
4422        /// [documentation on
4423        /// resizes](<https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs>).
4424        ResizeCluster = 18,
4425        /// Fleet features of GKE Enterprise are being upgraded. The cluster should
4426        /// be assumed to be blocked for other upgrades until the operation finishes.
4427        FleetFeatureUpgrade = 19,
4428    }
4429    impl Type {
4430        /// String value of the enum field names used in the ProtoBuf definition.
4431        ///
4432        /// The values are not transformed in any way and thus are considered stable
4433        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4434        pub fn as_str_name(&self) -> &'static str {
4435            match self {
4436                Self::Unspecified => "TYPE_UNSPECIFIED",
4437                Self::CreateCluster => "CREATE_CLUSTER",
4438                Self::DeleteCluster => "DELETE_CLUSTER",
4439                Self::UpgradeMaster => "UPGRADE_MASTER",
4440                Self::UpgradeNodes => "UPGRADE_NODES",
4441                Self::RepairCluster => "REPAIR_CLUSTER",
4442                Self::UpdateCluster => "UPDATE_CLUSTER",
4443                Self::CreateNodePool => "CREATE_NODE_POOL",
4444                Self::DeleteNodePool => "DELETE_NODE_POOL",
4445                Self::SetNodePoolManagement => "SET_NODE_POOL_MANAGEMENT",
4446                Self::AutoRepairNodes => "AUTO_REPAIR_NODES",
4447                #[allow(deprecated)]
4448                Self::AutoUpgradeNodes => "AUTO_UPGRADE_NODES",
4449                #[allow(deprecated)]
4450                Self::SetLabels => "SET_LABELS",
4451                #[allow(deprecated)]
4452                Self::SetMasterAuth => "SET_MASTER_AUTH",
4453                Self::SetNodePoolSize => "SET_NODE_POOL_SIZE",
4454                #[allow(deprecated)]
4455                Self::SetNetworkPolicy => "SET_NETWORK_POLICY",
4456                #[allow(deprecated)]
4457                Self::SetMaintenancePolicy => "SET_MAINTENANCE_POLICY",
4458                Self::ResizeCluster => "RESIZE_CLUSTER",
4459                Self::FleetFeatureUpgrade => "FLEET_FEATURE_UPGRADE",
4460            }
4461        }
4462        /// Creates an enum from field names used in the ProtoBuf definition.
4463        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4464            match value {
4465                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4466                "CREATE_CLUSTER" => Some(Self::CreateCluster),
4467                "DELETE_CLUSTER" => Some(Self::DeleteCluster),
4468                "UPGRADE_MASTER" => Some(Self::UpgradeMaster),
4469                "UPGRADE_NODES" => Some(Self::UpgradeNodes),
4470                "REPAIR_CLUSTER" => Some(Self::RepairCluster),
4471                "UPDATE_CLUSTER" => Some(Self::UpdateCluster),
4472                "CREATE_NODE_POOL" => Some(Self::CreateNodePool),
4473                "DELETE_NODE_POOL" => Some(Self::DeleteNodePool),
4474                "SET_NODE_POOL_MANAGEMENT" => Some(Self::SetNodePoolManagement),
4475                "AUTO_REPAIR_NODES" => Some(Self::AutoRepairNodes),
4476                "AUTO_UPGRADE_NODES" => Some(#[allow(deprecated)] Self::AutoUpgradeNodes),
4477                "SET_LABELS" => Some(#[allow(deprecated)] Self::SetLabels),
4478                "SET_MASTER_AUTH" => Some(#[allow(deprecated)] Self::SetMasterAuth),
4479                "SET_NODE_POOL_SIZE" => Some(Self::SetNodePoolSize),
4480                "SET_NETWORK_POLICY" => Some(#[allow(deprecated)] Self::SetNetworkPolicy),
4481                "SET_MAINTENANCE_POLICY" => {
4482                    Some(#[allow(deprecated)] Self::SetMaintenancePolicy)
4483                }
4484                "RESIZE_CLUSTER" => Some(Self::ResizeCluster),
4485                "FLEET_FEATURE_UPGRADE" => Some(Self::FleetFeatureUpgrade),
4486                _ => None,
4487            }
4488        }
4489    }
4490}
4491/// Information about operation (or operation stage) progress.
4492#[derive(Clone, PartialEq, ::prost::Message)]
4493pub struct OperationProgress {
4494    /// A non-parameterized string describing an operation stage.
4495    /// Unset for single-stage operations.
4496    #[prost(string, tag = "1")]
4497    pub name: ::prost::alloc::string::String,
4498    /// Status of an operation stage.
4499    /// Unset for single-stage operations.
4500    #[prost(enumeration = "operation::Status", tag = "2")]
4501    pub status: i32,
4502    /// Progress metric bundle, for example:
4503    /// metrics: \[{name: "nodes done",     int_value: 15},
4504    /// {name: "nodes total",    int_value: 32}\]
4505    /// or
4506    /// metrics: \[{name: "progress",       double_value: 0.56},
4507    /// {name: "progress scale", double_value: 1.0}\]
4508    #[prost(message, repeated, tag = "3")]
4509    pub metrics: ::prost::alloc::vec::Vec<operation_progress::Metric>,
4510    /// Substages of an operation or a stage.
4511    #[prost(message, repeated, tag = "4")]
4512    pub stages: ::prost::alloc::vec::Vec<OperationProgress>,
4513}
4514/// Nested message and enum types in `OperationProgress`.
4515pub mod operation_progress {
4516    /// Progress metric is (string, int|float|string) pair.
4517    #[derive(Clone, PartialEq, ::prost::Message)]
4518    pub struct Metric {
4519        /// Required. Metric name, e.g., "nodes total", "percent done".
4520        #[prost(string, tag = "1")]
4521        pub name: ::prost::alloc::string::String,
4522        /// Strictly one of the values is required.
4523        #[prost(oneof = "metric::Value", tags = "2, 3, 4")]
4524        pub value: ::core::option::Option<metric::Value>,
4525    }
4526    /// Nested message and enum types in `Metric`.
4527    pub mod metric {
4528        /// Strictly one of the values is required.
4529        #[derive(Clone, PartialEq, ::prost::Oneof)]
4530        pub enum Value {
4531            /// For metrics with integer value.
4532            #[prost(int64, tag = "2")]
4533            IntValue(i64),
4534            /// For metrics with floating point value.
4535            #[prost(double, tag = "3")]
4536            DoubleValue(f64),
4537            /// For metrics with custom values (ratios, visual progress, etc.).
4538            #[prost(string, tag = "4")]
4539            StringValue(::prost::alloc::string::String),
4540        }
4541    }
4542}
4543/// CreateClusterRequest creates a cluster.
4544#[derive(Clone, PartialEq, ::prost::Message)]
4545pub struct CreateClusterRequest {
4546    /// Deprecated. The Google Developers Console [project ID or project
4547    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4548    /// This field has been deprecated and replaced by the parent field.
4549    #[deprecated]
4550    #[prost(string, tag = "1")]
4551    pub project_id: ::prost::alloc::string::String,
4552    /// Deprecated. The name of the Google Compute Engine
4553    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4554    /// in which the cluster resides. This field has been deprecated and replaced
4555    /// by the parent field.
4556    #[deprecated]
4557    #[prost(string, tag = "2")]
4558    pub zone: ::prost::alloc::string::String,
4559    /// Required. A [cluster
4560    /// resource](<https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters>)
4561    #[prost(message, optional, tag = "3")]
4562    pub cluster: ::core::option::Option<Cluster>,
4563    /// The parent (project and location) where the cluster will be created.
4564    /// Specified in the format `projects/*/locations/*`.
4565    #[prost(string, tag = "5")]
4566    pub parent: ::prost::alloc::string::String,
4567}
4568/// GetClusterRequest gets the settings of a cluster.
4569#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4570pub struct GetClusterRequest {
4571    /// Deprecated. The Google Developers Console [project ID or project
4572    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4573    /// This field has been deprecated and replaced by the name field.
4574    #[deprecated]
4575    #[prost(string, tag = "1")]
4576    pub project_id: ::prost::alloc::string::String,
4577    /// Deprecated. The name of the Google Compute Engine
4578    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4579    /// in which the cluster resides. This field has been deprecated and replaced
4580    /// by the name field.
4581    #[deprecated]
4582    #[prost(string, tag = "2")]
4583    pub zone: ::prost::alloc::string::String,
4584    /// Deprecated. The name of the cluster to retrieve.
4585    /// This field has been deprecated and replaced by the name field.
4586    #[deprecated]
4587    #[prost(string, tag = "3")]
4588    pub cluster_id: ::prost::alloc::string::String,
4589    /// The name (project, location, cluster) of the cluster to retrieve.
4590    /// Specified in the format `projects/*/locations/*/clusters/*`.
4591    #[prost(string, tag = "5")]
4592    pub name: ::prost::alloc::string::String,
4593}
4594/// UpdateClusterRequest updates the settings of a cluster.
4595#[derive(Clone, PartialEq, ::prost::Message)]
4596pub struct UpdateClusterRequest {
4597    /// Deprecated. The Google Developers Console [project ID or project
4598    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4599    /// This field has been deprecated and replaced by the name field.
4600    #[deprecated]
4601    #[prost(string, tag = "1")]
4602    pub project_id: ::prost::alloc::string::String,
4603    /// Deprecated. The name of the Google Compute Engine
4604    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4605    /// in which the cluster resides. This field has been deprecated and replaced
4606    /// by the name field.
4607    #[deprecated]
4608    #[prost(string, tag = "2")]
4609    pub zone: ::prost::alloc::string::String,
4610    /// Deprecated. The name of the cluster to upgrade.
4611    /// This field has been deprecated and replaced by the name field.
4612    #[deprecated]
4613    #[prost(string, tag = "3")]
4614    pub cluster_id: ::prost::alloc::string::String,
4615    /// Required. A description of the update.
4616    #[prost(message, optional, tag = "4")]
4617    pub update: ::core::option::Option<ClusterUpdate>,
4618    /// The name (project, location, cluster) of the cluster to update.
4619    /// Specified in the format `projects/*/locations/*/clusters/*`.
4620    #[prost(string, tag = "5")]
4621    pub name: ::prost::alloc::string::String,
4622}
4623/// UpdateNodePoolRequests update a node pool's image and/or version.
4624#[derive(Clone, PartialEq, ::prost::Message)]
4625pub struct UpdateNodePoolRequest {
4626    /// Deprecated. The Google Developers Console [project ID or project
4627    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4628    /// This field has been deprecated and replaced by the name field.
4629    #[deprecated]
4630    #[prost(string, tag = "1")]
4631    pub project_id: ::prost::alloc::string::String,
4632    /// Deprecated. The name of the Google Compute Engine
4633    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4634    /// in which the cluster resides. This field has been deprecated and replaced
4635    /// by the name field.
4636    #[deprecated]
4637    #[prost(string, tag = "2")]
4638    pub zone: ::prost::alloc::string::String,
4639    /// Deprecated. The name of the cluster to upgrade.
4640    /// This field has been deprecated and replaced by the name field.
4641    #[deprecated]
4642    #[prost(string, tag = "3")]
4643    pub cluster_id: ::prost::alloc::string::String,
4644    /// Deprecated. The name of the node pool to upgrade.
4645    /// This field has been deprecated and replaced by the name field.
4646    #[deprecated]
4647    #[prost(string, tag = "4")]
4648    pub node_pool_id: ::prost::alloc::string::String,
4649    /// Required. The Kubernetes version to change the nodes to (typically an
4650    /// upgrade).
4651    ///
4652    /// Users may specify either explicit versions offered by Kubernetes Engine or
4653    /// version aliases, which have the following behavior:
4654    ///
4655    /// * "latest": picks the highest valid Kubernetes version
4656    /// * "1.X": picks the highest valid patch+gke.N patch in the 1.X version
4657    /// * "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
4658    /// * "1.X.Y-gke.N": picks an explicit Kubernetes version
4659    /// * "-": picks the Kubernetes master version
4660    #[prost(string, tag = "5")]
4661    pub node_version: ::prost::alloc::string::String,
4662    /// Required. The desired image type for the node pool. Please see
4663    /// <https://cloud.google.com/kubernetes-engine/docs/concepts/node-images>
4664    /// for available image types.
4665    #[prost(string, tag = "6")]
4666    pub image_type: ::prost::alloc::string::String,
4667    /// The name (project, location, cluster, node pool) of the node pool to
4668    /// update. Specified in the format
4669    /// `projects/*/locations/*/clusters/*/nodePools/*`.
4670    #[prost(string, tag = "8")]
4671    pub name: ::prost::alloc::string::String,
4672    /// The desired list of Google Compute Engine
4673    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
4674    /// in which the node pool's nodes should be located. Changing the locations
4675    /// for a node pool will result in nodes being either created or removed from
4676    /// the node pool, depending on whether locations are being added or removed.
4677    ///
4678    /// Warning: It is recommended to update node pool locations in a standalone
4679    /// API call. Do not combine a location update with changes to other fields
4680    /// (such as `tags`, `labels`, `taints`, etc.) in the same request.
4681    /// Otherwise, the API performs a structural modification where changes to
4682    /// other fields will only apply to newly created nodes and will not be
4683    /// applied to existing nodes in the node pool. To ensure all nodes are updated
4684    /// consistently, use a separate API call for location changes.
4685    #[prost(string, repeated, tag = "13")]
4686    pub locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4687    /// The desired workload metadata config for the node pool.
4688    #[prost(message, optional, tag = "14")]
4689    pub workload_metadata_config: ::core::option::Option<WorkloadMetadataConfig>,
4690    /// Upgrade settings control disruption and speed of the upgrade.
4691    #[prost(message, optional, tag = "15")]
4692    pub upgrade_settings: ::core::option::Option<node_pool::UpgradeSettings>,
4693    /// The desired network tags to be applied to all nodes in the node pool.
4694    /// If this field is not present, the tags will not be changed. Otherwise,
4695    /// the existing network tags will be *replaced* with the provided tags.
4696    #[prost(message, optional, tag = "16")]
4697    pub tags: ::core::option::Option<NetworkTags>,
4698    /// The desired node taints to be applied to all nodes in the node pool.
4699    /// If this field is not present, the taints will not be changed. Otherwise,
4700    /// the existing node taints will be *replaced* with the provided taints.
4701    #[prost(message, optional, tag = "17")]
4702    pub taints: ::core::option::Option<NodeTaints>,
4703    /// The desired node labels to be applied to all nodes in the node pool.
4704    /// If this field is not present, the labels will not be changed. Otherwise,
4705    /// the existing node labels will be *replaced* with the provided labels.
4706    #[prost(message, optional, tag = "18")]
4707    pub labels: ::core::option::Option<NodeLabels>,
4708    /// Parameters that can be configured on Linux nodes.
4709    #[prost(message, optional, tag = "19")]
4710    pub linux_node_config: ::core::option::Option<LinuxNodeConfig>,
4711    /// Node kubelet configs.
4712    #[prost(message, optional, tag = "20")]
4713    pub kubelet_config: ::core::option::Option<NodeKubeletConfig>,
4714    /// Node network config.
4715    #[prost(message, optional, tag = "21")]
4716    pub node_network_config: ::core::option::Option<NodeNetworkConfig>,
4717    /// GCFS config.
4718    #[prost(message, optional, tag = "22")]
4719    pub gcfs_config: ::core::option::Option<GcfsConfig>,
4720    /// Confidential nodes config.
4721    /// All the nodes in the node pool will be Confidential VM once enabled.
4722    #[prost(message, optional, tag = "23")]
4723    pub confidential_nodes: ::core::option::Option<ConfidentialNodes>,
4724    /// Enable or disable gvnic on the node pool.
4725    #[prost(message, optional, tag = "29")]
4726    pub gvnic: ::core::option::Option<VirtualNic>,
4727    /// The current etag of the node pool.
4728    /// If an etag is provided and does not match the current etag of the node
4729    /// pool, update will be blocked and an ABORTED error will be returned.
4730    #[prost(string, tag = "30")]
4731    pub etag: ::prost::alloc::string::String,
4732    /// Enable or disable NCCL fast socket for the node pool.
4733    #[prost(message, optional, tag = "31")]
4734    pub fast_socket: ::core::option::Option<FastSocket>,
4735    /// Logging configuration.
4736    #[prost(message, optional, tag = "32")]
4737    pub logging_config: ::core::option::Option<NodePoolLoggingConfig>,
4738    /// The resource labels for the node pool to use to annotate any related
4739    /// Google Compute Engine resources.
4740    #[prost(message, optional, tag = "33")]
4741    pub resource_labels: ::core::option::Option<ResourceLabels>,
4742    /// Parameters that can be configured on Windows nodes.
4743    #[prost(message, optional, tag = "34")]
4744    pub windows_node_config: ::core::option::Option<WindowsNodeConfig>,
4745    /// A list of hardware accelerators to be attached to each node.
4746    /// See
4747    /// <https://cloud.google.com/compute/docs/gpus>
4748    /// for more information about support for GPUs.
4749    #[prost(message, repeated, tag = "35")]
4750    pub accelerators: ::prost::alloc::vec::Vec<AcceleratorConfig>,
4751    /// Optional. The desired [Google Compute Engine machine
4752    /// type](<https://cloud.google.com/compute/docs/machine-types>)
4753    /// for nodes in the node pool. Initiates an upgrade operation that migrates
4754    /// the nodes in the node pool to the specified machine type.
4755    #[prost(string, tag = "36")]
4756    pub machine_type: ::prost::alloc::string::String,
4757    /// Optional. The desired disk type (e.g. 'pd-standard', 'pd-ssd' or
4758    /// 'pd-balanced') for nodes in the node pool.
4759    /// Initiates an upgrade operation that migrates the nodes in the
4760    /// node pool to the specified disk type.
4761    #[prost(string, tag = "37")]
4762    pub disk_type: ::prost::alloc::string::String,
4763    /// Optional. The desired disk size for nodes in the node pool specified in GB.
4764    /// The smallest allowed disk size is 10GB.
4765    /// Initiates an upgrade operation that migrates the nodes in the
4766    /// node pool to the specified disk size.
4767    #[prost(int64, tag = "38")]
4768    pub disk_size_gb: i64,
4769    /// Desired resource manager tag keys and values to be attached to the nodes
4770    /// for managing Compute Engine firewalls using Network Firewall Policies.
4771    /// Existing tags will be replaced with new values.
4772    #[prost(message, optional, tag = "39")]
4773    pub resource_manager_tags: ::core::option::Option<ResourceManagerTags>,
4774    /// The desired containerd config for nodes in the node pool.
4775    /// Initiates an upgrade operation that recreates the nodes with the new
4776    /// config.
4777    #[prost(message, optional, tag = "40")]
4778    pub containerd_config: ::core::option::Option<ContainerdConfig>,
4779    /// Specifies the configuration of queued provisioning.
4780    #[prost(message, optional, tag = "42")]
4781    pub queued_provisioning: ::core::option::Option<node_pool::QueuedProvisioning>,
4782    /// List of Storage Pools where boot disks are provisioned.
4783    /// Existing Storage Pools will be replaced with storage-pools.
4784    #[prost(string, repeated, tag = "43")]
4785    pub storage_pools: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4786    /// The maximum duration for the nodes to exist.
4787    /// If unspecified, the nodes can exist indefinitely.
4788    #[prost(message, optional, tag = "45")]
4789    pub max_run_duration: ::core::option::Option<::prost_types::Duration>,
4790    /// Flex Start flag for enabling Flex Start VM.
4791    #[prost(bool, optional, tag = "46")]
4792    pub flex_start: ::core::option::Option<bool>,
4793    /// The desired boot disk config for nodes in the node pool.
4794    /// Initiates an upgrade operation that migrates the nodes in the
4795    /// node pool to the specified boot disk config.
4796    #[prost(message, optional, tag = "47")]
4797    pub boot_disk: ::core::option::Option<BootDisk>,
4798    /// The desired node drain configuration for nodes in the node pool.
4799    #[prost(message, optional, tag = "48")]
4800    pub node_drain_config: ::core::option::Option<node_pool::NodeDrainConfig>,
4801    /// Consolidation delay defines duration after which the Cluster Autoscaler can
4802    /// scale down underutilized nodes. If not set, nodes are scaled down by
4803    /// default behavior, i.e. according to the chosen autoscaling profile.
4804    #[prost(message, optional, tag = "49")]
4805    pub consolidation_delay: ::core::option::Option<::prost_types::Duration>,
4806}
4807/// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
4808#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4809pub struct SetNodePoolAutoscalingRequest {
4810    /// Deprecated. The Google Developers Console [project ID or project
4811    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4812    /// This field has been deprecated and replaced by the name field.
4813    #[deprecated]
4814    #[prost(string, tag = "1")]
4815    pub project_id: ::prost::alloc::string::String,
4816    /// Deprecated. The name of the Google Compute Engine
4817    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4818    /// in which the cluster resides. This field has been deprecated and replaced
4819    /// by the name field.
4820    #[deprecated]
4821    #[prost(string, tag = "2")]
4822    pub zone: ::prost::alloc::string::String,
4823    /// Deprecated. The name of the cluster to upgrade.
4824    /// This field has been deprecated and replaced by the name field.
4825    #[deprecated]
4826    #[prost(string, tag = "3")]
4827    pub cluster_id: ::prost::alloc::string::String,
4828    /// Deprecated. The name of the node pool to upgrade.
4829    /// This field has been deprecated and replaced by the name field.
4830    #[deprecated]
4831    #[prost(string, tag = "4")]
4832    pub node_pool_id: ::prost::alloc::string::String,
4833    /// Required. Autoscaling configuration for the node pool.
4834    #[prost(message, optional, tag = "5")]
4835    pub autoscaling: ::core::option::Option<NodePoolAutoscaling>,
4836    /// The name (project, location, cluster, node pool) of the node pool to set
4837    /// autoscaler settings. Specified in the format
4838    /// `projects/*/locations/*/clusters/*/nodePools/*`.
4839    #[prost(string, tag = "6")]
4840    pub name: ::prost::alloc::string::String,
4841}
4842/// SetLoggingServiceRequest sets the logging service of a cluster.
4843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4844pub struct SetLoggingServiceRequest {
4845    /// Deprecated. The Google Developers Console [project ID or project
4846    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4847    /// This field has been deprecated and replaced by the name field.
4848    #[deprecated]
4849    #[prost(string, tag = "1")]
4850    pub project_id: ::prost::alloc::string::String,
4851    /// Deprecated. The name of the Google Compute Engine
4852    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4853    /// in which the cluster resides. This field has been deprecated and replaced
4854    /// by the name field.
4855    #[deprecated]
4856    #[prost(string, tag = "2")]
4857    pub zone: ::prost::alloc::string::String,
4858    /// Deprecated. The name of the cluster to upgrade.
4859    /// This field has been deprecated and replaced by the name field.
4860    #[deprecated]
4861    #[prost(string, tag = "3")]
4862    pub cluster_id: ::prost::alloc::string::String,
4863    /// Required. The logging service the cluster should use to write logs.
4864    /// Currently available options:
4865    ///
4866    /// * `logging.googleapis.com/kubernetes` - The Cloud Logging
4867    ///   service with a Kubernetes-native resource model
4868    /// * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
4869    ///   available as of GKE 1.15).
4870    /// * `none` - no logs will be exported from the cluster.
4871    ///
4872    /// If left as an empty string,`logging.googleapis.com/kubernetes` will be
4873    /// used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
4874    #[prost(string, tag = "4")]
4875    pub logging_service: ::prost::alloc::string::String,
4876    /// The name (project, location, cluster) of the cluster to set logging.
4877    /// Specified in the format `projects/*/locations/*/clusters/*`.
4878    #[prost(string, tag = "5")]
4879    pub name: ::prost::alloc::string::String,
4880}
4881/// SetMonitoringServiceRequest sets the monitoring service of a cluster.
4882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4883pub struct SetMonitoringServiceRequest {
4884    /// Deprecated. The Google Developers Console [project ID or project
4885    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4886    /// This field has been deprecated and replaced by the name field.
4887    #[deprecated]
4888    #[prost(string, tag = "1")]
4889    pub project_id: ::prost::alloc::string::String,
4890    /// Deprecated. The name of the Google Compute Engine
4891    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4892    /// in which the cluster resides. This field has been deprecated and replaced
4893    /// by the name field.
4894    #[deprecated]
4895    #[prost(string, tag = "2")]
4896    pub zone: ::prost::alloc::string::String,
4897    /// Deprecated. The name of the cluster to upgrade.
4898    /// This field has been deprecated and replaced by the name field.
4899    #[deprecated]
4900    #[prost(string, tag = "3")]
4901    pub cluster_id: ::prost::alloc::string::String,
4902    /// Required. The monitoring service the cluster should use to write metrics.
4903    /// Currently available options:
4904    ///
4905    /// * `monitoring.googleapis.com/kubernetes` - The Cloud Monitoring
4906    ///   service with a Kubernetes-native resource model
4907    /// * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
4908    ///   longer available as of GKE 1.15).
4909    /// * `none` - No metrics will be exported from the cluster.
4910    ///
4911    /// If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
4912    /// used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
4913    #[prost(string, tag = "4")]
4914    pub monitoring_service: ::prost::alloc::string::String,
4915    /// The name (project, location, cluster) of the cluster to set monitoring.
4916    /// Specified in the format `projects/*/locations/*/clusters/*`.
4917    #[prost(string, tag = "6")]
4918    pub name: ::prost::alloc::string::String,
4919}
4920/// SetAddonsConfigRequest sets the addons associated with the cluster.
4921#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4922pub struct SetAddonsConfigRequest {
4923    /// Deprecated. The Google Developers Console [project ID or project
4924    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4925    /// This field has been deprecated and replaced by the name field.
4926    #[deprecated]
4927    #[prost(string, tag = "1")]
4928    pub project_id: ::prost::alloc::string::String,
4929    /// Deprecated. The name of the Google Compute Engine
4930    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4931    /// in which the cluster resides. This field has been deprecated and replaced
4932    /// by the name field.
4933    #[deprecated]
4934    #[prost(string, tag = "2")]
4935    pub zone: ::prost::alloc::string::String,
4936    /// Deprecated. The name of the cluster to upgrade.
4937    /// This field has been deprecated and replaced by the name field.
4938    #[deprecated]
4939    #[prost(string, tag = "3")]
4940    pub cluster_id: ::prost::alloc::string::String,
4941    /// Required. The desired configurations for the various addons available to
4942    /// run in the cluster.
4943    #[prost(message, optional, tag = "4")]
4944    pub addons_config: ::core::option::Option<AddonsConfig>,
4945    /// The name (project, location, cluster) of the cluster to set addons.
4946    /// Specified in the format `projects/*/locations/*/clusters/*`.
4947    #[prost(string, tag = "6")]
4948    pub name: ::prost::alloc::string::String,
4949}
4950/// SetLocationsRequest sets the locations of the cluster.
4951#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4952pub struct SetLocationsRequest {
4953    /// Deprecated. The Google Developers Console [project ID or project
4954    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4955    /// This field has been deprecated and replaced by the name field.
4956    #[deprecated]
4957    #[prost(string, tag = "1")]
4958    pub project_id: ::prost::alloc::string::String,
4959    /// Deprecated. The name of the Google Compute Engine
4960    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4961    /// in which the cluster resides. This field has been deprecated and replaced
4962    /// by the name field.
4963    #[deprecated]
4964    #[prost(string, tag = "2")]
4965    pub zone: ::prost::alloc::string::String,
4966    /// Deprecated. The name of the cluster to upgrade.
4967    /// This field has been deprecated and replaced by the name field.
4968    #[deprecated]
4969    #[prost(string, tag = "3")]
4970    pub cluster_id: ::prost::alloc::string::String,
4971    /// Required. The desired list of Google Compute Engine
4972    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
4973    /// in which the cluster's nodes should be located. Changing the locations a
4974    /// cluster is in will result in nodes being either created or removed from the
4975    /// cluster, depending on whether locations are being added or removed.
4976    ///
4977    /// This list must always include the cluster's primary zone.
4978    #[prost(string, repeated, tag = "4")]
4979    pub locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4980    /// The name (project, location, cluster) of the cluster to set locations.
4981    /// Specified in the format `projects/*/locations/*/clusters/*`.
4982    #[prost(string, tag = "6")]
4983    pub name: ::prost::alloc::string::String,
4984}
4985/// UpdateMasterRequest updates the master of the cluster.
4986#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4987pub struct UpdateMasterRequest {
4988    /// Deprecated. The Google Developers Console [project ID or project
4989    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
4990    /// This field has been deprecated and replaced by the name field.
4991    #[deprecated]
4992    #[prost(string, tag = "1")]
4993    pub project_id: ::prost::alloc::string::String,
4994    /// Deprecated. The name of the Google Compute Engine
4995    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
4996    /// in which the cluster resides. This field has been deprecated and replaced
4997    /// by the name field.
4998    #[deprecated]
4999    #[prost(string, tag = "2")]
5000    pub zone: ::prost::alloc::string::String,
5001    /// Deprecated. The name of the cluster to upgrade.
5002    /// This field has been deprecated and replaced by the name field.
5003    #[deprecated]
5004    #[prost(string, tag = "3")]
5005    pub cluster_id: ::prost::alloc::string::String,
5006    /// Required. The Kubernetes version to change the master to.
5007    ///
5008    /// Users may specify either explicit versions offered by Kubernetes Engine or
5009    /// version aliases, which have the following behavior:
5010    ///
5011    /// * "latest": picks the highest valid Kubernetes version
5012    /// * "1.X": picks the highest valid patch+gke.N patch in the 1.X version
5013    /// * "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
5014    /// * "1.X.Y-gke.N": picks an explicit Kubernetes version
5015    /// * "-": picks the default Kubernetes version
5016    #[prost(string, tag = "4")]
5017    pub master_version: ::prost::alloc::string::String,
5018    /// The name (project, location, cluster) of the cluster to update.
5019    /// Specified in the format `projects/*/locations/*/clusters/*`.
5020    #[prost(string, tag = "7")]
5021    pub name: ::prost::alloc::string::String,
5022}
5023/// SetMasterAuthRequest updates the admin password of a cluster.
5024#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5025pub struct SetMasterAuthRequest {
5026    /// Deprecated. The Google Developers Console [project ID or project
5027    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5028    /// This field has been deprecated and replaced by the name field.
5029    #[deprecated]
5030    #[prost(string, tag = "1")]
5031    pub project_id: ::prost::alloc::string::String,
5032    /// Deprecated. The name of the Google Compute Engine
5033    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5034    /// in which the cluster resides. This field has been deprecated and replaced
5035    /// by the name field.
5036    #[deprecated]
5037    #[prost(string, tag = "2")]
5038    pub zone: ::prost::alloc::string::String,
5039    /// Deprecated. The name of the cluster to upgrade.
5040    /// This field has been deprecated and replaced by the name field.
5041    #[deprecated]
5042    #[prost(string, tag = "3")]
5043    pub cluster_id: ::prost::alloc::string::String,
5044    /// Required. The exact form of action to be taken on the master auth.
5045    #[prost(enumeration = "set_master_auth_request::Action", tag = "4")]
5046    pub action: i32,
5047    /// Required. A description of the update.
5048    #[prost(message, optional, tag = "5")]
5049    pub update: ::core::option::Option<MasterAuth>,
5050    /// The name (project, location, cluster) of the cluster to set auth.
5051    /// Specified in the format `projects/*/locations/*/clusters/*`.
5052    #[prost(string, tag = "7")]
5053    pub name: ::prost::alloc::string::String,
5054}
5055/// Nested message and enum types in `SetMasterAuthRequest`.
5056pub mod set_master_auth_request {
5057    /// Operation type: what type update to perform.
5058    #[derive(
5059        Clone,
5060        Copy,
5061        Debug,
5062        PartialEq,
5063        Eq,
5064        Hash,
5065        PartialOrd,
5066        Ord,
5067        ::prost::Enumeration
5068    )]
5069    #[repr(i32)]
5070    pub enum Action {
5071        /// Operation is unknown and will error out.
5072        Unknown = 0,
5073        /// Set the password to a user generated value.
5074        SetPassword = 1,
5075        /// Generate a new password and set it to that.
5076        GeneratePassword = 2,
5077        /// Set the username.  If an empty username is provided, basic authentication
5078        /// is disabled for the cluster.  If a non-empty username is provided, basic
5079        /// authentication is enabled, with either a provided password or a generated
5080        /// one.
5081        SetUsername = 3,
5082    }
5083    impl Action {
5084        /// String value of the enum field names used in the ProtoBuf definition.
5085        ///
5086        /// The values are not transformed in any way and thus are considered stable
5087        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5088        pub fn as_str_name(&self) -> &'static str {
5089            match self {
5090                Self::Unknown => "UNKNOWN",
5091                Self::SetPassword => "SET_PASSWORD",
5092                Self::GeneratePassword => "GENERATE_PASSWORD",
5093                Self::SetUsername => "SET_USERNAME",
5094            }
5095        }
5096        /// Creates an enum from field names used in the ProtoBuf definition.
5097        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5098            match value {
5099                "UNKNOWN" => Some(Self::Unknown),
5100                "SET_PASSWORD" => Some(Self::SetPassword),
5101                "GENERATE_PASSWORD" => Some(Self::GeneratePassword),
5102                "SET_USERNAME" => Some(Self::SetUsername),
5103                _ => None,
5104            }
5105        }
5106    }
5107}
5108/// DeleteClusterRequest deletes a cluster.
5109#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5110pub struct DeleteClusterRequest {
5111    /// Deprecated. The Google Developers Console [project ID or project
5112    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5113    /// This field has been deprecated and replaced by the name field.
5114    #[deprecated]
5115    #[prost(string, tag = "1")]
5116    pub project_id: ::prost::alloc::string::String,
5117    /// Deprecated. The name of the Google Compute Engine
5118    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5119    /// in which the cluster resides. This field has been deprecated and replaced
5120    /// by the name field.
5121    #[deprecated]
5122    #[prost(string, tag = "2")]
5123    pub zone: ::prost::alloc::string::String,
5124    /// Deprecated. The name of the cluster to delete.
5125    /// This field has been deprecated and replaced by the name field.
5126    #[deprecated]
5127    #[prost(string, tag = "3")]
5128    pub cluster_id: ::prost::alloc::string::String,
5129    /// The name (project, location, cluster) of the cluster to delete.
5130    /// Specified in the format `projects/*/locations/*/clusters/*`.
5131    #[prost(string, tag = "4")]
5132    pub name: ::prost::alloc::string::String,
5133}
5134/// ListClustersRequest lists clusters.
5135#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5136pub struct ListClustersRequest {
5137    /// Deprecated. The Google Developers Console [project ID or project
5138    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5139    /// This field has been deprecated and replaced by the parent field.
5140    #[deprecated]
5141    #[prost(string, tag = "1")]
5142    pub project_id: ::prost::alloc::string::String,
5143    /// Deprecated. The name of the Google Compute Engine
5144    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5145    /// in which the cluster resides, or "-" for all zones. This field has been
5146    /// deprecated and replaced by the parent field.
5147    #[deprecated]
5148    #[prost(string, tag = "2")]
5149    pub zone: ::prost::alloc::string::String,
5150    /// The parent (project and location) where the clusters will be listed.
5151    /// Specified in the format `projects/*/locations/*`.
5152    /// Location "-" matches all zones and all regions.
5153    #[prost(string, tag = "4")]
5154    pub parent: ::prost::alloc::string::String,
5155}
5156/// ListClustersResponse is the result of ListClustersRequest.
5157#[derive(Clone, PartialEq, ::prost::Message)]
5158pub struct ListClustersResponse {
5159    /// A list of clusters in the project in the specified zone, or
5160    /// across all ones.
5161    #[prost(message, repeated, tag = "1")]
5162    pub clusters: ::prost::alloc::vec::Vec<Cluster>,
5163    /// If any zones are listed here, the list of clusters returned
5164    /// may be missing those zones.
5165    #[prost(string, repeated, tag = "2")]
5166    pub missing_zones: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5167}
5168/// GetOperationRequest gets a single operation.
5169#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5170pub struct GetOperationRequest {
5171    /// Deprecated. The Google Developers Console [project ID or project
5172    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5173    /// This field has been deprecated and replaced by the name field.
5174    #[deprecated]
5175    #[prost(string, tag = "1")]
5176    pub project_id: ::prost::alloc::string::String,
5177    /// Deprecated. The name of the Google Compute Engine
5178    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5179    /// in which the cluster resides. This field has been deprecated and replaced
5180    /// by the name field.
5181    #[deprecated]
5182    #[prost(string, tag = "2")]
5183    pub zone: ::prost::alloc::string::String,
5184    /// Deprecated. The server-assigned `name` of the operation.
5185    /// This field has been deprecated and replaced by the name field.
5186    #[deprecated]
5187    #[prost(string, tag = "3")]
5188    pub operation_id: ::prost::alloc::string::String,
5189    /// The name (project, location, operation id) of the operation to get.
5190    /// Specified in the format `projects/*/locations/*/operations/*`.
5191    #[prost(string, tag = "5")]
5192    pub name: ::prost::alloc::string::String,
5193}
5194/// ListOperationsRequest lists operations.
5195#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5196pub struct ListOperationsRequest {
5197    /// Deprecated. The Google Developers Console [project ID or project
5198    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5199    /// This field has been deprecated and replaced by the parent field.
5200    #[deprecated]
5201    #[prost(string, tag = "1")]
5202    pub project_id: ::prost::alloc::string::String,
5203    /// Deprecated. The name of the Google Compute Engine
5204    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5205    /// to return operations for, or `-` for all zones. This field has been
5206    /// deprecated and replaced by the parent field.
5207    #[deprecated]
5208    #[prost(string, tag = "2")]
5209    pub zone: ::prost::alloc::string::String,
5210    /// The parent (project and location) where the operations will be listed.
5211    /// Specified in the format `projects/*/locations/*`.
5212    /// Location "-" matches all zones and all regions.
5213    #[prost(string, tag = "4")]
5214    pub parent: ::prost::alloc::string::String,
5215}
5216/// CancelOperationRequest cancels a single operation.
5217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5218pub struct CancelOperationRequest {
5219    /// Deprecated. The Google Developers Console [project ID or project
5220    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5221    /// This field has been deprecated and replaced by the name field.
5222    #[deprecated]
5223    #[prost(string, tag = "1")]
5224    pub project_id: ::prost::alloc::string::String,
5225    /// Deprecated. The name of the Google Compute Engine
5226    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5227    /// in which the operation resides. This field has been deprecated and replaced
5228    /// by the name field.
5229    #[deprecated]
5230    #[prost(string, tag = "2")]
5231    pub zone: ::prost::alloc::string::String,
5232    /// Deprecated. The server-assigned `name` of the operation.
5233    /// This field has been deprecated and replaced by the name field.
5234    #[deprecated]
5235    #[prost(string, tag = "3")]
5236    pub operation_id: ::prost::alloc::string::String,
5237    /// The name (project, location, operation id) of the operation to cancel.
5238    /// Specified in the format `projects/*/locations/*/operations/*`.
5239    #[prost(string, tag = "4")]
5240    pub name: ::prost::alloc::string::String,
5241}
5242/// ListOperationsResponse is the result of ListOperationsRequest.
5243#[derive(Clone, PartialEq, ::prost::Message)]
5244pub struct ListOperationsResponse {
5245    /// A list of operations in the project in the specified zone.
5246    #[prost(message, repeated, tag = "1")]
5247    pub operations: ::prost::alloc::vec::Vec<Operation>,
5248    /// If any zones are listed here, the list of operations returned
5249    /// may be missing the operations from those zones.
5250    #[prost(string, repeated, tag = "2")]
5251    pub missing_zones: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5252}
5253/// Gets the current Kubernetes Engine service configuration.
5254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5255pub struct GetServerConfigRequest {
5256    /// Deprecated. The Google Developers Console [project ID or project
5257    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5258    /// This field has been deprecated and replaced by the name field.
5259    #[deprecated]
5260    #[prost(string, tag = "1")]
5261    pub project_id: ::prost::alloc::string::String,
5262    /// Deprecated. The name of the Google Compute Engine
5263    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5264    /// to return operations for. This field has been deprecated and replaced by
5265    /// the name field.
5266    #[deprecated]
5267    #[prost(string, tag = "2")]
5268    pub zone: ::prost::alloc::string::String,
5269    /// The name (project and location) of the server config to get,
5270    /// specified in the format `projects/*/locations/*`.
5271    #[prost(string, tag = "4")]
5272    pub name: ::prost::alloc::string::String,
5273}
5274/// Kubernetes Engine service configuration.
5275#[derive(Clone, PartialEq, ::prost::Message)]
5276pub struct ServerConfig {
5277    /// Version of Kubernetes the service deploys by default.
5278    #[prost(string, tag = "1")]
5279    pub default_cluster_version: ::prost::alloc::string::String,
5280    /// List of valid node upgrade target versions, in descending order.
5281    #[prost(string, repeated, tag = "3")]
5282    pub valid_node_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5283    /// Default image type.
5284    #[prost(string, tag = "4")]
5285    pub default_image_type: ::prost::alloc::string::String,
5286    /// List of valid image types.
5287    #[prost(string, repeated, tag = "5")]
5288    pub valid_image_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5289    /// List of valid master versions, in descending order.
5290    #[prost(string, repeated, tag = "6")]
5291    pub valid_master_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5292    /// List of release channel configurations.
5293    #[prost(message, repeated, tag = "9")]
5294    pub channels: ::prost::alloc::vec::Vec<server_config::ReleaseChannelConfig>,
5295}
5296/// Nested message and enum types in `ServerConfig`.
5297pub mod server_config {
5298    /// ReleaseChannelConfig exposes configuration for a release channel.
5299    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5300    pub struct ReleaseChannelConfig {
5301        /// The release channel this configuration applies to.
5302        #[prost(enumeration = "super::release_channel::Channel", tag = "1")]
5303        pub channel: i32,
5304        /// The default version for newly created clusters on the channel.
5305        #[prost(string, tag = "2")]
5306        pub default_version: ::prost::alloc::string::String,
5307        /// List of valid versions for the channel.
5308        #[prost(string, repeated, tag = "4")]
5309        pub valid_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5310        /// The auto upgrade target version for clusters on the channel.
5311        #[prost(string, tag = "5")]
5312        pub upgrade_target_version: ::prost::alloc::string::String,
5313    }
5314}
5315/// CreateNodePoolRequest creates a node pool for a cluster.
5316#[derive(Clone, PartialEq, ::prost::Message)]
5317pub struct CreateNodePoolRequest {
5318    /// Deprecated. The Google Developers Console [project ID or project
5319    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5320    /// This field has been deprecated and replaced by the parent field.
5321    #[deprecated]
5322    #[prost(string, tag = "1")]
5323    pub project_id: ::prost::alloc::string::String,
5324    /// Deprecated. The name of the Google Compute Engine
5325    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5326    /// in which the cluster resides. This field has been deprecated and replaced
5327    /// by the parent field.
5328    #[deprecated]
5329    #[prost(string, tag = "2")]
5330    pub zone: ::prost::alloc::string::String,
5331    /// Deprecated. The name of the cluster.
5332    /// This field has been deprecated and replaced by the parent field.
5333    #[deprecated]
5334    #[prost(string, tag = "3")]
5335    pub cluster_id: ::prost::alloc::string::String,
5336    /// Required. The node pool to create.
5337    #[prost(message, optional, tag = "4")]
5338    pub node_pool: ::core::option::Option<NodePool>,
5339    /// The parent (project, location, cluster name) where the node pool will be
5340    /// created. Specified in the format
5341    /// `projects/*/locations/*/clusters/*`.
5342    #[prost(string, tag = "6")]
5343    pub parent: ::prost::alloc::string::String,
5344}
5345/// DeleteNodePoolRequest deletes a node pool for a cluster.
5346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5347pub struct DeleteNodePoolRequest {
5348    /// Deprecated. The Google Developers Console [project ID or project
5349    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5350    /// This field has been deprecated and replaced by the name field.
5351    #[deprecated]
5352    #[prost(string, tag = "1")]
5353    pub project_id: ::prost::alloc::string::String,
5354    /// Deprecated. The name of the Google Compute Engine
5355    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5356    /// in which the cluster resides. This field has been deprecated and replaced
5357    /// by the name field.
5358    #[deprecated]
5359    #[prost(string, tag = "2")]
5360    pub zone: ::prost::alloc::string::String,
5361    /// Deprecated. The name of the cluster.
5362    /// This field has been deprecated and replaced by the name field.
5363    #[deprecated]
5364    #[prost(string, tag = "3")]
5365    pub cluster_id: ::prost::alloc::string::String,
5366    /// Deprecated. The name of the node pool to delete.
5367    /// This field has been deprecated and replaced by the name field.
5368    #[deprecated]
5369    #[prost(string, tag = "4")]
5370    pub node_pool_id: ::prost::alloc::string::String,
5371    /// The name (project, location, cluster, node pool id) of the node pool to
5372    /// delete. Specified in the format
5373    /// `projects/*/locations/*/clusters/*/nodePools/*`.
5374    #[prost(string, tag = "6")]
5375    pub name: ::prost::alloc::string::String,
5376}
5377/// ListNodePoolsRequest lists the node pool(s) for a cluster.
5378#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5379pub struct ListNodePoolsRequest {
5380    /// Deprecated. The Google Developers Console [project ID or project
5381    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5382    /// This field has been deprecated and replaced by the parent field.
5383    #[deprecated]
5384    #[prost(string, tag = "1")]
5385    pub project_id: ::prost::alloc::string::String,
5386    /// Deprecated. The name of the Google Compute Engine
5387    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5388    /// in which the cluster resides. This field has been deprecated and replaced
5389    /// by the parent field.
5390    #[deprecated]
5391    #[prost(string, tag = "2")]
5392    pub zone: ::prost::alloc::string::String,
5393    /// Deprecated. The name of the cluster.
5394    /// This field has been deprecated and replaced by the parent field.
5395    #[deprecated]
5396    #[prost(string, tag = "3")]
5397    pub cluster_id: ::prost::alloc::string::String,
5398    /// The parent (project, location, cluster name) where the node pools will be
5399    /// listed. Specified in the format `projects/*/locations/*/clusters/*`.
5400    #[prost(string, tag = "5")]
5401    pub parent: ::prost::alloc::string::String,
5402}
5403/// GetNodePoolRequest retrieves a node pool for a cluster.
5404#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5405pub struct GetNodePoolRequest {
5406    /// Deprecated. The Google Developers Console [project ID or project
5407    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
5408    /// This field has been deprecated and replaced by the name field.
5409    #[deprecated]
5410    #[prost(string, tag = "1")]
5411    pub project_id: ::prost::alloc::string::String,
5412    /// Deprecated. The name of the Google Compute Engine
5413    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
5414    /// in which the cluster resides. This field has been deprecated and replaced
5415    /// by the name field.
5416    #[deprecated]
5417    #[prost(string, tag = "2")]
5418    pub zone: ::prost::alloc::string::String,
5419    /// Deprecated. The name of the cluster.
5420    /// This field has been deprecated and replaced by the name field.
5421    #[deprecated]
5422    #[prost(string, tag = "3")]
5423    pub cluster_id: ::prost::alloc::string::String,
5424    /// Deprecated. The name of the node pool.
5425    /// This field has been deprecated and replaced by the name field.
5426    #[deprecated]
5427    #[prost(string, tag = "4")]
5428    pub node_pool_id: ::prost::alloc::string::String,
5429    /// The name (project, location, cluster, node pool id) of the node pool to
5430    /// get. Specified in the format
5431    /// `projects/*/locations/*/clusters/*/nodePools/*`.
5432    #[prost(string, tag = "6")]
5433    pub name: ::prost::alloc::string::String,
5434}
5435/// Settings for blue-green upgrade.
5436#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5437pub struct BlueGreenSettings {
5438    /// Time needed after draining entire blue pool. After this period, blue pool
5439    /// will be cleaned up.
5440    #[prost(message, optional, tag = "2")]
5441    pub node_pool_soak_duration: ::core::option::Option<::prost_types::Duration>,
5442    /// The rollout policy controls the general rollout progress of blue-green.
5443    #[prost(oneof = "blue_green_settings::RolloutPolicy", tags = "1, 3")]
5444    pub rollout_policy: ::core::option::Option<blue_green_settings::RolloutPolicy>,
5445}
5446/// Nested message and enum types in `BlueGreenSettings`.
5447pub mod blue_green_settings {
5448    /// Standard rollout policy is the default policy for blue-green.
5449    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5450    pub struct StandardRolloutPolicy {
5451        /// Soak time after each batch gets drained. Default to zero.
5452        #[prost(message, optional, tag = "3")]
5453        pub batch_soak_duration: ::core::option::Option<::prost_types::Duration>,
5454        /// Blue pool size to drain in a batch.
5455        #[prost(oneof = "standard_rollout_policy::UpdateBatchSize", tags = "1, 2")]
5456        pub update_batch_size: ::core::option::Option<
5457            standard_rollout_policy::UpdateBatchSize,
5458        >,
5459    }
5460    /// Nested message and enum types in `StandardRolloutPolicy`.
5461    pub mod standard_rollout_policy {
5462        /// Blue pool size to drain in a batch.
5463        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
5464        pub enum UpdateBatchSize {
5465            /// Percentage of the blue pool nodes to drain in a batch.
5466            /// The range of this field should be (0.0, 1.0\].
5467            #[prost(float, tag = "1")]
5468            BatchPercentage(f32),
5469            /// Number of blue nodes to drain in a batch.
5470            #[prost(int32, tag = "2")]
5471            BatchNodeCount(i32),
5472        }
5473    }
5474    /// Autoscaled rollout policy utilizes the cluster autoscaler during
5475    /// blue-green upgrade to scale both the blue and green pools.
5476    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5477    pub struct AutoscaledRolloutPolicy {
5478        /// Optional. Time to wait after cordoning the blue pool before draining the
5479        /// nodes. Defaults to 3 days. The value can be set between 0 and 7 days,
5480        /// inclusive.
5481        #[prost(message, optional, tag = "1")]
5482        pub wait_for_drain_duration: ::core::option::Option<::prost_types::Duration>,
5483    }
5484    /// The rollout policy controls the general rollout progress of blue-green.
5485    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
5486    pub enum RolloutPolicy {
5487        /// Standard policy for the blue-green upgrade.
5488        #[prost(message, tag = "1")]
5489        StandardRolloutPolicy(StandardRolloutPolicy),
5490        /// Autoscaled policy for cluster autoscaler enabled blue-green upgrade.
5491        #[prost(message, tag = "3")]
5492        AutoscaledRolloutPolicy(AutoscaledRolloutPolicy),
5493    }
5494}
5495/// NodePool contains the name and configuration for a cluster's node pool.
5496/// Node pools are a set of nodes (i.e. VM's), with a common configuration and
5497/// specification, under the control of the cluster master. They may have a set
5498/// of Kubernetes labels applied to them, which may be used to reference them
5499/// during pod scheduling. They may also be resized up or down, to accommodate
5500/// the workload.
5501#[derive(Clone, PartialEq, ::prost::Message)]
5502pub struct NodePool {
5503    /// The name of the node pool.
5504    #[prost(string, tag = "1")]
5505    pub name: ::prost::alloc::string::String,
5506    /// The node configuration of the pool.
5507    #[prost(message, optional, tag = "2")]
5508    pub config: ::core::option::Option<NodeConfig>,
5509    /// The initial node count for the pool. You must ensure that your
5510    /// Compute Engine [resource
5511    /// quota](<https://cloud.google.com/compute/quotas>)
5512    /// is sufficient for this number of instances. You must also have available
5513    /// firewall and routes quota.
5514    #[prost(int32, tag = "3")]
5515    pub initial_node_count: i32,
5516    /// The list of Google Compute Engine
5517    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
5518    /// in which the NodePool's nodes should be located.
5519    ///
5520    /// If this value is unspecified during node pool creation, the
5521    /// [Cluster.Locations](<https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations>)
5522    /// value will be used, instead.
5523    ///
5524    /// Warning: changing node pool locations will result in nodes being added
5525    /// and/or removed.
5526    #[prost(string, repeated, tag = "13")]
5527    pub locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5528    /// Networking configuration for this NodePool. If specified, it overrides the
5529    /// cluster-level defaults.
5530    #[prost(message, optional, tag = "14")]
5531    pub network_config: ::core::option::Option<NodeNetworkConfig>,
5532    /// Output only. Server-defined URL for the resource.
5533    #[prost(string, tag = "100")]
5534    pub self_link: ::prost::alloc::string::String,
5535    /// The version of Kubernetes running on this NodePool's nodes. If unspecified,
5536    /// it defaults as described
5537    /// [here](<https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version>).
5538    #[prost(string, tag = "101")]
5539    pub version: ::prost::alloc::string::String,
5540    /// Output only. The resource URLs of the [managed instance
5541    /// groups](<https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances>)
5542    /// associated with this node pool.
5543    /// During the node pool blue-green upgrade operation, the URLs contain both
5544    /// blue and green resources.
5545    #[prost(string, repeated, tag = "102")]
5546    pub instance_group_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5547    /// Output only. The status of the nodes in this pool instance.
5548    #[prost(enumeration = "node_pool::Status", tag = "103")]
5549    pub status: i32,
5550    /// Output only. Deprecated. Use conditions instead.
5551    /// Additional information about the current status of this
5552    /// node pool instance, if available.
5553    #[deprecated]
5554    #[prost(string, tag = "104")]
5555    pub status_message: ::prost::alloc::string::String,
5556    /// Autoscaler configuration for this NodePool. Autoscaler is enabled
5557    /// only if a valid configuration is present.
5558    #[prost(message, optional, tag = "4")]
5559    pub autoscaling: ::core::option::Option<NodePoolAutoscaling>,
5560    /// NodeManagement configuration for this NodePool.
5561    #[prost(message, optional, tag = "5")]
5562    pub management: ::core::option::Option<NodeManagement>,
5563    /// The constraint on the maximum number of pods that can be run
5564    /// simultaneously on a node in the node pool.
5565    #[prost(message, optional, tag = "6")]
5566    pub max_pods_constraint: ::core::option::Option<MaxPodsConstraint>,
5567    /// Which conditions caused the current node pool state.
5568    #[prost(message, repeated, tag = "105")]
5569    pub conditions: ::prost::alloc::vec::Vec<StatusCondition>,
5570    /// Output only. The pod CIDR block size per node in this node pool.
5571    #[prost(int32, tag = "7")]
5572    pub pod_ipv4_cidr_size: i32,
5573    /// Upgrade settings control disruption and speed of the upgrade.
5574    #[prost(message, optional, tag = "107")]
5575    pub upgrade_settings: ::core::option::Option<node_pool::UpgradeSettings>,
5576    /// Specifies the node placement policy.
5577    #[prost(message, optional, tag = "108")]
5578    pub placement_policy: ::core::option::Option<node_pool::PlacementPolicy>,
5579    /// Output only. Update info contains relevant information during a node
5580    /// pool update.
5581    #[prost(message, optional, tag = "109")]
5582    pub update_info: ::core::option::Option<node_pool::UpdateInfo>,
5583    /// This checksum is computed by the server based on the value of node pool
5584    /// fields, and may be sent on update requests to ensure the client has an
5585    /// up-to-date value before proceeding.
5586    #[prost(string, tag = "110")]
5587    pub etag: ::prost::alloc::string::String,
5588    /// Specifies the configuration of queued provisioning.
5589    #[prost(message, optional, tag = "112")]
5590    pub queued_provisioning: ::core::option::Option<node_pool::QueuedProvisioning>,
5591    /// Enable best effort provisioning for nodes
5592    #[prost(message, optional, tag = "113")]
5593    pub best_effort_provisioning: ::core::option::Option<BestEffortProvisioning>,
5594    /// Specifies the node drain configuration for this node pool.
5595    #[prost(message, optional, tag = "116")]
5596    pub node_drain_config: ::core::option::Option<node_pool::NodeDrainConfig>,
5597}
5598/// Nested message and enum types in `NodePool`.
5599pub mod node_pool {
5600    /// These upgrade settings control the level of parallelism and the level of
5601    /// disruption caused by an upgrade.
5602    ///
5603    /// maxUnavailable controls the number of nodes that can be simultaneously
5604    /// unavailable.
5605    ///
5606    /// maxSurge controls the number of additional nodes that can be added to the
5607    /// node pool temporarily for the time of the upgrade to increase the number of
5608    /// available nodes.
5609    ///
5610    /// (maxUnavailable + maxSurge) determines the level of parallelism (how many
5611    /// nodes are being upgraded at the same time).
5612    ///
5613    /// Note: upgrades inevitably introduce some disruption since workloads need to
5614    /// be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
5615    /// this holds true. (Disruption stays within the limits of
5616    /// PodDisruptionBudget, if it is configured.)
5617    ///
5618    /// Consider a hypothetical node pool with 5 nodes having maxSurge=2,
5619    /// maxUnavailable=1. This means the upgrade process upgrades 3 nodes
5620    /// simultaneously. It creates 2 additional (upgraded) nodes, then it brings
5621    /// down 3 old (not yet upgraded) nodes at the same time. This ensures that
5622    /// there are always at least 4 nodes available.
5623    ///
5624    /// These upgrade settings configure the upgrade strategy for the node pool.
5625    /// Use strategy to switch between the strategies applied to the node pool.
5626    ///
5627    /// If the strategy is ROLLING, use max_surge and max_unavailable to control
5628    /// the level of parallelism and the level of disruption caused by upgrade.
5629    ///
5630    /// 1. maxSurge controls the number of additional nodes that can be added to
5631    ///    the node pool temporarily for the time of the upgrade to increase the
5632    ///    number of available nodes.
5633    /// 1. maxUnavailable controls the number of nodes that can be simultaneously
5634    ///    unavailable.
5635    /// 1. (maxUnavailable + maxSurge) determines the level of parallelism (how
5636    ///    many nodes are being upgraded at the same time).
5637    ///
5638    /// If the strategy is BLUE_GREEN, use blue_green_settings to configure the
5639    /// blue-green upgrade related settings.
5640    ///
5641    /// 1. standard_rollout_policy is the default policy. The policy is used to
5642    ///    control the way blue pool gets drained. The draining is executed in the
5643    ///    batch mode. The batch size could be specified as either percentage of the
5644    ///    node pool size or the number of nodes. batch_soak_duration is the soak
5645    ///    time after each batch gets drained.
5646    /// 1. node_pool_soak_duration is the soak time after all blue nodes are
5647    ///    drained. After this period, the blue pool nodes will be deleted.
5648    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5649    pub struct UpgradeSettings {
5650        /// The maximum number of nodes that can be created beyond the current size
5651        /// of the node pool during the upgrade process.
5652        #[prost(int32, tag = "1")]
5653        pub max_surge: i32,
5654        /// The maximum number of nodes that can be simultaneously unavailable during
5655        /// the upgrade process. A node is considered available if its status is
5656        /// Ready.
5657        #[prost(int32, tag = "2")]
5658        pub max_unavailable: i32,
5659        /// Update strategy of the node pool.
5660        #[prost(enumeration = "super::NodePoolUpdateStrategy", optional, tag = "3")]
5661        pub strategy: ::core::option::Option<i32>,
5662        /// Settings for blue-green upgrade strategy.
5663        #[prost(message, optional, tag = "4")]
5664        pub blue_green_settings: ::core::option::Option<super::BlueGreenSettings>,
5665    }
5666    /// UpdateInfo contains resource (instance groups, etc), status and other
5667    /// intermediate information relevant to a node pool upgrade.
5668    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5669    pub struct UpdateInfo {
5670        /// Information of a blue-green upgrade.
5671        #[prost(message, optional, tag = "1")]
5672        pub blue_green_info: ::core::option::Option<update_info::BlueGreenInfo>,
5673    }
5674    /// Nested message and enum types in `UpdateInfo`.
5675    pub mod update_info {
5676        /// Information relevant to blue-green upgrade.
5677        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5678        pub struct BlueGreenInfo {
5679            /// Current blue-green upgrade phase.
5680            #[prost(enumeration = "blue_green_info::Phase", tag = "1")]
5681            pub phase: i32,
5682            /// The resource URLs of the \[managed instance groups\]
5683            /// (/compute/docs/instance-groups/creating-groups-of-managed-instances)
5684            /// associated with blue pool.
5685            #[prost(string, repeated, tag = "2")]
5686            pub blue_instance_group_urls: ::prost::alloc::vec::Vec<
5687                ::prost::alloc::string::String,
5688            >,
5689            /// The resource URLs of the \[managed instance groups\]
5690            /// (/compute/docs/instance-groups/creating-groups-of-managed-instances)
5691            /// associated with green pool.
5692            #[prost(string, repeated, tag = "3")]
5693            pub green_instance_group_urls: ::prost::alloc::vec::Vec<
5694                ::prost::alloc::string::String,
5695            >,
5696            /// Time to start deleting blue pool to complete blue-green upgrade,
5697            /// in [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
5698            #[prost(string, tag = "4")]
5699            pub blue_pool_deletion_start_time: ::prost::alloc::string::String,
5700            /// Version of green pool.
5701            #[prost(string, tag = "5")]
5702            pub green_pool_version: ::prost::alloc::string::String,
5703        }
5704        /// Nested message and enum types in `BlueGreenInfo`.
5705        pub mod blue_green_info {
5706            /// Phase represents the different stages blue-green upgrade is running in.
5707            #[derive(
5708                Clone,
5709                Copy,
5710                Debug,
5711                PartialEq,
5712                Eq,
5713                Hash,
5714                PartialOrd,
5715                Ord,
5716                ::prost::Enumeration
5717            )]
5718            #[repr(i32)]
5719            pub enum Phase {
5720                /// Unspecified phase.
5721                Unspecified = 0,
5722                /// blue-green upgrade has been initiated.
5723                UpdateStarted = 1,
5724                /// Start creating green pool nodes.
5725                CreatingGreenPool = 2,
5726                /// Start cordoning blue pool nodes.
5727                CordoningBluePool = 3,
5728                /// Start draining blue pool nodes.
5729                DrainingBluePool = 4,
5730                /// Start soaking time after draining entire blue pool.
5731                NodePoolSoaking = 5,
5732                /// Start deleting blue nodes.
5733                DeletingBluePool = 6,
5734                /// Rollback has been initiated.
5735                RollbackStarted = 7,
5736            }
5737            impl Phase {
5738                /// String value of the enum field names used in the ProtoBuf definition.
5739                ///
5740                /// The values are not transformed in any way and thus are considered stable
5741                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5742                pub fn as_str_name(&self) -> &'static str {
5743                    match self {
5744                        Self::Unspecified => "PHASE_UNSPECIFIED",
5745                        Self::UpdateStarted => "UPDATE_STARTED",
5746                        Self::CreatingGreenPool => "CREATING_GREEN_POOL",
5747                        Self::CordoningBluePool => "CORDONING_BLUE_POOL",
5748                        Self::DrainingBluePool => "DRAINING_BLUE_POOL",
5749                        Self::NodePoolSoaking => "NODE_POOL_SOAKING",
5750                        Self::DeletingBluePool => "DELETING_BLUE_POOL",
5751                        Self::RollbackStarted => "ROLLBACK_STARTED",
5752                    }
5753                }
5754                /// Creates an enum from field names used in the ProtoBuf definition.
5755                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5756                    match value {
5757                        "PHASE_UNSPECIFIED" => Some(Self::Unspecified),
5758                        "UPDATE_STARTED" => Some(Self::UpdateStarted),
5759                        "CREATING_GREEN_POOL" => Some(Self::CreatingGreenPool),
5760                        "CORDONING_BLUE_POOL" => Some(Self::CordoningBluePool),
5761                        "DRAINING_BLUE_POOL" => Some(Self::DrainingBluePool),
5762                        "NODE_POOL_SOAKING" => Some(Self::NodePoolSoaking),
5763                        "DELETING_BLUE_POOL" => Some(Self::DeletingBluePool),
5764                        "ROLLBACK_STARTED" => Some(Self::RollbackStarted),
5765                        _ => None,
5766                    }
5767                }
5768            }
5769        }
5770    }
5771    /// PlacementPolicy defines the placement policy used by the node pool.
5772    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5773    pub struct PlacementPolicy {
5774        /// The type of placement.
5775        #[prost(enumeration = "placement_policy::Type", tag = "1")]
5776        pub r#type: i32,
5777        /// Optional. TPU placement topology for pod slice node pool.
5778        /// <https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies>
5779        #[prost(string, tag = "2")]
5780        pub tpu_topology: ::prost::alloc::string::String,
5781        /// If set, refers to the name of a custom resource policy supplied by the
5782        /// user. The resource policy must be in the same project and region as the
5783        /// node pool. If not found, InvalidArgument error is returned.
5784        #[prost(string, tag = "3")]
5785        pub policy_name: ::prost::alloc::string::String,
5786    }
5787    /// Nested message and enum types in `PlacementPolicy`.
5788    pub mod placement_policy {
5789        /// Type defines the type of placement policy.
5790        #[derive(
5791            Clone,
5792            Copy,
5793            Debug,
5794            PartialEq,
5795            Eq,
5796            Hash,
5797            PartialOrd,
5798            Ord,
5799            ::prost::Enumeration
5800        )]
5801        #[repr(i32)]
5802        pub enum Type {
5803            /// TYPE_UNSPECIFIED specifies no requirements on nodes
5804            /// placement.
5805            Unspecified = 0,
5806            /// COMPACT specifies node placement in the same availability domain to
5807            /// ensure low communication latency.
5808            Compact = 1,
5809        }
5810        impl Type {
5811            /// String value of the enum field names used in the ProtoBuf definition.
5812            ///
5813            /// The values are not transformed in any way and thus are considered stable
5814            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5815            pub fn as_str_name(&self) -> &'static str {
5816                match self {
5817                    Self::Unspecified => "TYPE_UNSPECIFIED",
5818                    Self::Compact => "COMPACT",
5819                }
5820            }
5821            /// Creates an enum from field names used in the ProtoBuf definition.
5822            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5823                match value {
5824                    "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5825                    "COMPACT" => Some(Self::Compact),
5826                    _ => None,
5827                }
5828            }
5829        }
5830    }
5831    /// QueuedProvisioning defines the queued provisioning used by the node pool.
5832    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5833    pub struct QueuedProvisioning {
5834        /// Denotes that this nodepool is QRM specific, meaning nodes can be only
5835        /// obtained through queuing via the Cluster Autoscaler ProvisioningRequest
5836        /// API.
5837        #[prost(bool, tag = "1")]
5838        pub enabled: bool,
5839    }
5840    /// NodeDrainConfig contains the node drain related configurations for this
5841    /// nodepool.
5842    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5843    pub struct NodeDrainConfig {
5844        /// Whether to respect PDB during node pool deletion.
5845        #[prost(bool, optional, tag = "3")]
5846        pub respect_pdb_during_node_pool_deletion: ::core::option::Option<bool>,
5847    }
5848    /// The current status of the node pool instance.
5849    #[derive(
5850        Clone,
5851        Copy,
5852        Debug,
5853        PartialEq,
5854        Eq,
5855        Hash,
5856        PartialOrd,
5857        Ord,
5858        ::prost::Enumeration
5859    )]
5860    #[repr(i32)]
5861    pub enum Status {
5862        /// Not set.
5863        Unspecified = 0,
5864        /// The PROVISIONING state indicates the node pool is being created.
5865        Provisioning = 1,
5866        /// The RUNNING state indicates the node pool has been created
5867        /// and is fully usable.
5868        Running = 2,
5869        /// The RUNNING_WITH_ERROR state indicates the node pool has been created
5870        /// and is partially usable. Some error state has occurred and some
5871        /// functionality may be impaired. Customer may need to reissue a request
5872        /// or trigger a new update.
5873        RunningWithError = 3,
5874        /// The RECONCILING state indicates that some work is actively being done on
5875        /// the node pool, such as upgrading node software. Details can
5876        /// be found in the `statusMessage` field.
5877        Reconciling = 4,
5878        /// The STOPPING state indicates the node pool is being deleted.
5879        Stopping = 5,
5880        /// The ERROR state indicates the node pool may be unusable. Details
5881        /// can be found in the `statusMessage` field.
5882        Error = 6,
5883    }
5884    impl Status {
5885        /// String value of the enum field names used in the ProtoBuf definition.
5886        ///
5887        /// The values are not transformed in any way and thus are considered stable
5888        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5889        pub fn as_str_name(&self) -> &'static str {
5890            match self {
5891                Self::Unspecified => "STATUS_UNSPECIFIED",
5892                Self::Provisioning => "PROVISIONING",
5893                Self::Running => "RUNNING",
5894                Self::RunningWithError => "RUNNING_WITH_ERROR",
5895                Self::Reconciling => "RECONCILING",
5896                Self::Stopping => "STOPPING",
5897                Self::Error => "ERROR",
5898            }
5899        }
5900        /// Creates an enum from field names used in the ProtoBuf definition.
5901        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5902            match value {
5903                "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5904                "PROVISIONING" => Some(Self::Provisioning),
5905                "RUNNING" => Some(Self::Running),
5906                "RUNNING_WITH_ERROR" => Some(Self::RunningWithError),
5907                "RECONCILING" => Some(Self::Reconciling),
5908                "STOPPING" => Some(Self::Stopping),
5909                "ERROR" => Some(Self::Error),
5910                _ => None,
5911            }
5912        }
5913    }
5914}
5915/// NodeManagement defines the set of node management services turned on for the
5916/// node pool.
5917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5918pub struct NodeManagement {
5919    /// A flag that specifies whether node auto-upgrade is enabled for the node
5920    /// pool. If enabled, node auto-upgrade helps keep the nodes in your node pool
5921    /// up to date with the latest release version of Kubernetes.
5922    #[prost(bool, tag = "1")]
5923    pub auto_upgrade: bool,
5924    /// A flag that specifies whether the node auto-repair is enabled for the node
5925    /// pool. If enabled, the nodes in this node pool will be monitored and, if
5926    /// they fail health checks too many times, an automatic repair action will be
5927    /// triggered.
5928    #[prost(bool, tag = "2")]
5929    pub auto_repair: bool,
5930    /// Specifies the Auto Upgrade knobs for the node pool.
5931    #[prost(message, optional, tag = "10")]
5932    pub upgrade_options: ::core::option::Option<AutoUpgradeOptions>,
5933}
5934/// Best effort provisioning.
5935#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5936pub struct BestEffortProvisioning {
5937    /// When this is enabled, cluster/node pool creations will ignore non-fatal
5938    /// errors like stockout to best provision as many nodes as possible right now
5939    /// and eventually bring up all target number of nodes
5940    #[prost(bool, tag = "1")]
5941    pub enabled: bool,
5942    /// Minimum number of nodes to be provisioned to be considered as succeeded,
5943    /// and the rest of nodes will be provisioned gradually and eventually when
5944    /// stockout issue has been resolved.
5945    #[prost(int32, tag = "2")]
5946    pub min_provision_nodes: i32,
5947}
5948/// AutoUpgradeOptions defines the set of options for the user to control how
5949/// the Auto Upgrades will proceed.
5950#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5951pub struct AutoUpgradeOptions {
5952    /// Output only. This field is set when upgrades are about to commence
5953    /// with the approximate start time for the upgrades, in
5954    /// [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
5955    #[prost(string, tag = "1")]
5956    pub auto_upgrade_start_time: ::prost::alloc::string::String,
5957    /// Output only. This field is set when upgrades are about to commence
5958    /// with the description of the upgrade.
5959    #[prost(string, tag = "2")]
5960    pub description: ::prost::alloc::string::String,
5961}
5962/// MaintenancePolicy defines the maintenance policy to be used for the cluster.
5963#[derive(Clone, PartialEq, ::prost::Message)]
5964pub struct MaintenancePolicy {
5965    /// Specifies the maintenance window in which maintenance may be performed.
5966    #[prost(message, optional, tag = "1")]
5967    pub window: ::core::option::Option<MaintenanceWindow>,
5968    /// A hash identifying the version of this policy, so that updates to fields of
5969    /// the policy won't accidentally undo intermediate changes (and so that users
5970    /// of the API unaware of some fields won't accidentally remove other fields).
5971    /// Make a `get()` request to the cluster to get the current
5972    /// resource version and include it with requests to set the policy.
5973    #[prost(string, tag = "3")]
5974    pub resource_version: ::prost::alloc::string::String,
5975}
5976/// MaintenanceWindow defines the maintenance window to be used for the cluster.
5977#[derive(Clone, PartialEq, ::prost::Message)]
5978pub struct MaintenanceWindow {
5979    /// Exceptions to maintenance window. Non-emergency maintenance should not
5980    /// occur in these windows.
5981    #[prost(map = "string, message", tag = "4")]
5982    pub maintenance_exclusions: ::std::collections::HashMap<
5983        ::prost::alloc::string::String,
5984        TimeWindow,
5985    >,
5986    #[prost(oneof = "maintenance_window::Policy", tags = "2, 3")]
5987    pub policy: ::core::option::Option<maintenance_window::Policy>,
5988}
5989/// Nested message and enum types in `MaintenanceWindow`.
5990pub mod maintenance_window {
5991    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
5992    pub enum Policy {
5993        /// DailyMaintenanceWindow specifies a daily maintenance operation window.
5994        #[prost(message, tag = "2")]
5995        DailyMaintenanceWindow(super::DailyMaintenanceWindow),
5996        /// RecurringWindow specifies some number of recurring time periods for
5997        /// maintenance to occur. The time windows may be overlapping. If no
5998        /// maintenance windows are set, maintenance can occur at any time.
5999        #[prost(message, tag = "3")]
6000        RecurringWindow(super::RecurringTimeWindow),
6001    }
6002}
6003/// Represents an arbitrary window of time.
6004#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6005pub struct TimeWindow {
6006    /// The time that the window first starts.
6007    #[prost(message, optional, tag = "1")]
6008    pub start_time: ::core::option::Option<::prost_types::Timestamp>,
6009    /// The time that the window ends. The end time should take place after the
6010    /// start time.
6011    #[prost(message, optional, tag = "2")]
6012    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
6013    #[prost(oneof = "time_window::Options", tags = "3")]
6014    pub options: ::core::option::Option<time_window::Options>,
6015}
6016/// Nested message and enum types in `TimeWindow`.
6017pub mod time_window {
6018    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
6019    pub enum Options {
6020        /// MaintenanceExclusionOptions provides maintenance exclusion related
6021        /// options.
6022        #[prost(message, tag = "3")]
6023        MaintenanceExclusionOptions(super::MaintenanceExclusionOptions),
6024    }
6025}
6026/// Represents the Maintenance exclusion option.
6027#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6028pub struct MaintenanceExclusionOptions {
6029    /// Scope specifies the upgrade scope which upgrades are blocked by the
6030    /// exclusion.
6031    #[prost(enumeration = "maintenance_exclusion_options::Scope", tag = "1")]
6032    pub scope: i32,
6033    /// EndTimeBehavior specifies the behavior of the exclusion end time.
6034    #[prost(enumeration = "maintenance_exclusion_options::EndTimeBehavior", tag = "2")]
6035    pub end_time_behavior: i32,
6036}
6037/// Nested message and enum types in `MaintenanceExclusionOptions`.
6038pub mod maintenance_exclusion_options {
6039    /// Scope of exclusion.
6040    #[derive(
6041        Clone,
6042        Copy,
6043        Debug,
6044        PartialEq,
6045        Eq,
6046        Hash,
6047        PartialOrd,
6048        Ord,
6049        ::prost::Enumeration
6050    )]
6051    #[repr(i32)]
6052    pub enum Scope {
6053        /// NO_UPGRADES excludes all upgrades, including patch upgrades and minor
6054        /// upgrades across control planes and nodes. This is the default exclusion
6055        /// behavior.
6056        NoUpgrades = 0,
6057        /// NO_MINOR_UPGRADES excludes all minor upgrades for the cluster, only
6058        /// patches are allowed.
6059        NoMinorUpgrades = 1,
6060        /// NO_MINOR_OR_NODE_UPGRADES excludes all minor upgrades for the cluster,
6061        /// and also exclude all node pool upgrades. Only control
6062        /// plane patches are allowed.
6063        NoMinorOrNodeUpgrades = 2,
6064    }
6065    impl Scope {
6066        /// String value of the enum field names used in the ProtoBuf definition.
6067        ///
6068        /// The values are not transformed in any way and thus are considered stable
6069        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6070        pub fn as_str_name(&self) -> &'static str {
6071            match self {
6072                Self::NoUpgrades => "NO_UPGRADES",
6073                Self::NoMinorUpgrades => "NO_MINOR_UPGRADES",
6074                Self::NoMinorOrNodeUpgrades => "NO_MINOR_OR_NODE_UPGRADES",
6075            }
6076        }
6077        /// Creates an enum from field names used in the ProtoBuf definition.
6078        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6079            match value {
6080                "NO_UPGRADES" => Some(Self::NoUpgrades),
6081                "NO_MINOR_UPGRADES" => Some(Self::NoMinorUpgrades),
6082                "NO_MINOR_OR_NODE_UPGRADES" => Some(Self::NoMinorOrNodeUpgrades),
6083                _ => None,
6084            }
6085        }
6086    }
6087    /// EndTimeBehavior specifies the behavior of the exclusion end time.
6088    #[derive(
6089        Clone,
6090        Copy,
6091        Debug,
6092        PartialEq,
6093        Eq,
6094        Hash,
6095        PartialOrd,
6096        Ord,
6097        ::prost::Enumeration
6098    )]
6099    #[repr(i32)]
6100    pub enum EndTimeBehavior {
6101        /// END_TIME_BEHAVIOR_UNSPECIFIED is the default behavior, which is fixed
6102        /// end time.
6103        Unspecified = 0,
6104        /// UNTIL_END_OF_SUPPORT means the exclusion will be in effect until the end
6105        /// of the support of the cluster's current version.
6106        UntilEndOfSupport = 1,
6107    }
6108    impl EndTimeBehavior {
6109        /// String value of the enum field names used in the ProtoBuf definition.
6110        ///
6111        /// The values are not transformed in any way and thus are considered stable
6112        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6113        pub fn as_str_name(&self) -> &'static str {
6114            match self {
6115                Self::Unspecified => "END_TIME_BEHAVIOR_UNSPECIFIED",
6116                Self::UntilEndOfSupport => "UNTIL_END_OF_SUPPORT",
6117            }
6118        }
6119        /// Creates an enum from field names used in the ProtoBuf definition.
6120        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6121            match value {
6122                "END_TIME_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
6123                "UNTIL_END_OF_SUPPORT" => Some(Self::UntilEndOfSupport),
6124                _ => None,
6125            }
6126        }
6127    }
6128}
6129/// Represents an arbitrary window of time that recurs.
6130#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6131pub struct RecurringTimeWindow {
6132    /// The window of the first recurrence.
6133    #[prost(message, optional, tag = "1")]
6134    pub window: ::core::option::Option<TimeWindow>,
6135    /// An RRULE (<https://tools.ietf.org/html/rfc5545#section-3.8.5.3>) for how
6136    /// this window recurs. They go on for the span of time between the start and
6137    /// end time.
6138    ///
6139    /// For example, to have something repeat every weekday, you'd use:
6140    /// `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR`
6141    ///
6142    /// To repeat some window daily (equivalent to the DailyMaintenanceWindow):
6143    /// `FREQ=DAILY`
6144    ///
6145    /// For the first weekend of every month:
6146    /// `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU`
6147    ///
6148    /// This specifies how frequently the window starts. Eg, if you wanted to have
6149    /// a 9-5 UTC-4 window every weekday, you'd use something like:
6150    ///
6151    /// ```text,
6152    /// start time = 2019-01-01T09:00:00-0400
6153    /// end time = 2019-01-01T17:00:00-0400
6154    /// recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
6155    /// ```
6156    ///
6157    /// Windows can span multiple days. Eg, to make the window encompass every
6158    /// weekend from midnight Saturday till the last minute of Sunday UTC:
6159    ///
6160    /// ```text,
6161    /// start time = 2019-01-05T00:00:00Z
6162    /// end time = 2019-01-07T23:59:00Z
6163    /// recurrence = FREQ=WEEKLY;BYDAY=SA
6164    /// ```
6165    ///
6166    /// Note the start and end time's specific dates are largely arbitrary except
6167    /// to specify duration of the window and when it first starts.
6168    /// The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
6169    #[prost(string, tag = "2")]
6170    pub recurrence: ::prost::alloc::string::String,
6171}
6172/// Time window specified for daily maintenance operations.
6173#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6174pub struct DailyMaintenanceWindow {
6175    /// Time within the maintenance window to start the maintenance operations.
6176    /// Time format should be in [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>)
6177    /// format "HH:MM", where HH : \[00-23\] and MM : \[00-59\] GMT.
6178    #[prost(string, tag = "2")]
6179    pub start_time: ::prost::alloc::string::String,
6180    /// Output only. Duration of the time window, automatically chosen to be
6181    /// smallest possible in the given scenario.
6182    /// Duration will be in [RFC3339](<https://www.ietf.org/rfc/rfc3339.txt>)
6183    /// format "PTnHnMnS".
6184    #[prost(string, tag = "3")]
6185    pub duration: ::prost::alloc::string::String,
6186}
6187/// SetNodePoolManagementRequest sets the node management properties of a node
6188/// pool.
6189#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6190pub struct SetNodePoolManagementRequest {
6191    /// Deprecated. The Google Developers Console [project ID or project
6192    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6193    /// This field has been deprecated and replaced by the name field.
6194    #[deprecated]
6195    #[prost(string, tag = "1")]
6196    pub project_id: ::prost::alloc::string::String,
6197    /// Deprecated. The name of the Google Compute Engine
6198    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6199    /// in which the cluster resides. This field has been deprecated and replaced
6200    /// by the name field.
6201    #[deprecated]
6202    #[prost(string, tag = "2")]
6203    pub zone: ::prost::alloc::string::String,
6204    /// Deprecated. The name of the cluster to update.
6205    /// This field has been deprecated and replaced by the name field.
6206    #[deprecated]
6207    #[prost(string, tag = "3")]
6208    pub cluster_id: ::prost::alloc::string::String,
6209    /// Deprecated. The name of the node pool to update.
6210    /// This field has been deprecated and replaced by the name field.
6211    #[deprecated]
6212    #[prost(string, tag = "4")]
6213    pub node_pool_id: ::prost::alloc::string::String,
6214    /// Required. NodeManagement configuration for the node pool.
6215    #[prost(message, optional, tag = "5")]
6216    pub management: ::core::option::Option<NodeManagement>,
6217    /// The name (project, location, cluster, node pool id) of the node pool to set
6218    /// management properties. Specified in the format
6219    /// `projects/*/locations/*/clusters/*/nodePools/*`.
6220    #[prost(string, tag = "7")]
6221    pub name: ::prost::alloc::string::String,
6222}
6223/// SetNodePoolSizeRequest sets the size of a node pool.
6224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6225pub struct SetNodePoolSizeRequest {
6226    /// Deprecated. The Google Developers Console [project ID or project
6227    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6228    /// This field has been deprecated and replaced by the name field.
6229    #[deprecated]
6230    #[prost(string, tag = "1")]
6231    pub project_id: ::prost::alloc::string::String,
6232    /// Deprecated. The name of the Google Compute Engine
6233    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6234    /// in which the cluster resides. This field has been deprecated and replaced
6235    /// by the name field.
6236    #[deprecated]
6237    #[prost(string, tag = "2")]
6238    pub zone: ::prost::alloc::string::String,
6239    /// Deprecated. The name of the cluster to update.
6240    /// This field has been deprecated and replaced by the name field.
6241    #[deprecated]
6242    #[prost(string, tag = "3")]
6243    pub cluster_id: ::prost::alloc::string::String,
6244    /// Deprecated. The name of the node pool to update.
6245    /// This field has been deprecated and replaced by the name field.
6246    #[deprecated]
6247    #[prost(string, tag = "4")]
6248    pub node_pool_id: ::prost::alloc::string::String,
6249    /// Required. The desired node count for the pool.
6250    #[prost(int32, tag = "5")]
6251    pub node_count: i32,
6252    /// The name (project, location, cluster, node pool id) of the node pool to set
6253    /// size.
6254    /// Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
6255    #[prost(string, tag = "7")]
6256    pub name: ::prost::alloc::string::String,
6257}
6258/// CompleteNodePoolUpgradeRequest sets the name of target node pool to complete
6259/// upgrade.
6260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6261pub struct CompleteNodePoolUpgradeRequest {
6262    /// The name (project, location, cluster, node pool id) of the node pool to
6263    /// complete upgrade.
6264    /// Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
6265    #[prost(string, tag = "1")]
6266    pub name: ::prost::alloc::string::String,
6267}
6268/// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
6269/// NodePool upgrade. This will be an no-op if the last upgrade successfully
6270/// completed.
6271#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6272pub struct RollbackNodePoolUpgradeRequest {
6273    /// Deprecated. The Google Developers Console [project ID or project
6274    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6275    /// This field has been deprecated and replaced by the name field.
6276    #[deprecated]
6277    #[prost(string, tag = "1")]
6278    pub project_id: ::prost::alloc::string::String,
6279    /// Deprecated. The name of the Google Compute Engine
6280    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6281    /// in which the cluster resides. This field has been deprecated and replaced
6282    /// by the name field.
6283    #[deprecated]
6284    #[prost(string, tag = "2")]
6285    pub zone: ::prost::alloc::string::String,
6286    /// Deprecated. The name of the cluster to rollback.
6287    /// This field has been deprecated and replaced by the name field.
6288    #[deprecated]
6289    #[prost(string, tag = "3")]
6290    pub cluster_id: ::prost::alloc::string::String,
6291    /// Deprecated. The name of the node pool to rollback.
6292    /// This field has been deprecated and replaced by the name field.
6293    #[deprecated]
6294    #[prost(string, tag = "4")]
6295    pub node_pool_id: ::prost::alloc::string::String,
6296    /// The name (project, location, cluster, node pool id) of the node poll to
6297    /// rollback upgrade.
6298    /// Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
6299    #[prost(string, tag = "6")]
6300    pub name: ::prost::alloc::string::String,
6301    /// Option for rollback to ignore the PodDisruptionBudget.
6302    /// Default value is false.
6303    #[prost(bool, tag = "7")]
6304    pub respect_pdb: bool,
6305}
6306/// ListNodePoolsResponse is the result of ListNodePoolsRequest.
6307#[derive(Clone, PartialEq, ::prost::Message)]
6308pub struct ListNodePoolsResponse {
6309    /// A list of node pools for a cluster.
6310    #[prost(message, repeated, tag = "1")]
6311    pub node_pools: ::prost::alloc::vec::Vec<NodePool>,
6312}
6313/// ClusterAutoscaling contains global, per-cluster information
6314/// required by Cluster Autoscaler to automatically adjust
6315/// the size of the cluster and create/delete
6316/// node pools based on the current needs.
6317#[derive(Clone, PartialEq, ::prost::Message)]
6318pub struct ClusterAutoscaling {
6319    /// Enables automatic node pool creation and deletion.
6320    #[prost(bool, tag = "1")]
6321    pub enable_node_autoprovisioning: bool,
6322    /// Contains global constraints regarding minimum and maximum
6323    /// amount of resources in the cluster.
6324    #[prost(message, repeated, tag = "2")]
6325    pub resource_limits: ::prost::alloc::vec::Vec<ResourceLimit>,
6326    /// Defines autoscaling behaviour.
6327    #[prost(enumeration = "cluster_autoscaling::AutoscalingProfile", tag = "3")]
6328    pub autoscaling_profile: i32,
6329    /// AutoprovisioningNodePoolDefaults contains defaults for a node pool
6330    /// created by NAP.
6331    #[prost(message, optional, tag = "4")]
6332    pub autoprovisioning_node_pool_defaults: ::core::option::Option<
6333        AutoprovisioningNodePoolDefaults,
6334    >,
6335    /// The list of Google Compute Engine
6336    /// [zones](<https://cloud.google.com/compute/docs/zones#available>)
6337    /// in which the NodePool's nodes can be created by NAP.
6338    #[prost(string, repeated, tag = "5")]
6339    pub autoprovisioning_locations: ::prost::alloc::vec::Vec<
6340        ::prost::alloc::string::String,
6341    >,
6342    /// Default compute class is a configuration for default compute class.
6343    #[prost(message, optional, tag = "9")]
6344    pub default_compute_class_config: ::core::option::Option<DefaultComputeClassConfig>,
6345    /// Autopilot general profile for the cluster, which defines the
6346    /// configuration for the cluster.
6347    #[prost(enumeration = "cluster_autoscaling::AutopilotGeneralProfile", tag = "14")]
6348    pub autopilot_general_profile: i32,
6349}
6350/// Nested message and enum types in `ClusterAutoscaling`.
6351pub mod cluster_autoscaling {
6352    /// Defines possible options for autoscaling_profile field.
6353    #[derive(
6354        Clone,
6355        Copy,
6356        Debug,
6357        PartialEq,
6358        Eq,
6359        Hash,
6360        PartialOrd,
6361        Ord,
6362        ::prost::Enumeration
6363    )]
6364    #[repr(i32)]
6365    pub enum AutoscalingProfile {
6366        /// No change to autoscaling configuration.
6367        ProfileUnspecified = 0,
6368        /// Prioritize optimizing utilization of resources.
6369        OptimizeUtilization = 1,
6370        /// Use default (balanced) autoscaling configuration.
6371        Balanced = 2,
6372    }
6373    impl AutoscalingProfile {
6374        /// String value of the enum field names used in the ProtoBuf definition.
6375        ///
6376        /// The values are not transformed in any way and thus are considered stable
6377        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6378        pub fn as_str_name(&self) -> &'static str {
6379            match self {
6380                Self::ProfileUnspecified => "PROFILE_UNSPECIFIED",
6381                Self::OptimizeUtilization => "OPTIMIZE_UTILIZATION",
6382                Self::Balanced => "BALANCED",
6383            }
6384        }
6385        /// Creates an enum from field names used in the ProtoBuf definition.
6386        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6387            match value {
6388                "PROFILE_UNSPECIFIED" => Some(Self::ProfileUnspecified),
6389                "OPTIMIZE_UTILIZATION" => Some(Self::OptimizeUtilization),
6390                "BALANCED" => Some(Self::Balanced),
6391                _ => None,
6392            }
6393        }
6394    }
6395    /// Defines possible options for Autopilot general profile.
6396    #[derive(
6397        Clone,
6398        Copy,
6399        Debug,
6400        PartialEq,
6401        Eq,
6402        Hash,
6403        PartialOrd,
6404        Ord,
6405        ::prost::Enumeration
6406    )]
6407    #[repr(i32)]
6408    pub enum AutopilotGeneralProfile {
6409        /// Use default configuration.
6410        Unspecified = 0,
6411        /// Avoid extra IP consumption.
6412        NoPerformance = 1,
6413    }
6414    impl AutopilotGeneralProfile {
6415        /// String value of the enum field names used in the ProtoBuf definition.
6416        ///
6417        /// The values are not transformed in any way and thus are considered stable
6418        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6419        pub fn as_str_name(&self) -> &'static str {
6420            match self {
6421                Self::Unspecified => "AUTOPILOT_GENERAL_PROFILE_UNSPECIFIED",
6422                Self::NoPerformance => "NO_PERFORMANCE",
6423            }
6424        }
6425        /// Creates an enum from field names used in the ProtoBuf definition.
6426        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6427            match value {
6428                "AUTOPILOT_GENERAL_PROFILE_UNSPECIFIED" => Some(Self::Unspecified),
6429                "NO_PERFORMANCE" => Some(Self::NoPerformance),
6430                _ => None,
6431            }
6432        }
6433    }
6434}
6435/// AutoprovisioningNodePoolDefaults contains defaults for a node pool created
6436/// by NAP.
6437#[derive(Clone, PartialEq, ::prost::Message)]
6438pub struct AutoprovisioningNodePoolDefaults {
6439    /// Scopes that are used by NAP when creating node pools.
6440    #[prost(string, repeated, tag = "1")]
6441    pub oauth_scopes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6442    /// The Google Cloud Platform Service Account to be used by the node VMs.
6443    #[prost(string, tag = "2")]
6444    pub service_account: ::prost::alloc::string::String,
6445    /// Specifies the upgrade settings for NAP created node pools
6446    #[prost(message, optional, tag = "3")]
6447    pub upgrade_settings: ::core::option::Option<node_pool::UpgradeSettings>,
6448    /// Specifies the node management options for NAP created node-pools.
6449    #[prost(message, optional, tag = "4")]
6450    pub management: ::core::option::Option<NodeManagement>,
6451    /// Deprecated. Minimum CPU platform to be used for NAP created node pools.
6452    /// The instance may be scheduled on the specified or newer CPU platform.
6453    /// Applicable values are the friendly names of CPU platforms, such as
6454    /// minCpuPlatform: Intel Haswell or
6455    /// minCpuPlatform: Intel Sandy Bridge. For more
6456    /// information, read [how to specify min CPU
6457    /// platform](<https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform>).
6458    /// This field is deprecated, min_cpu_platform should be specified using
6459    /// `cloud.google.com/requested-min-cpu-platform` label selector on the pod.
6460    /// To unset the min cpu platform field pass "automatic"
6461    /// as field value.
6462    #[deprecated]
6463    #[prost(string, tag = "5")]
6464    pub min_cpu_platform: ::prost::alloc::string::String,
6465    /// Size of the disk attached to each node, specified in GB.
6466    /// The smallest allowed disk size is 10GB.
6467    ///
6468    /// If unspecified, the default disk size is 100GB.
6469    #[prost(int32, tag = "6")]
6470    pub disk_size_gb: i32,
6471    /// Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
6472    /// 'pd-balanced')
6473    ///
6474    /// If unspecified, the default disk type is 'pd-standard'
6475    #[prost(string, tag = "7")]
6476    pub disk_type: ::prost::alloc::string::String,
6477    /// Shielded Instance options.
6478    #[prost(message, optional, tag = "8")]
6479    pub shielded_instance_config: ::core::option::Option<ShieldedInstanceConfig>,
6480    /// The Customer Managed Encryption Key used to encrypt the boot disk attached
6481    /// to each node in the node pool. This should be of the form
6482    /// projects/\[KEY_PROJECT_ID\]/locations/\[LOCATION\]/keyRings/\[RING_NAME\]/cryptoKeys/\[KEY_NAME\].
6483    /// For more information about protecting resources with Cloud KMS Keys please
6484    /// see:
6485    /// <https://cloud.google.com/compute/docs/disks/customer-managed-encryption>
6486    #[prost(string, tag = "9")]
6487    pub boot_disk_kms_key: ::prost::alloc::string::String,
6488    /// The image type to use for NAP created node. Please see
6489    /// <https://cloud.google.com/kubernetes-engine/docs/concepts/node-images>
6490    /// for available image types.
6491    #[prost(string, tag = "10")]
6492    pub image_type: ::prost::alloc::string::String,
6493    /// DEPRECATED. Use NodePoolAutoConfig.NodeKubeletConfig instead.
6494    #[prost(bool, optional, tag = "13")]
6495    pub insecure_kubelet_readonly_port_enabled: ::core::option::Option<bool>,
6496}
6497/// Contains information about amount of some resource in the cluster.
6498/// For memory, value should be in GB.
6499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6500pub struct ResourceLimit {
6501    /// Resource name "cpu", "memory" or gpu-specific string.
6502    #[prost(string, tag = "1")]
6503    pub resource_type: ::prost::alloc::string::String,
6504    /// Minimum amount of the resource in the cluster.
6505    #[prost(int64, tag = "2")]
6506    pub minimum: i64,
6507    /// Maximum amount of the resource in the cluster.
6508    #[prost(int64, tag = "3")]
6509    pub maximum: i64,
6510}
6511/// DefaultComputeClassConfig defines default compute class
6512/// configuration.
6513#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6514pub struct DefaultComputeClassConfig {
6515    /// Enables default compute class.
6516    #[prost(bool, tag = "1")]
6517    pub enabled: bool,
6518}
6519/// NodePoolAutoscaling contains information required by cluster autoscaler to
6520/// adjust the size of the node pool to the current cluster usage.
6521#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6522pub struct NodePoolAutoscaling {
6523    /// Is autoscaling enabled for this node pool.
6524    #[prost(bool, tag = "1")]
6525    pub enabled: bool,
6526    /// Minimum number of nodes for one location in the node pool. Must be greater
6527    /// than or equal to 0 and less than or equal to max_node_count.
6528    #[prost(int32, tag = "2")]
6529    pub min_node_count: i32,
6530    /// Maximum number of nodes for one location in the node pool. Must be >=
6531    /// min_node_count. There has to be enough quota to scale up the cluster.
6532    #[prost(int32, tag = "3")]
6533    pub max_node_count: i32,
6534    /// Can this node pool be deleted automatically.
6535    #[prost(bool, tag = "4")]
6536    pub autoprovisioned: bool,
6537    /// Location policy used when scaling up a nodepool.
6538    #[prost(enumeration = "node_pool_autoscaling::LocationPolicy", tag = "5")]
6539    pub location_policy: i32,
6540    /// Minimum number of nodes in the node pool. Must be greater than or equal
6541    /// to 0 and less than or equal to total_max_node_count.
6542    /// The total\_\*\_node_count fields are mutually exclusive with the \*\_node_count
6543    /// fields.
6544    #[prost(int32, tag = "6")]
6545    pub total_min_node_count: i32,
6546    /// Maximum number of nodes in the node pool. Must be greater than or equal to
6547    /// total_min_node_count. There has to be enough quota to scale up the cluster.
6548    /// The total\_\*\_node_count fields are mutually exclusive with the \*\_node_count
6549    /// fields.
6550    #[prost(int32, tag = "7")]
6551    pub total_max_node_count: i32,
6552}
6553/// Nested message and enum types in `NodePoolAutoscaling`.
6554pub mod node_pool_autoscaling {
6555    /// Location policy specifies how zones are picked when scaling up the
6556    /// nodepool.
6557    #[derive(
6558        Clone,
6559        Copy,
6560        Debug,
6561        PartialEq,
6562        Eq,
6563        Hash,
6564        PartialOrd,
6565        Ord,
6566        ::prost::Enumeration
6567    )]
6568    #[repr(i32)]
6569    pub enum LocationPolicy {
6570        /// Not set.
6571        Unspecified = 0,
6572        /// BALANCED is a best effort policy that aims to balance the sizes of
6573        /// different zones.
6574        Balanced = 1,
6575        /// ANY policy picks zones that have the highest capacity available.
6576        Any = 2,
6577    }
6578    impl LocationPolicy {
6579        /// String value of the enum field names used in the ProtoBuf definition.
6580        ///
6581        /// The values are not transformed in any way and thus are considered stable
6582        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6583        pub fn as_str_name(&self) -> &'static str {
6584            match self {
6585                Self::Unspecified => "LOCATION_POLICY_UNSPECIFIED",
6586                Self::Balanced => "BALANCED",
6587                Self::Any => "ANY",
6588            }
6589        }
6590        /// Creates an enum from field names used in the ProtoBuf definition.
6591        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6592            match value {
6593                "LOCATION_POLICY_UNSPECIFIED" => Some(Self::Unspecified),
6594                "BALANCED" => Some(Self::Balanced),
6595                "ANY" => Some(Self::Any),
6596                _ => None,
6597            }
6598        }
6599    }
6600}
6601/// SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
6602/// Engine cluster, which will in turn set them for Google Compute Engine
6603/// resources used by that cluster
6604#[derive(Clone, PartialEq, ::prost::Message)]
6605pub struct SetLabelsRequest {
6606    /// Deprecated. The Google Developers Console [project ID or project
6607    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6608    /// This field has been deprecated and replaced by the name field.
6609    #[deprecated]
6610    #[prost(string, tag = "1")]
6611    pub project_id: ::prost::alloc::string::String,
6612    /// Deprecated. The name of the Google Compute Engine
6613    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6614    /// in which the cluster resides. This field has been deprecated and replaced
6615    /// by the name field.
6616    #[deprecated]
6617    #[prost(string, tag = "2")]
6618    pub zone: ::prost::alloc::string::String,
6619    /// Deprecated. The name of the cluster.
6620    /// This field has been deprecated and replaced by the name field.
6621    #[deprecated]
6622    #[prost(string, tag = "3")]
6623    pub cluster_id: ::prost::alloc::string::String,
6624    /// Required. The labels to set for that cluster.
6625    #[prost(map = "string, string", tag = "4")]
6626    pub resource_labels: ::std::collections::HashMap<
6627        ::prost::alloc::string::String,
6628        ::prost::alloc::string::String,
6629    >,
6630    /// Required. The fingerprint of the previous set of labels for this resource,
6631    /// used to detect conflicts. The fingerprint is initially generated by
6632    /// Kubernetes Engine and changes after every request to modify or update
6633    /// labels. You must always provide an up-to-date fingerprint hash when
6634    /// updating or changing labels. Make a `get()` request to the
6635    /// resource to get the latest fingerprint.
6636    #[prost(string, tag = "5")]
6637    pub label_fingerprint: ::prost::alloc::string::String,
6638    /// The name (project, location, cluster name) of the cluster to set labels.
6639    /// Specified in the format `projects/*/locations/*/clusters/*`.
6640    #[prost(string, tag = "7")]
6641    pub name: ::prost::alloc::string::String,
6642}
6643/// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
6644/// a cluster.
6645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6646pub struct SetLegacyAbacRequest {
6647    /// Deprecated. The Google Developers Console [project ID or project
6648    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6649    /// This field has been deprecated and replaced by the name field.
6650    #[deprecated]
6651    #[prost(string, tag = "1")]
6652    pub project_id: ::prost::alloc::string::String,
6653    /// Deprecated. The name of the Google Compute Engine
6654    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6655    /// in which the cluster resides. This field has been deprecated and replaced
6656    /// by the name field.
6657    #[deprecated]
6658    #[prost(string, tag = "2")]
6659    pub zone: ::prost::alloc::string::String,
6660    /// Deprecated. The name of the cluster to update.
6661    /// This field has been deprecated and replaced by the name field.
6662    #[deprecated]
6663    #[prost(string, tag = "3")]
6664    pub cluster_id: ::prost::alloc::string::String,
6665    /// Required. Whether ABAC authorization will be enabled in the cluster.
6666    #[prost(bool, tag = "4")]
6667    pub enabled: bool,
6668    /// The name (project, location, cluster name) of the cluster to set legacy
6669    /// abac. Specified in the format `projects/*/locations/*/clusters/*`.
6670    #[prost(string, tag = "6")]
6671    pub name: ::prost::alloc::string::String,
6672}
6673/// StartIPRotationRequest creates a new IP for the cluster and then performs
6674/// a node upgrade on each node pool to point to the new IP.
6675#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6676pub struct StartIpRotationRequest {
6677    /// Deprecated. The Google Developers Console [project ID or project
6678    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6679    /// This field has been deprecated and replaced by the name field.
6680    #[deprecated]
6681    #[prost(string, tag = "1")]
6682    pub project_id: ::prost::alloc::string::String,
6683    /// Deprecated. The name of the Google Compute Engine
6684    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6685    /// in which the cluster resides. This field has been deprecated and replaced
6686    /// by the name field.
6687    #[deprecated]
6688    #[prost(string, tag = "2")]
6689    pub zone: ::prost::alloc::string::String,
6690    /// Deprecated. The name of the cluster.
6691    /// This field has been deprecated and replaced by the name field.
6692    #[deprecated]
6693    #[prost(string, tag = "3")]
6694    pub cluster_id: ::prost::alloc::string::String,
6695    /// The name (project, location, cluster name) of the cluster to start IP
6696    /// rotation. Specified in the format `projects/*/locations/*/clusters/*`.
6697    #[prost(string, tag = "6")]
6698    pub name: ::prost::alloc::string::String,
6699    /// Whether to rotate credentials during IP rotation.
6700    #[prost(bool, tag = "7")]
6701    pub rotate_credentials: bool,
6702}
6703/// CompleteIPRotationRequest moves the cluster master back into single-IP mode.
6704#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6705pub struct CompleteIpRotationRequest {
6706    /// Deprecated. The Google Developers Console [project ID or project
6707    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6708    /// This field has been deprecated and replaced by the name field.
6709    #[deprecated]
6710    #[prost(string, tag = "1")]
6711    pub project_id: ::prost::alloc::string::String,
6712    /// Deprecated. The name of the Google Compute Engine
6713    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6714    /// in which the cluster resides. This field has been deprecated and replaced
6715    /// by the name field.
6716    #[deprecated]
6717    #[prost(string, tag = "2")]
6718    pub zone: ::prost::alloc::string::String,
6719    /// Deprecated. The name of the cluster.
6720    /// This field has been deprecated and replaced by the name field.
6721    #[deprecated]
6722    #[prost(string, tag = "3")]
6723    pub cluster_id: ::prost::alloc::string::String,
6724    /// The name (project, location, cluster name) of the cluster to complete IP
6725    /// rotation. Specified in the format `projects/*/locations/*/clusters/*`.
6726    #[prost(string, tag = "7")]
6727    pub name: ::prost::alloc::string::String,
6728}
6729/// AcceleratorConfig represents a Hardware Accelerator request.
6730#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6731pub struct AcceleratorConfig {
6732    /// The number of the accelerator cards exposed to an instance.
6733    #[prost(int64, tag = "1")]
6734    pub accelerator_count: i64,
6735    /// The accelerator type resource name. List of supported accelerators
6736    /// [here](<https://cloud.google.com/compute/docs/gpus>)
6737    #[prost(string, tag = "2")]
6738    pub accelerator_type: ::prost::alloc::string::String,
6739    /// Size of partitions to create on the GPU. Valid values are described in the
6740    /// NVIDIA [mig user
6741    /// guide](<https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning>).
6742    #[prost(string, tag = "3")]
6743    pub gpu_partition_size: ::prost::alloc::string::String,
6744    /// The configuration for GPU sharing options.
6745    #[prost(message, optional, tag = "5")]
6746    pub gpu_sharing_config: ::core::option::Option<GpuSharingConfig>,
6747    /// The configuration for auto installation of GPU driver.
6748    #[prost(message, optional, tag = "6")]
6749    pub gpu_driver_installation_config: ::core::option::Option<
6750        GpuDriverInstallationConfig,
6751    >,
6752}
6753/// GPUSharingConfig represents the GPU sharing configuration for Hardware
6754/// Accelerators.
6755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6756pub struct GpuSharingConfig {
6757    /// The max number of containers that can share a physical GPU.
6758    #[prost(int64, tag = "1")]
6759    pub max_shared_clients_per_gpu: i64,
6760    /// The type of GPU sharing strategy to enable on the GPU node.
6761    #[prost(enumeration = "gpu_sharing_config::GpuSharingStrategy", optional, tag = "2")]
6762    pub gpu_sharing_strategy: ::core::option::Option<i32>,
6763}
6764/// Nested message and enum types in `GPUSharingConfig`.
6765pub mod gpu_sharing_config {
6766    /// The type of GPU sharing strategy currently provided.
6767    #[derive(
6768        Clone,
6769        Copy,
6770        Debug,
6771        PartialEq,
6772        Eq,
6773        Hash,
6774        PartialOrd,
6775        Ord,
6776        ::prost::Enumeration
6777    )]
6778    #[repr(i32)]
6779    pub enum GpuSharingStrategy {
6780        /// Default value.
6781        Unspecified = 0,
6782        /// GPUs are time-shared between containers.
6783        TimeSharing = 1,
6784        /// GPUs are shared between containers with NVIDIA MPS.
6785        Mps = 2,
6786    }
6787    impl GpuSharingStrategy {
6788        /// String value of the enum field names used in the ProtoBuf definition.
6789        ///
6790        /// The values are not transformed in any way and thus are considered stable
6791        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6792        pub fn as_str_name(&self) -> &'static str {
6793            match self {
6794                Self::Unspecified => "GPU_SHARING_STRATEGY_UNSPECIFIED",
6795                Self::TimeSharing => "TIME_SHARING",
6796                Self::Mps => "MPS",
6797            }
6798        }
6799        /// Creates an enum from field names used in the ProtoBuf definition.
6800        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6801            match value {
6802                "GPU_SHARING_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified),
6803                "TIME_SHARING" => Some(Self::TimeSharing),
6804                "MPS" => Some(Self::Mps),
6805                _ => None,
6806            }
6807        }
6808    }
6809}
6810/// GPUDriverInstallationConfig specifies the version of GPU driver to be auto
6811/// installed.
6812#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6813pub struct GpuDriverInstallationConfig {
6814    /// Mode for how the GPU driver is installed.
6815    #[prost(
6816        enumeration = "gpu_driver_installation_config::GpuDriverVersion",
6817        optional,
6818        tag = "1"
6819    )]
6820    pub gpu_driver_version: ::core::option::Option<i32>,
6821}
6822/// Nested message and enum types in `GPUDriverInstallationConfig`.
6823pub mod gpu_driver_installation_config {
6824    /// The GPU driver version to install.
6825    #[derive(
6826        Clone,
6827        Copy,
6828        Debug,
6829        PartialEq,
6830        Eq,
6831        Hash,
6832        PartialOrd,
6833        Ord,
6834        ::prost::Enumeration
6835    )]
6836    #[repr(i32)]
6837    pub enum GpuDriverVersion {
6838        /// Default value is to not install any GPU driver.
6839        Unspecified = 0,
6840        /// Disable GPU driver auto installation and needs manual installation
6841        InstallationDisabled = 1,
6842        /// "Default" GPU driver in COS and Ubuntu.
6843        Default = 2,
6844        /// "Latest" GPU driver in COS.
6845        Latest = 3,
6846    }
6847    impl GpuDriverVersion {
6848        /// String value of the enum field names used in the ProtoBuf definition.
6849        ///
6850        /// The values are not transformed in any way and thus are considered stable
6851        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6852        pub fn as_str_name(&self) -> &'static str {
6853            match self {
6854                Self::Unspecified => "GPU_DRIVER_VERSION_UNSPECIFIED",
6855                Self::InstallationDisabled => "INSTALLATION_DISABLED",
6856                Self::Default => "DEFAULT",
6857                Self::Latest => "LATEST",
6858            }
6859        }
6860        /// Creates an enum from field names used in the ProtoBuf definition.
6861        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6862            match value {
6863                "GPU_DRIVER_VERSION_UNSPECIFIED" => Some(Self::Unspecified),
6864                "INSTALLATION_DISABLED" => Some(Self::InstallationDisabled),
6865                "DEFAULT" => Some(Self::Default),
6866                "LATEST" => Some(Self::Latest),
6867                _ => None,
6868            }
6869        }
6870    }
6871}
6872/// WorkloadMetadataConfig defines the metadata configuration to expose to
6873/// workloads on the node pool.
6874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6875pub struct WorkloadMetadataConfig {
6876    /// Mode is the configuration for how to expose metadata to workloads running
6877    /// on the node pool.
6878    #[prost(enumeration = "workload_metadata_config::Mode", tag = "2")]
6879    pub mode: i32,
6880}
6881/// Nested message and enum types in `WorkloadMetadataConfig`.
6882pub mod workload_metadata_config {
6883    /// Mode is the configuration for how to expose metadata to workloads running
6884    /// on the node.
6885    #[derive(
6886        Clone,
6887        Copy,
6888        Debug,
6889        PartialEq,
6890        Eq,
6891        Hash,
6892        PartialOrd,
6893        Ord,
6894        ::prost::Enumeration
6895    )]
6896    #[repr(i32)]
6897    pub enum Mode {
6898        /// Not set.
6899        Unspecified = 0,
6900        /// Expose all Compute Engine metadata to pods.
6901        GceMetadata = 1,
6902        /// Run the GKE Metadata Server on this node. The GKE Metadata Server exposes
6903        /// a metadata API to workloads that is compatible with the V1 Compute
6904        /// Metadata APIs exposed by the Compute Engine and App Engine Metadata
6905        /// Servers. This feature can only be enabled if Workload Identity is enabled
6906        /// at the cluster level.
6907        GkeMetadata = 2,
6908    }
6909    impl Mode {
6910        /// String value of the enum field names used in the ProtoBuf definition.
6911        ///
6912        /// The values are not transformed in any way and thus are considered stable
6913        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6914        pub fn as_str_name(&self) -> &'static str {
6915            match self {
6916                Self::Unspecified => "MODE_UNSPECIFIED",
6917                Self::GceMetadata => "GCE_METADATA",
6918                Self::GkeMetadata => "GKE_METADATA",
6919            }
6920        }
6921        /// Creates an enum from field names used in the ProtoBuf definition.
6922        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6923            match value {
6924                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
6925                "GCE_METADATA" => Some(Self::GceMetadata),
6926                "GKE_METADATA" => Some(Self::GkeMetadata),
6927                _ => None,
6928            }
6929        }
6930    }
6931}
6932/// SetNetworkPolicyRequest enables/disables network policy for a cluster.
6933#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6934pub struct SetNetworkPolicyRequest {
6935    /// Deprecated. The Google Developers Console [project ID or project
6936    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6937    /// This field has been deprecated and replaced by the name field.
6938    #[deprecated]
6939    #[prost(string, tag = "1")]
6940    pub project_id: ::prost::alloc::string::String,
6941    /// Deprecated. The name of the Google Compute Engine
6942    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6943    /// in which the cluster resides. This field has been deprecated and replaced
6944    /// by the name field.
6945    #[deprecated]
6946    #[prost(string, tag = "2")]
6947    pub zone: ::prost::alloc::string::String,
6948    /// Deprecated. The name of the cluster.
6949    /// This field has been deprecated and replaced by the name field.
6950    #[deprecated]
6951    #[prost(string, tag = "3")]
6952    pub cluster_id: ::prost::alloc::string::String,
6953    /// Required. Configuration options for the NetworkPolicy feature.
6954    #[prost(message, optional, tag = "4")]
6955    pub network_policy: ::core::option::Option<NetworkPolicy>,
6956    /// The name (project, location, cluster name) of the cluster to set networking
6957    /// policy. Specified in the format `projects/*/locations/*/clusters/*`.
6958    #[prost(string, tag = "6")]
6959    pub name: ::prost::alloc::string::String,
6960}
6961/// SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
6962#[derive(Clone, PartialEq, ::prost::Message)]
6963pub struct SetMaintenancePolicyRequest {
6964    /// Required. The Google Developers Console [project ID or project
6965    /// number](<https://cloud.google.com/resource-manager/docs/creating-managing-projects>).
6966    #[prost(string, tag = "1")]
6967    pub project_id: ::prost::alloc::string::String,
6968    /// Required. The name of the Google Compute Engine
6969    /// [zone](<https://cloud.google.com/compute/docs/zones#available>)
6970    /// in which the cluster resides.
6971    #[prost(string, tag = "2")]
6972    pub zone: ::prost::alloc::string::String,
6973    /// Required. The name of the cluster to update.
6974    #[prost(string, tag = "3")]
6975    pub cluster_id: ::prost::alloc::string::String,
6976    /// Required. The maintenance policy to be set for the cluster. An empty field
6977    /// clears the existing maintenance policy.
6978    #[prost(message, optional, tag = "4")]
6979    pub maintenance_policy: ::core::option::Option<MaintenancePolicy>,
6980    /// The name (project, location, cluster name) of the cluster to set
6981    /// maintenance policy.
6982    /// Specified in the format `projects/*/locations/*/clusters/*`.
6983    #[prost(string, tag = "5")]
6984    pub name: ::prost::alloc::string::String,
6985}
6986/// StatusCondition describes why a cluster or a node pool has a certain status
6987/// (e.g., ERROR or DEGRADED).
6988#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6989pub struct StatusCondition {
6990    /// Machine-friendly representation of the condition
6991    /// Deprecated. Use canonical_code instead.
6992    #[deprecated]
6993    #[prost(enumeration = "status_condition::Code", tag = "1")]
6994    pub code: i32,
6995    /// Human-friendly representation of the condition
6996    #[prost(string, tag = "2")]
6997    pub message: ::prost::alloc::string::String,
6998    /// Canonical code of the condition.
6999    #[prost(enumeration = "super::super::rpc::Code", tag = "3")]
7000    pub canonical_code: i32,
7001}
7002/// Nested message and enum types in `StatusCondition`.
7003pub mod status_condition {
7004    /// Code for each condition
7005    #[derive(
7006        Clone,
7007        Copy,
7008        Debug,
7009        PartialEq,
7010        Eq,
7011        Hash,
7012        PartialOrd,
7013        Ord,
7014        ::prost::Enumeration
7015    )]
7016    #[repr(i32)]
7017    pub enum Code {
7018        /// UNKNOWN indicates a generic condition.
7019        Unknown = 0,
7020        /// GCE_STOCKOUT indicates that Google Compute Engine resources are
7021        /// temporarily unavailable.
7022        GceStockout = 1,
7023        /// GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
7024        /// service account.
7025        GkeServiceAccountDeleted = 2,
7026        /// Google Compute Engine quota was exceeded.
7027        GceQuotaExceeded = 3,
7028        /// Cluster state was manually changed by an SRE due to a system logic error.
7029        SetByOperator = 4,
7030        /// Unable to perform an encrypt operation against the CloudKMS key used for
7031        /// etcd level encryption.
7032        CloudKmsKeyError = 7,
7033        /// Cluster CA is expiring soon.
7034        CaExpiring = 9,
7035        /// Node service account is missing permissions.
7036        NodeServiceAccountMissingPermissions = 10,
7037        /// Cloud KMS key version used for etcd level encryption has been destroyed.
7038        /// This is a permanent error.
7039        CloudKmsKeyDestroyed = 11,
7040    }
7041    impl Code {
7042        /// String value of the enum field names used in the ProtoBuf definition.
7043        ///
7044        /// The values are not transformed in any way and thus are considered stable
7045        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7046        pub fn as_str_name(&self) -> &'static str {
7047            match self {
7048                Self::Unknown => "UNKNOWN",
7049                Self::GceStockout => "GCE_STOCKOUT",
7050                Self::GkeServiceAccountDeleted => "GKE_SERVICE_ACCOUNT_DELETED",
7051                Self::GceQuotaExceeded => "GCE_QUOTA_EXCEEDED",
7052                Self::SetByOperator => "SET_BY_OPERATOR",
7053                Self::CloudKmsKeyError => "CLOUD_KMS_KEY_ERROR",
7054                Self::CaExpiring => "CA_EXPIRING",
7055                Self::NodeServiceAccountMissingPermissions => {
7056                    "NODE_SERVICE_ACCOUNT_MISSING_PERMISSIONS"
7057                }
7058                Self::CloudKmsKeyDestroyed => "CLOUD_KMS_KEY_DESTROYED",
7059            }
7060        }
7061        /// Creates an enum from field names used in the ProtoBuf definition.
7062        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7063            match value {
7064                "UNKNOWN" => Some(Self::Unknown),
7065                "GCE_STOCKOUT" => Some(Self::GceStockout),
7066                "GKE_SERVICE_ACCOUNT_DELETED" => Some(Self::GkeServiceAccountDeleted),
7067                "GCE_QUOTA_EXCEEDED" => Some(Self::GceQuotaExceeded),
7068                "SET_BY_OPERATOR" => Some(Self::SetByOperator),
7069                "CLOUD_KMS_KEY_ERROR" => Some(Self::CloudKmsKeyError),
7070                "CA_EXPIRING" => Some(Self::CaExpiring),
7071                "NODE_SERVICE_ACCOUNT_MISSING_PERMISSIONS" => {
7072                    Some(Self::NodeServiceAccountMissingPermissions)
7073                }
7074                "CLOUD_KMS_KEY_DESTROYED" => Some(Self::CloudKmsKeyDestroyed),
7075                _ => None,
7076            }
7077        }
7078    }
7079}
7080/// NetworkConfig reports the relative names of network & subnetwork.
7081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7082pub struct NetworkConfig {
7083    /// Output only. The relative name of the Google Compute Engine
7084    /// [network](<https://cloud.google.com/compute/docs/networks-and-firewalls#networks>)
7085    /// to which the cluster is connected. Example:
7086    /// projects/my-project/global/networks/my-network
7087    #[prost(string, tag = "1")]
7088    pub network: ::prost::alloc::string::String,
7089    /// Output only. The relative name of the Google Compute Engine
7090    /// [subnetwork](<https://cloud.google.com/compute/docs/vpc>)
7091    /// to which the cluster is connected. Example:
7092    /// projects/my-project/regions/us-central1/subnetworks/my-subnet
7093    #[prost(string, tag = "2")]
7094    pub subnetwork: ::prost::alloc::string::String,
7095    /// Whether Intra-node visibility is enabled for this cluster.
7096    /// This makes same node pod to pod traffic visible for VPC network.
7097    #[prost(bool, tag = "5")]
7098    pub enable_intra_node_visibility: bool,
7099    /// Whether the cluster disables default in-node sNAT rules. In-node sNAT rules
7100    /// will be disabled when default_snat_status is disabled. When disabled is set
7101    /// to false, default IP masquerade rules will be applied to the nodes to
7102    /// prevent sNAT on cluster internal traffic.
7103    #[prost(message, optional, tag = "7")]
7104    pub default_snat_status: ::core::option::Option<DefaultSnatStatus>,
7105    /// Whether L4ILB Subsetting is enabled for this cluster.
7106    #[prost(bool, tag = "10")]
7107    pub enable_l4ilb_subsetting: bool,
7108    /// The desired datapath provider for this cluster. By default, uses the
7109    /// IPTables-based kube-proxy implementation.
7110    #[prost(enumeration = "DatapathProvider", tag = "11")]
7111    pub datapath_provider: i32,
7112    /// The desired state of IPv6 connectivity to Google Services.
7113    /// By default, no private IPv6 access to or from Google Services (all access
7114    /// will be via IPv4)
7115    #[prost(enumeration = "PrivateIPv6GoogleAccess", tag = "12")]
7116    pub private_ipv6_google_access: i32,
7117    /// DNSConfig contains clusterDNS config for this cluster.
7118    #[prost(message, optional, tag = "13")]
7119    pub dns_config: ::core::option::Option<DnsConfig>,
7120    /// ServiceExternalIPsConfig specifies if services with externalIPs field are
7121    /// blocked or not.
7122    #[prost(message, optional, tag = "15")]
7123    pub service_external_ips_config: ::core::option::Option<ServiceExternalIPsConfig>,
7124    /// GatewayAPIConfig contains the desired config of Gateway API on this
7125    /// cluster.
7126    #[prost(message, optional, tag = "16")]
7127    pub gateway_api_config: ::core::option::Option<GatewayApiConfig>,
7128    /// Whether multi-networking is enabled for this cluster.
7129    #[prost(bool, tag = "17")]
7130    pub enable_multi_networking: bool,
7131    /// Network bandwidth tier configuration.
7132    #[prost(message, optional, tag = "18")]
7133    pub network_performance_config: ::core::option::Option<
7134        network_config::ClusterNetworkPerformanceConfig,
7135    >,
7136    /// Whether FQDN Network Policy is enabled on this cluster.
7137    #[prost(bool, optional, tag = "19")]
7138    pub enable_fqdn_network_policy: ::core::option::Option<bool>,
7139    /// Specify the details of in-transit encryption.
7140    /// Now named inter-node transparent encryption.
7141    #[prost(enumeration = "InTransitEncryptionConfig", optional, tag = "20")]
7142    pub in_transit_encryption_config: ::core::option::Option<i32>,
7143    /// Whether CiliumClusterwideNetworkPolicy is enabled on this cluster.
7144    #[prost(bool, optional, tag = "21")]
7145    pub enable_cilium_clusterwide_network_policy: ::core::option::Option<bool>,
7146    /// Controls whether by default nodes have private IP addresses only.
7147    /// It is invalid to specify both \[PrivateClusterConfig.enablePrivateNodes\]\[\]
7148    /// and this field at the same time.
7149    /// To update the default setting, use
7150    /// \[ClusterUpdate.desired_default_enable_private_nodes\]\[google.container.v1.ClusterUpdate.desired_default_enable_private_nodes\]
7151    #[prost(bool, optional, tag = "22")]
7152    pub default_enable_private_nodes: ::core::option::Option<bool>,
7153    /// Disable L4 load balancer VPC firewalls to enable firewall policies.
7154    #[prost(bool, optional, tag = "24")]
7155    pub disable_l4_lb_firewall_reconciliation: ::core::option::Option<bool>,
7156}
7157/// Nested message and enum types in `NetworkConfig`.
7158pub mod network_config {
7159    /// Configuration of network bandwidth tiers
7160    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7161    pub struct ClusterNetworkPerformanceConfig {
7162        /// Specifies the total network bandwidth tier for NodePools in the cluster.
7163        #[prost(
7164            enumeration = "cluster_network_performance_config::Tier",
7165            optional,
7166            tag = "1"
7167        )]
7168        pub total_egress_bandwidth_tier: ::core::option::Option<i32>,
7169    }
7170    /// Nested message and enum types in `ClusterNetworkPerformanceConfig`.
7171    pub mod cluster_network_performance_config {
7172        /// Node network tier
7173        #[derive(
7174            Clone,
7175            Copy,
7176            Debug,
7177            PartialEq,
7178            Eq,
7179            Hash,
7180            PartialOrd,
7181            Ord,
7182            ::prost::Enumeration
7183        )]
7184        #[repr(i32)]
7185        pub enum Tier {
7186            /// Default value
7187            Unspecified = 0,
7188            /// Higher bandwidth, actual values based on VM size.
7189            Tier1 = 1,
7190        }
7191        impl Tier {
7192            /// String value of the enum field names used in the ProtoBuf definition.
7193            ///
7194            /// The values are not transformed in any way and thus are considered stable
7195            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7196            pub fn as_str_name(&self) -> &'static str {
7197                match self {
7198                    Self::Unspecified => "TIER_UNSPECIFIED",
7199                    Self::Tier1 => "TIER_1",
7200                }
7201            }
7202            /// Creates an enum from field names used in the ProtoBuf definition.
7203            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7204                match value {
7205                    "TIER_UNSPECIFIED" => Some(Self::Unspecified),
7206                    "TIER_1" => Some(Self::Tier1),
7207                    _ => None,
7208                }
7209            }
7210        }
7211    }
7212}
7213/// GatewayAPIConfig contains the desired config of Gateway API on this cluster.
7214#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7215pub struct GatewayApiConfig {
7216    /// The Gateway API release channel to use for Gateway API.
7217    #[prost(enumeration = "gateway_api_config::Channel", tag = "1")]
7218    pub channel: i32,
7219}
7220/// Nested message and enum types in `GatewayAPIConfig`.
7221pub mod gateway_api_config {
7222    /// Channel describes if/how Gateway API should be installed and implemented in
7223    /// a cluster.
7224    #[derive(
7225        Clone,
7226        Copy,
7227        Debug,
7228        PartialEq,
7229        Eq,
7230        Hash,
7231        PartialOrd,
7232        Ord,
7233        ::prost::Enumeration
7234    )]
7235    #[repr(i32)]
7236    pub enum Channel {
7237        /// Default value.
7238        Unspecified = 0,
7239        /// Gateway API support is disabled
7240        Disabled = 1,
7241        /// Deprecated: use CHANNEL_STANDARD instead.
7242        /// Gateway API support is enabled, experimental CRDs are installed
7243        #[deprecated]
7244        Experimental = 3,
7245        /// Gateway API support is enabled, standard CRDs are installed
7246        Standard = 4,
7247    }
7248    impl Channel {
7249        /// String value of the enum field names used in the ProtoBuf definition.
7250        ///
7251        /// The values are not transformed in any way and thus are considered stable
7252        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7253        pub fn as_str_name(&self) -> &'static str {
7254            match self {
7255                Self::Unspecified => "CHANNEL_UNSPECIFIED",
7256                Self::Disabled => "CHANNEL_DISABLED",
7257                #[allow(deprecated)]
7258                Self::Experimental => "CHANNEL_EXPERIMENTAL",
7259                Self::Standard => "CHANNEL_STANDARD",
7260            }
7261        }
7262        /// Creates an enum from field names used in the ProtoBuf definition.
7263        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7264            match value {
7265                "CHANNEL_UNSPECIFIED" => Some(Self::Unspecified),
7266                "CHANNEL_DISABLED" => Some(Self::Disabled),
7267                "CHANNEL_EXPERIMENTAL" => Some(#[allow(deprecated)] Self::Experimental),
7268                "CHANNEL_STANDARD" => Some(Self::Standard),
7269                _ => None,
7270            }
7271        }
7272    }
7273}
7274/// Config to block services with externalIPs field.
7275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7276pub struct ServiceExternalIPsConfig {
7277    /// Whether Services with ExternalIPs field are allowed or not.
7278    #[prost(bool, tag = "1")]
7279    pub enabled: bool,
7280}
7281/// GetOpenIDConfigRequest gets the OIDC discovery document for the
7282/// cluster. See the OpenID Connect Discovery 1.0 specification for details.
7283#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7284pub struct GetOpenIdConfigRequest {
7285    /// The cluster (project, location, cluster name) to get the discovery document
7286    /// for. Specified in the format `projects/*/locations/*/clusters/*`.
7287    #[prost(string, tag = "1")]
7288    pub parent: ::prost::alloc::string::String,
7289}
7290/// GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
7291/// See the OpenID Connect Discovery 1.0 specification for details.
7292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7293pub struct GetOpenIdConfigResponse {
7294    /// OIDC Issuer.
7295    #[prost(string, tag = "1")]
7296    pub issuer: ::prost::alloc::string::String,
7297    /// JSON Web Key uri.
7298    #[prost(string, tag = "2")]
7299    pub jwks_uri: ::prost::alloc::string::String,
7300    /// Supported response types.
7301    #[prost(string, repeated, tag = "3")]
7302    pub response_types_supported: ::prost::alloc::vec::Vec<
7303        ::prost::alloc::string::String,
7304    >,
7305    /// Supported subject types.
7306    #[prost(string, repeated, tag = "4")]
7307    pub subject_types_supported: ::prost::alloc::vec::Vec<
7308        ::prost::alloc::string::String,
7309    >,
7310    /// supported ID Token signing Algorithms.
7311    #[prost(string, repeated, tag = "5")]
7312    pub id_token_signing_alg_values_supported: ::prost::alloc::vec::Vec<
7313        ::prost::alloc::string::String,
7314    >,
7315    /// Supported claims.
7316    #[prost(string, repeated, tag = "6")]
7317    pub claims_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7318    /// Supported grant types.
7319    #[prost(string, repeated, tag = "7")]
7320    pub grant_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7321}
7322/// GetJSONWebKeysRequest gets the public component of the keys used by the
7323/// cluster to sign token requests. This will be the jwks_uri for the discover
7324/// document returned by getOpenIDConfig. See the OpenID Connect
7325/// Discovery 1.0 specification for details.
7326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7327pub struct GetJsonWebKeysRequest {
7328    /// The cluster (project, location, cluster name) to get keys for. Specified in
7329    /// the format `projects/*/locations/*/clusters/*`.
7330    #[prost(string, tag = "1")]
7331    pub parent: ::prost::alloc::string::String,
7332}
7333/// Jwk is a JSON Web Key as specified in RFC 7517
7334#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7335pub struct Jwk {
7336    /// Key Type.
7337    #[prost(string, tag = "1")]
7338    pub kty: ::prost::alloc::string::String,
7339    /// Algorithm.
7340    #[prost(string, tag = "2")]
7341    pub alg: ::prost::alloc::string::String,
7342    /// Permitted uses for the public keys.
7343    #[prost(string, tag = "3")]
7344    pub r#use: ::prost::alloc::string::String,
7345    /// Key ID.
7346    #[prost(string, tag = "4")]
7347    pub kid: ::prost::alloc::string::String,
7348    /// Used for RSA keys.
7349    #[prost(string, tag = "5")]
7350    pub n: ::prost::alloc::string::String,
7351    /// Used for RSA keys.
7352    #[prost(string, tag = "6")]
7353    pub e: ::prost::alloc::string::String,
7354    /// Used for ECDSA keys.
7355    #[prost(string, tag = "7")]
7356    pub x: ::prost::alloc::string::String,
7357    /// Used for ECDSA keys.
7358    #[prost(string, tag = "8")]
7359    pub y: ::prost::alloc::string::String,
7360    /// Used for ECDSA keys.
7361    #[prost(string, tag = "9")]
7362    pub crv: ::prost::alloc::string::String,
7363}
7364/// GetJSONWebKeysResponse is a valid JSON Web Key Set as specified in rfc 7517
7365#[derive(Clone, PartialEq, ::prost::Message)]
7366pub struct GetJsonWebKeysResponse {
7367    /// The public component of the keys used by the cluster to sign token
7368    /// requests.
7369    #[prost(message, repeated, tag = "1")]
7370    pub keys: ::prost::alloc::vec::Vec<Jwk>,
7371}
7372/// CheckAutopilotCompatibilityRequest requests getting the blockers for the
7373/// given operation in the cluster.
7374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7375pub struct CheckAutopilotCompatibilityRequest {
7376    /// The name (project, location, cluster) of the cluster to retrieve.
7377    /// Specified in the format `projects/*/locations/*/clusters/*`.
7378    #[prost(string, tag = "1")]
7379    pub name: ::prost::alloc::string::String,
7380}
7381/// AutopilotCompatibilityIssue contains information about a specific
7382/// compatibility issue with Autopilot mode.
7383#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7384pub struct AutopilotCompatibilityIssue {
7385    /// The last time when this issue was observed.
7386    #[prost(message, optional, tag = "1")]
7387    pub last_observation: ::core::option::Option<::prost_types::Timestamp>,
7388    /// The constraint type of the issue.
7389    #[prost(string, tag = "2")]
7390    pub constraint_type: ::prost::alloc::string::String,
7391    /// The incompatibility type of this issue.
7392    #[prost(enumeration = "autopilot_compatibility_issue::IssueType", tag = "3")]
7393    pub incompatibility_type: i32,
7394    /// The name of the resources which are subject to this issue.
7395    #[prost(string, repeated, tag = "4")]
7396    pub subjects: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7397    /// A URL to a public documentation, which addresses resolving this issue.
7398    #[prost(string, tag = "5")]
7399    pub documentation_url: ::prost::alloc::string::String,
7400    /// The description of the issue.
7401    #[prost(string, tag = "6")]
7402    pub description: ::prost::alloc::string::String,
7403}
7404/// Nested message and enum types in `AutopilotCompatibilityIssue`.
7405pub mod autopilot_compatibility_issue {
7406    /// The type of the reported issue.
7407    #[derive(
7408        Clone,
7409        Copy,
7410        Debug,
7411        PartialEq,
7412        Eq,
7413        Hash,
7414        PartialOrd,
7415        Ord,
7416        ::prost::Enumeration
7417    )]
7418    #[repr(i32)]
7419    pub enum IssueType {
7420        /// Default value, should not be used.
7421        Unspecified = 0,
7422        /// Indicates that the issue is a known incompatibility between the
7423        /// cluster and Autopilot mode.
7424        Incompatibility = 1,
7425        /// Indicates the issue is an incompatibility if customers take no further
7426        /// action to resolve.
7427        AdditionalConfigRequired = 2,
7428        /// Indicates the issue is not an incompatibility, but depending on the
7429        /// workloads business logic, there is a potential that they won't work on
7430        /// Autopilot.
7431        PassedWithOptionalConfig = 3,
7432    }
7433    impl IssueType {
7434        /// String value of the enum field names used in the ProtoBuf definition.
7435        ///
7436        /// The values are not transformed in any way and thus are considered stable
7437        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7438        pub fn as_str_name(&self) -> &'static str {
7439            match self {
7440                Self::Unspecified => "UNSPECIFIED",
7441                Self::Incompatibility => "INCOMPATIBILITY",
7442                Self::AdditionalConfigRequired => "ADDITIONAL_CONFIG_REQUIRED",
7443                Self::PassedWithOptionalConfig => "PASSED_WITH_OPTIONAL_CONFIG",
7444            }
7445        }
7446        /// Creates an enum from field names used in the ProtoBuf definition.
7447        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7448            match value {
7449                "UNSPECIFIED" => Some(Self::Unspecified),
7450                "INCOMPATIBILITY" => Some(Self::Incompatibility),
7451                "ADDITIONAL_CONFIG_REQUIRED" => Some(Self::AdditionalConfigRequired),
7452                "PASSED_WITH_OPTIONAL_CONFIG" => Some(Self::PassedWithOptionalConfig),
7453                _ => None,
7454            }
7455        }
7456    }
7457}
7458/// CheckAutopilotCompatibilityResponse has a list of compatibility issues.
7459#[derive(Clone, PartialEq, ::prost::Message)]
7460pub struct CheckAutopilotCompatibilityResponse {
7461    /// The list of issues for the given operation.
7462    #[prost(message, repeated, tag = "1")]
7463    pub issues: ::prost::alloc::vec::Vec<AutopilotCompatibilityIssue>,
7464    /// The summary of the autopilot compatibility response.
7465    #[prost(string, tag = "2")]
7466    pub summary: ::prost::alloc::string::String,
7467}
7468/// ReleaseChannel indicates which release channel a cluster is
7469/// subscribed to. Release channels are arranged in order of risk.
7470///
7471/// When a cluster is subscribed to a release channel, Google maintains
7472/// both the master version and the node version. Node auto-upgrade
7473/// defaults to true and cannot be disabled.
7474#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7475pub struct ReleaseChannel {
7476    /// channel specifies which release channel the cluster is subscribed to.
7477    #[prost(enumeration = "release_channel::Channel", tag = "1")]
7478    pub channel: i32,
7479}
7480/// Nested message and enum types in `ReleaseChannel`.
7481pub mod release_channel {
7482    /// Possible values for 'channel'.
7483    #[derive(
7484        Clone,
7485        Copy,
7486        Debug,
7487        PartialEq,
7488        Eq,
7489        Hash,
7490        PartialOrd,
7491        Ord,
7492        ::prost::Enumeration
7493    )]
7494    #[repr(i32)]
7495    pub enum Channel {
7496        /// No channel specified.
7497        Unspecified = 0,
7498        /// RAPID channel is offered on an early access basis for customers who want
7499        /// to test new releases.
7500        ///
7501        /// WARNING: Versions available in the RAPID Channel may be subject to
7502        /// unresolved issues with no known workaround and are not subject to any
7503        /// SLAs.
7504        Rapid = 1,
7505        /// Clusters subscribed to REGULAR receive versions that are considered GA
7506        /// quality. REGULAR is intended for production users who want to take
7507        /// advantage of new features.
7508        Regular = 2,
7509        /// Clusters subscribed to STABLE receive versions that are known to be
7510        /// stable and reliable in production.
7511        Stable = 3,
7512        /// Clusters subscribed to EXTENDED receive extended support and availability
7513        /// for versions which are known to be stable and reliable in production.
7514        Extended = 4,
7515    }
7516    impl Channel {
7517        /// String value of the enum field names used in the ProtoBuf definition.
7518        ///
7519        /// The values are not transformed in any way and thus are considered stable
7520        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7521        pub fn as_str_name(&self) -> &'static str {
7522            match self {
7523                Self::Unspecified => "UNSPECIFIED",
7524                Self::Rapid => "RAPID",
7525                Self::Regular => "REGULAR",
7526                Self::Stable => "STABLE",
7527                Self::Extended => "EXTENDED",
7528            }
7529        }
7530        /// Creates an enum from field names used in the ProtoBuf definition.
7531        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7532            match value {
7533                "UNSPECIFIED" => Some(Self::Unspecified),
7534                "RAPID" => Some(Self::Rapid),
7535                "REGULAR" => Some(Self::Regular),
7536                "STABLE" => Some(Self::Stable),
7537                "EXTENDED" => Some(Self::Extended),
7538                _ => None,
7539            }
7540        }
7541    }
7542}
7543/// Configuration for fine-grained cost management feature.
7544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7545pub struct CostManagementConfig {
7546    /// Whether the feature is enabled or not.
7547    #[prost(bool, tag = "1")]
7548    pub enabled: bool,
7549}
7550/// IntraNodeVisibilityConfig contains the desired config of the intra-node
7551/// visibility on this cluster.
7552#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7553pub struct IntraNodeVisibilityConfig {
7554    /// Enables intra node visibility for this cluster.
7555    #[prost(bool, tag = "1")]
7556    pub enabled: bool,
7557}
7558/// ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer
7559/// subsetting on this cluster.
7560#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7561pub struct IlbSubsettingConfig {
7562    /// Enables l4 ILB subsetting for this cluster.
7563    #[prost(bool, tag = "1")]
7564    pub enabled: bool,
7565}
7566/// DNSConfig contains the desired set of options for configuring clusterDNS.
7567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7568pub struct DnsConfig {
7569    /// cluster_dns indicates which in-cluster DNS provider should be used.
7570    #[prost(enumeration = "dns_config::Provider", tag = "1")]
7571    pub cluster_dns: i32,
7572    /// cluster_dns_scope indicates the scope of access to cluster DNS records.
7573    #[prost(enumeration = "dns_config::DnsScope", tag = "2")]
7574    pub cluster_dns_scope: i32,
7575    /// cluster_dns_domain is the suffix used for all cluster service records.
7576    #[prost(string, tag = "3")]
7577    pub cluster_dns_domain: ::prost::alloc::string::String,
7578    /// Optional. The domain used in Additive VPC scope.
7579    #[prost(string, tag = "5")]
7580    pub additive_vpc_scope_dns_domain: ::prost::alloc::string::String,
7581}
7582/// Nested message and enum types in `DNSConfig`.
7583pub mod dns_config {
7584    /// Provider lists the various in-cluster DNS providers.
7585    #[derive(
7586        Clone,
7587        Copy,
7588        Debug,
7589        PartialEq,
7590        Eq,
7591        Hash,
7592        PartialOrd,
7593        Ord,
7594        ::prost::Enumeration
7595    )]
7596    #[repr(i32)]
7597    pub enum Provider {
7598        /// Default value
7599        Unspecified = 0,
7600        /// Use GKE default DNS provider(kube-dns) for DNS resolution.
7601        PlatformDefault = 1,
7602        /// Use CloudDNS for DNS resolution.
7603        CloudDns = 2,
7604        /// Use KubeDNS for DNS resolution.
7605        KubeDns = 3,
7606    }
7607    impl Provider {
7608        /// String value of the enum field names used in the ProtoBuf definition.
7609        ///
7610        /// The values are not transformed in any way and thus are considered stable
7611        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7612        pub fn as_str_name(&self) -> &'static str {
7613            match self {
7614                Self::Unspecified => "PROVIDER_UNSPECIFIED",
7615                Self::PlatformDefault => "PLATFORM_DEFAULT",
7616                Self::CloudDns => "CLOUD_DNS",
7617                Self::KubeDns => "KUBE_DNS",
7618            }
7619        }
7620        /// Creates an enum from field names used in the ProtoBuf definition.
7621        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7622            match value {
7623                "PROVIDER_UNSPECIFIED" => Some(Self::Unspecified),
7624                "PLATFORM_DEFAULT" => Some(Self::PlatformDefault),
7625                "CLOUD_DNS" => Some(Self::CloudDns),
7626                "KUBE_DNS" => Some(Self::KubeDns),
7627                _ => None,
7628            }
7629        }
7630    }
7631    /// DNSScope lists the various scopes of access to cluster DNS records.
7632    #[derive(
7633        Clone,
7634        Copy,
7635        Debug,
7636        PartialEq,
7637        Eq,
7638        Hash,
7639        PartialOrd,
7640        Ord,
7641        ::prost::Enumeration
7642    )]
7643    #[repr(i32)]
7644    pub enum DnsScope {
7645        /// Default value, will be inferred as cluster scope.
7646        Unspecified = 0,
7647        /// DNS records are accessible from within the cluster.
7648        ClusterScope = 1,
7649        /// DNS records are accessible from within the VPC.
7650        VpcScope = 2,
7651    }
7652    impl DnsScope {
7653        /// String value of the enum field names used in the ProtoBuf definition.
7654        ///
7655        /// The values are not transformed in any way and thus are considered stable
7656        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7657        pub fn as_str_name(&self) -> &'static str {
7658            match self {
7659                Self::Unspecified => "DNS_SCOPE_UNSPECIFIED",
7660                Self::ClusterScope => "CLUSTER_SCOPE",
7661                Self::VpcScope => "VPC_SCOPE",
7662            }
7663        }
7664        /// Creates an enum from field names used in the ProtoBuf definition.
7665        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7666            match value {
7667                "DNS_SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
7668                "CLUSTER_SCOPE" => Some(Self::ClusterScope),
7669                "VPC_SCOPE" => Some(Self::VpcScope),
7670                _ => None,
7671            }
7672        }
7673    }
7674}
7675/// Constraints applied to pods.
7676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7677pub struct MaxPodsConstraint {
7678    /// Constraint enforced on the max num of pods per node.
7679    #[prost(int64, tag = "1")]
7680    pub max_pods_per_node: i64,
7681}
7682/// Configuration for the use of Kubernetes Service Accounts in IAM policies.
7683#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7684pub struct WorkloadIdentityConfig {
7685    /// The workload pool to attach all Kubernetes service accounts to.
7686    #[prost(string, tag = "2")]
7687    pub workload_pool: ::prost::alloc::string::String,
7688}
7689/// IdentityServiceConfig is configuration for Identity Service which allows
7690/// customers to use external identity providers with the K8S API
7691#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7692pub struct IdentityServiceConfig {
7693    /// Whether to enable the Identity Service component
7694    #[prost(bool, tag = "1")]
7695    pub enabled: bool,
7696}
7697/// Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
7698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7699pub struct MeshCertificates {
7700    /// enable_certificates controls issuance of workload mTLS certificates.
7701    ///
7702    /// If set, the GKE Workload Identity Certificates controller and node agent
7703    /// will be deployed in the cluster, which can then be configured by creating a
7704    /// WorkloadCertificateConfig Custom Resource.
7705    ///
7706    /// Requires Workload Identity
7707    /// (\[workload_pool\]\[google.container.v1.WorkloadIdentityConfig.workload_pool\]
7708    /// must be non-empty).
7709    #[prost(message, optional, tag = "1")]
7710    pub enable_certificates: ::core::option::Option<bool>,
7711}
7712/// Configuration of etcd encryption.
7713#[derive(Clone, PartialEq, ::prost::Message)]
7714pub struct DatabaseEncryption {
7715    /// Name of CloudKMS key to use for the encryption of secrets in etcd.
7716    /// Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
7717    #[prost(string, tag = "1")]
7718    pub key_name: ::prost::alloc::string::String,
7719    /// The desired state of etcd encryption.
7720    #[prost(enumeration = "database_encryption::State", tag = "2")]
7721    pub state: i32,
7722    /// Output only. The current state of etcd encryption.
7723    #[prost(enumeration = "database_encryption::CurrentState", optional, tag = "3")]
7724    pub current_state: ::core::option::Option<i32>,
7725    /// Output only. Keys in use by the cluster for decrypting
7726    /// existing objects, in addition to the key in `key_name`.
7727    ///
7728    /// Each item is a CloudKMS key resource.
7729    #[prost(string, repeated, tag = "4")]
7730    pub decryption_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7731    /// Output only. Records errors seen during DatabaseEncryption update
7732    /// operations.
7733    #[prost(message, repeated, tag = "5")]
7734    pub last_operation_errors: ::prost::alloc::vec::Vec<
7735        database_encryption::OperationError,
7736    >,
7737}
7738/// Nested message and enum types in `DatabaseEncryption`.
7739pub mod database_encryption {
7740    /// OperationError records errors seen from CloudKMS keys
7741    /// encountered during updates to DatabaseEncryption configuration.
7742    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7743    pub struct OperationError {
7744        /// CloudKMS key resource that had the error.
7745        #[prost(string, tag = "1")]
7746        pub key_name: ::prost::alloc::string::String,
7747        /// Description of the error seen during the operation.
7748        #[prost(string, tag = "2")]
7749        pub error_message: ::prost::alloc::string::String,
7750        /// Time when the CloudKMS error was seen.
7751        #[prost(message, optional, tag = "3")]
7752        pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
7753    }
7754    /// State of etcd encryption.
7755    #[derive(
7756        Clone,
7757        Copy,
7758        Debug,
7759        PartialEq,
7760        Eq,
7761        Hash,
7762        PartialOrd,
7763        Ord,
7764        ::prost::Enumeration
7765    )]
7766    #[repr(i32)]
7767    pub enum State {
7768        /// Should never be set
7769        Unknown = 0,
7770        /// Secrets in etcd are encrypted.
7771        Encrypted = 1,
7772        /// Secrets in etcd are stored in plain text (at etcd level) - this is
7773        /// unrelated to Compute Engine level full disk encryption.
7774        Decrypted = 2,
7775    }
7776    impl State {
7777        /// String value of the enum field names used in the ProtoBuf definition.
7778        ///
7779        /// The values are not transformed in any way and thus are considered stable
7780        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7781        pub fn as_str_name(&self) -> &'static str {
7782            match self {
7783                Self::Unknown => "UNKNOWN",
7784                Self::Encrypted => "ENCRYPTED",
7785                Self::Decrypted => "DECRYPTED",
7786            }
7787        }
7788        /// Creates an enum from field names used in the ProtoBuf definition.
7789        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7790            match value {
7791                "UNKNOWN" => Some(Self::Unknown),
7792                "ENCRYPTED" => Some(Self::Encrypted),
7793                "DECRYPTED" => Some(Self::Decrypted),
7794                _ => None,
7795            }
7796        }
7797    }
7798    /// Current State of etcd encryption.
7799    #[derive(
7800        Clone,
7801        Copy,
7802        Debug,
7803        PartialEq,
7804        Eq,
7805        Hash,
7806        PartialOrd,
7807        Ord,
7808        ::prost::Enumeration
7809    )]
7810    #[repr(i32)]
7811    pub enum CurrentState {
7812        /// Should never be set
7813        Unspecified = 0,
7814        /// Secrets in etcd are encrypted.
7815        Encrypted = 7,
7816        /// Secrets in etcd are stored in plain text (at etcd level) - this is
7817        /// unrelated to Compute Engine level full disk encryption.
7818        Decrypted = 2,
7819        /// Encryption (or re-encryption with a different CloudKMS key)
7820        /// of Secrets is in progress.
7821        EncryptionPending = 3,
7822        /// Encryption (or re-encryption with a different CloudKMS key) of Secrets in
7823        /// etcd encountered an error.
7824        EncryptionError = 4,
7825        /// De-crypting Secrets to plain text in etcd is in progress.
7826        DecryptionPending = 5,
7827        /// De-crypting Secrets to plain text in etcd encountered an error.
7828        DecryptionError = 6,
7829    }
7830    impl CurrentState {
7831        /// String value of the enum field names used in the ProtoBuf definition.
7832        ///
7833        /// The values are not transformed in any way and thus are considered stable
7834        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7835        pub fn as_str_name(&self) -> &'static str {
7836            match self {
7837                Self::Unspecified => "CURRENT_STATE_UNSPECIFIED",
7838                Self::Encrypted => "CURRENT_STATE_ENCRYPTED",
7839                Self::Decrypted => "CURRENT_STATE_DECRYPTED",
7840                Self::EncryptionPending => "CURRENT_STATE_ENCRYPTION_PENDING",
7841                Self::EncryptionError => "CURRENT_STATE_ENCRYPTION_ERROR",
7842                Self::DecryptionPending => "CURRENT_STATE_DECRYPTION_PENDING",
7843                Self::DecryptionError => "CURRENT_STATE_DECRYPTION_ERROR",
7844            }
7845        }
7846        /// Creates an enum from field names used in the ProtoBuf definition.
7847        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7848            match value {
7849                "CURRENT_STATE_UNSPECIFIED" => Some(Self::Unspecified),
7850                "CURRENT_STATE_ENCRYPTED" => Some(Self::Encrypted),
7851                "CURRENT_STATE_DECRYPTED" => Some(Self::Decrypted),
7852                "CURRENT_STATE_ENCRYPTION_PENDING" => Some(Self::EncryptionPending),
7853                "CURRENT_STATE_ENCRYPTION_ERROR" => Some(Self::EncryptionError),
7854                "CURRENT_STATE_DECRYPTION_PENDING" => Some(Self::DecryptionPending),
7855                "CURRENT_STATE_DECRYPTION_ERROR" => Some(Self::DecryptionError),
7856                _ => None,
7857            }
7858        }
7859    }
7860}
7861/// ListUsableSubnetworksRequest requests the list of usable subnetworks
7862/// available to a user for creating clusters.
7863#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7864pub struct ListUsableSubnetworksRequest {
7865    /// The parent project where subnetworks are usable.
7866    /// Specified in the format `projects/*`.
7867    #[prost(string, tag = "1")]
7868    pub parent: ::prost::alloc::string::String,
7869    /// Filtering currently only supports equality on the networkProjectId and must
7870    /// be in the form: "networkProjectId=\[PROJECTID\]", where `networkProjectId`
7871    /// is the project which owns the listed subnetworks. This defaults to the
7872    /// parent project ID.
7873    #[prost(string, tag = "2")]
7874    pub filter: ::prost::alloc::string::String,
7875    /// The max number of results per page that should be returned. If the number
7876    /// of available results is larger than `page_size`, a `next_page_token` is
7877    /// returned which can be used to get the next page of results in subsequent
7878    /// requests. Acceptable values are 0 to 500, inclusive. (Default: 500)
7879    #[prost(int32, tag = "3")]
7880    pub page_size: i32,
7881    /// Specifies a page token to use. Set this to the nextPageToken returned by
7882    /// previous list requests to get the next page of results.
7883    #[prost(string, tag = "4")]
7884    pub page_token: ::prost::alloc::string::String,
7885}
7886/// ListUsableSubnetworksResponse is the response of
7887/// ListUsableSubnetworksRequest.
7888#[derive(Clone, PartialEq, ::prost::Message)]
7889pub struct ListUsableSubnetworksResponse {
7890    /// A list of usable subnetworks in the specified network project.
7891    #[prost(message, repeated, tag = "1")]
7892    pub subnetworks: ::prost::alloc::vec::Vec<UsableSubnetwork>,
7893    /// This token allows you to get the next page of results for list requests.
7894    /// If the number of results is larger than `page_size`, use the
7895    /// `next_page_token` as a value for the query parameter `page_token` in the
7896    /// next request. The value will become empty when there are no more pages.
7897    #[prost(string, tag = "2")]
7898    pub next_page_token: ::prost::alloc::string::String,
7899}
7900/// Secondary IP range of a usable subnetwork.
7901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7902pub struct UsableSubnetworkSecondaryRange {
7903    /// The name associated with this subnetwork secondary range, used when adding
7904    /// an alias IP range to a VM instance.
7905    #[prost(string, tag = "1")]
7906    pub range_name: ::prost::alloc::string::String,
7907    /// The range of IP addresses belonging to this subnetwork secondary range.
7908    #[prost(string, tag = "2")]
7909    pub ip_cidr_range: ::prost::alloc::string::String,
7910    /// This field is to determine the status of the secondary range programmably.
7911    #[prost(enumeration = "usable_subnetwork_secondary_range::Status", tag = "3")]
7912    pub status: i32,
7913}
7914/// Nested message and enum types in `UsableSubnetworkSecondaryRange`.
7915pub mod usable_subnetwork_secondary_range {
7916    /// Status shows the current usage of a secondary IP range.
7917    #[derive(
7918        Clone,
7919        Copy,
7920        Debug,
7921        PartialEq,
7922        Eq,
7923        Hash,
7924        PartialOrd,
7925        Ord,
7926        ::prost::Enumeration
7927    )]
7928    #[repr(i32)]
7929    pub enum Status {
7930        /// UNKNOWN is the zero value of the Status enum. It's not a valid status.
7931        Unknown = 0,
7932        /// UNUSED denotes that this range is unclaimed by any cluster.
7933        Unused = 1,
7934        /// IN_USE_SERVICE denotes that this range is claimed by cluster(s) for
7935        /// services. User-managed services range can be shared between clusters
7936        /// within the same subnetwork.
7937        InUseService = 2,
7938        /// IN_USE_SHAREABLE_POD denotes this range was created by the network admin
7939        /// and is currently claimed by a cluster for pods. It can only be used by
7940        /// other clusters as a pod range.
7941        InUseShareablePod = 3,
7942        /// IN_USE_MANAGED_POD denotes this range was created by GKE and is claimed
7943        /// for pods. It cannot be used for other clusters.
7944        InUseManagedPod = 4,
7945    }
7946    impl Status {
7947        /// String value of the enum field names used in the ProtoBuf definition.
7948        ///
7949        /// The values are not transformed in any way and thus are considered stable
7950        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7951        pub fn as_str_name(&self) -> &'static str {
7952            match self {
7953                Self::Unknown => "UNKNOWN",
7954                Self::Unused => "UNUSED",
7955                Self::InUseService => "IN_USE_SERVICE",
7956                Self::InUseShareablePod => "IN_USE_SHAREABLE_POD",
7957                Self::InUseManagedPod => "IN_USE_MANAGED_POD",
7958            }
7959        }
7960        /// Creates an enum from field names used in the ProtoBuf definition.
7961        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7962            match value {
7963                "UNKNOWN" => Some(Self::Unknown),
7964                "UNUSED" => Some(Self::Unused),
7965                "IN_USE_SERVICE" => Some(Self::InUseService),
7966                "IN_USE_SHAREABLE_POD" => Some(Self::InUseShareablePod),
7967                "IN_USE_MANAGED_POD" => Some(Self::InUseManagedPod),
7968                _ => None,
7969            }
7970        }
7971    }
7972}
7973/// UsableSubnetwork resource returns the subnetwork name, its associated network
7974/// and the primary CIDR range.
7975#[derive(Clone, PartialEq, ::prost::Message)]
7976pub struct UsableSubnetwork {
7977    /// Subnetwork Name.
7978    /// Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
7979    #[prost(string, tag = "1")]
7980    pub subnetwork: ::prost::alloc::string::String,
7981    /// Network Name.
7982    /// Example: projects/my-project/global/networks/my-network
7983    #[prost(string, tag = "2")]
7984    pub network: ::prost::alloc::string::String,
7985    /// The range of internal addresses that are owned by this subnetwork.
7986    #[prost(string, tag = "3")]
7987    pub ip_cidr_range: ::prost::alloc::string::String,
7988    /// Secondary IP ranges.
7989    #[prost(message, repeated, tag = "4")]
7990    pub secondary_ip_ranges: ::prost::alloc::vec::Vec<UsableSubnetworkSecondaryRange>,
7991    /// A human readable status message representing the reasons for cases where
7992    /// the caller cannot use the secondary ranges under the subnet. For example if
7993    /// the secondary_ip_ranges is empty due to a permission issue, an insufficient
7994    /// permission message will be given by status_message.
7995    #[prost(string, tag = "5")]
7996    pub status_message: ::prost::alloc::string::String,
7997}
7998/// Configuration for exporting cluster resource usages.
7999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8000pub struct ResourceUsageExportConfig {
8001    /// Configuration to use BigQuery as usage export destination.
8002    #[prost(message, optional, tag = "1")]
8003    pub bigquery_destination: ::core::option::Option<
8004        resource_usage_export_config::BigQueryDestination,
8005    >,
8006    /// Whether to enable network egress metering for this cluster. If enabled, a
8007    /// daemonset will be created in the cluster to meter network egress traffic.
8008    #[prost(bool, tag = "2")]
8009    pub enable_network_egress_metering: bool,
8010    /// Configuration to enable resource consumption metering.
8011    #[prost(message, optional, tag = "3")]
8012    pub consumption_metering_config: ::core::option::Option<
8013        resource_usage_export_config::ConsumptionMeteringConfig,
8014    >,
8015}
8016/// Nested message and enum types in `ResourceUsageExportConfig`.
8017pub mod resource_usage_export_config {
8018    /// Parameters for using BigQuery as the destination of resource usage export.
8019    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8020    pub struct BigQueryDestination {
8021        /// The ID of a BigQuery Dataset.
8022        #[prost(string, tag = "1")]
8023        pub dataset_id: ::prost::alloc::string::String,
8024    }
8025    /// Parameters for controlling consumption metering.
8026    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8027    pub struct ConsumptionMeteringConfig {
8028        /// Whether to enable consumption metering for this cluster. If enabled, a
8029        /// second BigQuery table will be created to hold resource consumption
8030        /// records.
8031        #[prost(bool, tag = "1")]
8032        pub enabled: bool,
8033    }
8034}
8035/// VerticalPodAutoscaling contains global, per-cluster information
8036/// required by Vertical Pod Autoscaler to automatically adjust
8037/// the resources of pods controlled by it.
8038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8039pub struct VerticalPodAutoscaling {
8040    /// Enables vertical pod autoscaling.
8041    #[prost(bool, tag = "1")]
8042    pub enabled: bool,
8043}
8044/// DefaultSnatStatus contains the desired state of whether default sNAT should
8045/// be disabled on the cluster.
8046#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8047pub struct DefaultSnatStatus {
8048    /// Disables cluster default sNAT rules.
8049    #[prost(bool, tag = "1")]
8050    pub disabled: bool,
8051}
8052/// Configuration of Shielded Nodes feature.
8053#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8054pub struct ShieldedNodes {
8055    /// Whether Shielded Nodes features are enabled on all nodes in this cluster.
8056    #[prost(bool, tag = "1")]
8057    pub enabled: bool,
8058}
8059/// Configuration of gVNIC feature.
8060#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8061pub struct VirtualNic {
8062    /// Whether gVNIC features are enabled in the node pool.
8063    #[prost(bool, tag = "1")]
8064    pub enabled: bool,
8065}
8066/// Configuration of Fast Socket feature.
8067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8068pub struct FastSocket {
8069    /// Whether Fast Socket features are enabled in the node pool.
8070    #[prost(bool, tag = "1")]
8071    pub enabled: bool,
8072}
8073/// GPUDirectConfig specifies the GPU direct strategy on the node pool.
8074#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8075pub struct GpuDirectConfig {
8076    /// The type of GPU direct strategy to enable on the node pool.
8077    #[prost(enumeration = "gpu_direct_config::GpuDirectStrategy", optional, tag = "1")]
8078    pub gpu_direct_strategy: ::core::option::Option<i32>,
8079}
8080/// Nested message and enum types in `GPUDirectConfig`.
8081pub mod gpu_direct_config {
8082    /// Option for GPU direct Strategies
8083    #[derive(
8084        Clone,
8085        Copy,
8086        Debug,
8087        PartialEq,
8088        Eq,
8089        Hash,
8090        PartialOrd,
8091        Ord,
8092        ::prost::Enumeration
8093    )]
8094    #[repr(i32)]
8095    pub enum GpuDirectStrategy {
8096        /// Default value. No GPU Direct strategy is enabled on the node.
8097        Unspecified = 0,
8098        /// GPUDirect-RDMA on A3 Ultra, and A4 machine types
8099        Rdma = 2,
8100    }
8101    impl GpuDirectStrategy {
8102        /// String value of the enum field names used in the ProtoBuf definition.
8103        ///
8104        /// The values are not transformed in any way and thus are considered stable
8105        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8106        pub fn as_str_name(&self) -> &'static str {
8107            match self {
8108                Self::Unspecified => "GPU_DIRECT_STRATEGY_UNSPECIFIED",
8109                Self::Rdma => "RDMA",
8110            }
8111        }
8112        /// Creates an enum from field names used in the ProtoBuf definition.
8113        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8114            match value {
8115                "GPU_DIRECT_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified),
8116                "RDMA" => Some(Self::Rdma),
8117                _ => None,
8118            }
8119        }
8120    }
8121}
8122/// NotificationConfig is the configuration of notifications.
8123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8124pub struct NotificationConfig {
8125    /// Notification config for Pub/Sub.
8126    #[prost(message, optional, tag = "1")]
8127    pub pubsub: ::core::option::Option<notification_config::PubSub>,
8128}
8129/// Nested message and enum types in `NotificationConfig`.
8130pub mod notification_config {
8131    /// Pub/Sub specific notification config.
8132    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8133    pub struct PubSub {
8134        /// Enable notifications for Pub/Sub.
8135        #[prost(bool, tag = "1")]
8136        pub enabled: bool,
8137        /// The desired Pub/Sub topic to which notifications will be
8138        /// sent by GKE. Format is `projects/{project}/topics/{topic}`.
8139        #[prost(string, tag = "2")]
8140        pub topic: ::prost::alloc::string::String,
8141        /// Allows filtering to one or more specific event types. If no filter is
8142        /// specified, or if a filter is specified with no event types, all event
8143        /// types will be sent
8144        #[prost(message, optional, tag = "3")]
8145        pub filter: ::core::option::Option<Filter>,
8146    }
8147    /// Allows filtering to one or more specific event types. If event types are
8148    /// present, those and only those event types will be transmitted to the
8149    /// cluster. Other types will be skipped. If no filter is specified, or no
8150    /// event types are present, all event types will be sent
8151    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8152    pub struct Filter {
8153        /// Event types to allowlist.
8154        #[prost(enumeration = "EventType", repeated, tag = "1")]
8155        pub event_type: ::prost::alloc::vec::Vec<i32>,
8156    }
8157    /// Types of notifications currently supported. Can be used to filter what
8158    /// notifications are sent.
8159    #[derive(
8160        Clone,
8161        Copy,
8162        Debug,
8163        PartialEq,
8164        Eq,
8165        Hash,
8166        PartialOrd,
8167        Ord,
8168        ::prost::Enumeration
8169    )]
8170    #[repr(i32)]
8171    pub enum EventType {
8172        /// Not set, will be ignored.
8173        Unspecified = 0,
8174        /// Corresponds with UpgradeAvailableEvent.
8175        UpgradeAvailableEvent = 1,
8176        /// Corresponds with UpgradeEvent.
8177        UpgradeEvent = 2,
8178        /// Corresponds with SecurityBulletinEvent.
8179        SecurityBulletinEvent = 3,
8180        /// Corresponds with UpgradeInfoEvent.
8181        UpgradeInfoEvent = 4,
8182    }
8183    impl EventType {
8184        /// String value of the enum field names used in the ProtoBuf definition.
8185        ///
8186        /// The values are not transformed in any way and thus are considered stable
8187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8188        pub fn as_str_name(&self) -> &'static str {
8189            match self {
8190                Self::Unspecified => "EVENT_TYPE_UNSPECIFIED",
8191                Self::UpgradeAvailableEvent => "UPGRADE_AVAILABLE_EVENT",
8192                Self::UpgradeEvent => "UPGRADE_EVENT",
8193                Self::SecurityBulletinEvent => "SECURITY_BULLETIN_EVENT",
8194                Self::UpgradeInfoEvent => "UPGRADE_INFO_EVENT",
8195            }
8196        }
8197        /// Creates an enum from field names used in the ProtoBuf definition.
8198        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8199            match value {
8200                "EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
8201                "UPGRADE_AVAILABLE_EVENT" => Some(Self::UpgradeAvailableEvent),
8202                "UPGRADE_EVENT" => Some(Self::UpgradeEvent),
8203                "SECURITY_BULLETIN_EVENT" => Some(Self::SecurityBulletinEvent),
8204                "UPGRADE_INFO_EVENT" => Some(Self::UpgradeInfoEvent),
8205                _ => None,
8206            }
8207        }
8208    }
8209}
8210/// ConfidentialNodes is configuration for the confidential nodes feature, which
8211/// makes nodes run on confidential VMs.
8212#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8213pub struct ConfidentialNodes {
8214    /// Whether Confidential Nodes feature is enabled.
8215    #[prost(bool, tag = "1")]
8216    pub enabled: bool,
8217    /// Defines the type of technology used by the confidential node.
8218    #[prost(enumeration = "confidential_nodes::ConfidentialInstanceType", tag = "2")]
8219    pub confidential_instance_type: i32,
8220}
8221/// Nested message and enum types in `ConfidentialNodes`.
8222pub mod confidential_nodes {
8223    /// The type of technology used by the confidential node.
8224    #[derive(
8225        Clone,
8226        Copy,
8227        Debug,
8228        PartialEq,
8229        Eq,
8230        Hash,
8231        PartialOrd,
8232        Ord,
8233        ::prost::Enumeration
8234    )]
8235    #[repr(i32)]
8236    pub enum ConfidentialInstanceType {
8237        /// No type specified. Do not use this value.
8238        Unspecified = 0,
8239        /// AMD Secure Encrypted Virtualization.
8240        Sev = 1,
8241        /// AMD Secure Encrypted Virtualization - Secure Nested Paging.
8242        SevSnp = 2,
8243        /// Intel Trust Domain eXtension.
8244        Tdx = 3,
8245    }
8246    impl ConfidentialInstanceType {
8247        /// String value of the enum field names used in the ProtoBuf definition.
8248        ///
8249        /// The values are not transformed in any way and thus are considered stable
8250        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8251        pub fn as_str_name(&self) -> &'static str {
8252            match self {
8253                Self::Unspecified => "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED",
8254                Self::Sev => "SEV",
8255                Self::SevSnp => "SEV_SNP",
8256                Self::Tdx => "TDX",
8257            }
8258        }
8259        /// Creates an enum from field names used in the ProtoBuf definition.
8260        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8261            match value {
8262                "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
8263                "SEV" => Some(Self::Sev),
8264                "SEV_SNP" => Some(Self::SevSnp),
8265                "TDX" => Some(Self::Tdx),
8266                _ => None,
8267            }
8268        }
8269    }
8270}
8271/// UpgradeEvent is a notification sent to customers by the cluster server when
8272/// a resource is upgrading.
8273#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8274pub struct UpgradeEvent {
8275    /// The resource type that is upgrading.
8276    #[prost(enumeration = "UpgradeResourceType", tag = "1")]
8277    pub resource_type: i32,
8278    /// The operation associated with this upgrade.
8279    #[prost(string, tag = "2")]
8280    pub operation: ::prost::alloc::string::String,
8281    /// The time when the operation was started.
8282    #[prost(message, optional, tag = "3")]
8283    pub operation_start_time: ::core::option::Option<::prost_types::Timestamp>,
8284    /// The current version before the upgrade.
8285    #[prost(string, tag = "4")]
8286    pub current_version: ::prost::alloc::string::String,
8287    /// The target version for the upgrade.
8288    #[prost(string, tag = "5")]
8289    pub target_version: ::prost::alloc::string::String,
8290    /// Optional relative path to the resource. For example in node pool upgrades,
8291    /// the relative path of the node pool.
8292    #[prost(string, tag = "6")]
8293    pub resource: ::prost::alloc::string::String,
8294}
8295/// UpgradeInfoEvent is a notification sent to customers about the upgrade
8296/// information of a resource.
8297#[derive(Clone, PartialEq, ::prost::Message)]
8298pub struct UpgradeInfoEvent {
8299    /// The resource type associated with the upgrade.
8300    #[prost(enumeration = "UpgradeResourceType", tag = "1")]
8301    pub resource_type: i32,
8302    /// The operation associated with this upgrade.
8303    #[prost(string, tag = "2")]
8304    pub operation: ::prost::alloc::string::String,
8305    /// The time when the operation was started.
8306    #[prost(message, optional, tag = "3")]
8307    pub start_time: ::core::option::Option<::prost_types::Timestamp>,
8308    /// The time when the operation ended.
8309    #[prost(message, optional, tag = "4")]
8310    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
8311    /// The current version before the upgrade.
8312    #[prost(string, tag = "5")]
8313    pub current_version: ::prost::alloc::string::String,
8314    /// The target version for the upgrade.
8315    #[prost(string, tag = "6")]
8316    pub target_version: ::prost::alloc::string::String,
8317    /// Optional relative path to the resource. For example in node pool upgrades,
8318    /// the relative path of the node pool.
8319    #[prost(string, tag = "7")]
8320    pub resource: ::prost::alloc::string::String,
8321    /// Output only. The state of the upgrade.
8322    #[prost(enumeration = "upgrade_info_event::State", tag = "8")]
8323    pub state: i32,
8324    /// The end of standard support timestamp.
8325    #[prost(message, optional, tag = "9")]
8326    pub standard_support_end_time: ::core::option::Option<::prost_types::Timestamp>,
8327    /// The end of extended support timestamp.
8328    #[prost(message, optional, tag = "10")]
8329    pub extended_support_end_time: ::core::option::Option<::prost_types::Timestamp>,
8330    /// A brief description of the event.
8331    #[prost(string, tag = "11")]
8332    pub description: ::prost::alloc::string::String,
8333    /// The type of the event.
8334    #[prost(enumeration = "upgrade_info_event::EventType", tag = "12")]
8335    pub event_type: i32,
8336    /// The information about the disruption event. This field is only populated
8337    /// when event_type is DISRUPTION_EVENT.
8338    #[prost(message, optional, tag = "14")]
8339    pub disruption_event: ::core::option::Option<DisruptionEvent>,
8340}
8341/// Nested message and enum types in `UpgradeInfoEvent`.
8342pub mod upgrade_info_event {
8343    /// The state of the upgrade.
8344    #[derive(
8345        Clone,
8346        Copy,
8347        Debug,
8348        PartialEq,
8349        Eq,
8350        Hash,
8351        PartialOrd,
8352        Ord,
8353        ::prost::Enumeration
8354    )]
8355    #[repr(i32)]
8356    pub enum State {
8357        /// STATE_UNSPECIFIED indicates the state is unspecified.
8358        Unspecified = 0,
8359        /// STARTED indicates the upgrade has started.
8360        Started = 3,
8361        /// SUCCEEDED indicates the upgrade has completed successfully.
8362        Succeeded = 4,
8363        /// FAILED indicates the upgrade has failed.
8364        Failed = 5,
8365        /// CANCELED indicates the upgrade has canceled.
8366        Canceled = 6,
8367    }
8368    impl State {
8369        /// String value of the enum field names used in the ProtoBuf definition.
8370        ///
8371        /// The values are not transformed in any way and thus are considered stable
8372        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8373        pub fn as_str_name(&self) -> &'static str {
8374            match self {
8375                Self::Unspecified => "STATE_UNSPECIFIED",
8376                Self::Started => "STARTED",
8377                Self::Succeeded => "SUCCEEDED",
8378                Self::Failed => "FAILED",
8379                Self::Canceled => "CANCELED",
8380            }
8381        }
8382        /// Creates an enum from field names used in the ProtoBuf definition.
8383        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8384            match value {
8385                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
8386                "STARTED" => Some(Self::Started),
8387                "SUCCEEDED" => Some(Self::Succeeded),
8388                "FAILED" => Some(Self::Failed),
8389                "CANCELED" => Some(Self::Canceled),
8390                _ => None,
8391            }
8392        }
8393    }
8394    /// The type of the event.
8395    #[derive(
8396        Clone,
8397        Copy,
8398        Debug,
8399        PartialEq,
8400        Eq,
8401        Hash,
8402        PartialOrd,
8403        Ord,
8404        ::prost::Enumeration
8405    )]
8406    #[repr(i32)]
8407    pub enum EventType {
8408        /// EVENT_TYPE_UNSPECIFIED indicates the event type is unspecified.
8409        Unspecified = 0,
8410        /// END_OF_SUPPORT indicates GKE version reaches end of support, check
8411        /// standard_support_end_time and extended_support_end_time for more details.
8412        EndOfSupport = 1,
8413        /// COS_MILESTONE_VERSION_UPDATE indicates that the COS node image will
8414        /// update COS milestone version for new patch versions starting with
8415        /// the one in the description.
8416        CosMilestoneVersionUpdate = 2,
8417        /// UPGRADE_LIFECYCLE indicates the event is about the upgrade lifecycle.
8418        UpgradeLifecycle = 3,
8419        /// DISRUPTION_EVENT indicates the event is about the disruption.
8420        DisruptionEvent = 4,
8421    }
8422    impl EventType {
8423        /// String value of the enum field names used in the ProtoBuf definition.
8424        ///
8425        /// The values are not transformed in any way and thus are considered stable
8426        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8427        pub fn as_str_name(&self) -> &'static str {
8428            match self {
8429                Self::Unspecified => "EVENT_TYPE_UNSPECIFIED",
8430                Self::EndOfSupport => "END_OF_SUPPORT",
8431                Self::CosMilestoneVersionUpdate => "COS_MILESTONE_VERSION_UPDATE",
8432                Self::UpgradeLifecycle => "UPGRADE_LIFECYCLE",
8433                Self::DisruptionEvent => "DISRUPTION_EVENT",
8434            }
8435        }
8436        /// Creates an enum from field names used in the ProtoBuf definition.
8437        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8438            match value {
8439                "EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
8440                "END_OF_SUPPORT" => Some(Self::EndOfSupport),
8441                "COS_MILESTONE_VERSION_UPDATE" => Some(Self::CosMilestoneVersionUpdate),
8442                "UPGRADE_LIFECYCLE" => Some(Self::UpgradeLifecycle),
8443                "DISRUPTION_EVENT" => Some(Self::DisruptionEvent),
8444                _ => None,
8445            }
8446        }
8447    }
8448}
8449/// DisruptionEvent is a notification sent to customers about the disruption
8450/// event of a resource.
8451#[derive(Clone, PartialEq, ::prost::Message)]
8452pub struct DisruptionEvent {
8453    /// The type of the disruption event.
8454    #[prost(enumeration = "disruption_event::DisruptionType", tag = "1")]
8455    pub disruption_type: i32,
8456    /// The node whose drain is blocked by PDB. This field is set for both
8457    /// POD_PDB_VIOLATION and POD_NOT_ENOUGH_PDB event.
8458    #[prost(string, tag = "2")]
8459    pub pdb_blocked_node: ::prost::alloc::string::String,
8460    /// The pods whose evictions are blocked by PDB. This field is set for
8461    /// both POD_PDB_VIOLATION and POD_NOT_ENOUGH_PDB event.
8462    #[prost(message, repeated, tag = "3")]
8463    pub pdb_blocked_pod: ::prost::alloc::vec::Vec<disruption_event::PdbBlockedPod>,
8464    /// The timeout in seconds for which the node drain is blocked by PDB.
8465    /// After this timeout, pods are forcefully evicted.
8466    /// This field is only populated when event_type is
8467    /// POD_PDB_VIOLATION.
8468    #[prost(message, optional, tag = "4")]
8469    pub pdb_violation_timeout: ::core::option::Option<::prost_types::Duration>,
8470}
8471/// Nested message and enum types in `DisruptionEvent`.
8472pub mod disruption_event {
8473    /// The namespace/name of the pod whose eviction is blocked by PDB.
8474    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8475    pub struct PdbBlockedPod {
8476        /// The namespace of the pod.
8477        #[prost(string, tag = "1")]
8478        pub namespace: ::prost::alloc::string::String,
8479        /// The name of the pod.
8480        #[prost(string, tag = "2")]
8481        pub name: ::prost::alloc::string::String,
8482    }
8483    /// The type of the disruption event.
8484    #[derive(
8485        Clone,
8486        Copy,
8487        Debug,
8488        PartialEq,
8489        Eq,
8490        Hash,
8491        PartialOrd,
8492        Ord,
8493        ::prost::Enumeration
8494    )]
8495    #[repr(i32)]
8496    pub enum DisruptionType {
8497        /// DISRUPTION_TYPE_UNSPECIFIED indicates the disruption type is unspecified.
8498        Unspecified = 0,
8499        /// POD_NOT_ENOUGH_PDB indicates there are still running pods
8500        /// on the node during node drain because their evictions are blocked by PDB.
8501        PodNotEnoughPdb = 1,
8502        /// POD_PDB_VIOLATION indicates that there are force pod
8503        /// evictions during node drain which violate the PDB.
8504        PodPdbViolation = 2,
8505    }
8506    impl DisruptionType {
8507        /// String value of the enum field names used in the ProtoBuf definition.
8508        ///
8509        /// The values are not transformed in any way and thus are considered stable
8510        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8511        pub fn as_str_name(&self) -> &'static str {
8512            match self {
8513                Self::Unspecified => "DISRUPTION_TYPE_UNSPECIFIED",
8514                Self::PodNotEnoughPdb => "POD_NOT_ENOUGH_PDB",
8515                Self::PodPdbViolation => "POD_PDB_VIOLATION",
8516            }
8517        }
8518        /// Creates an enum from field names used in the ProtoBuf definition.
8519        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8520            match value {
8521                "DISRUPTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
8522                "POD_NOT_ENOUGH_PDB" => Some(Self::PodNotEnoughPdb),
8523                "POD_PDB_VIOLATION" => Some(Self::PodPdbViolation),
8524                _ => None,
8525            }
8526        }
8527    }
8528}
8529/// UpgradeAvailableEvent is a notification sent to customers when a new
8530/// available version is released.
8531#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8532pub struct UpgradeAvailableEvent {
8533    /// The release version available for upgrade.
8534    #[prost(string, tag = "1")]
8535    pub version: ::prost::alloc::string::String,
8536    /// The resource type of the release version.
8537    #[prost(enumeration = "UpgradeResourceType", tag = "2")]
8538    pub resource_type: i32,
8539    /// The release channel of the version. If empty, it means a non-channel
8540    /// release.
8541    #[prost(message, optional, tag = "3")]
8542    pub release_channel: ::core::option::Option<ReleaseChannel>,
8543    /// Optional relative path to the resource. For example, the relative path of
8544    /// the node pool.
8545    #[prost(string, tag = "4")]
8546    pub resource: ::prost::alloc::string::String,
8547}
8548/// SecurityBulletinEvent is a notification sent to customers when a security
8549/// bulletin has been posted that they are vulnerable to.
8550#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8551pub struct SecurityBulletinEvent {
8552    /// The resource type (node/control plane) that has the vulnerability. Multiple
8553    /// notifications (1 notification per resource type) will be sent for a
8554    /// vulnerability that affects > 1 resource type.
8555    #[prost(string, tag = "1")]
8556    pub resource_type_affected: ::prost::alloc::string::String,
8557    /// The ID of the bulletin corresponding to the vulnerability.
8558    #[prost(string, tag = "2")]
8559    pub bulletin_id: ::prost::alloc::string::String,
8560    /// The CVEs associated with this bulletin.
8561    #[prost(string, repeated, tag = "3")]
8562    pub cve_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8563    /// The severity of this bulletin as it relates to GKE.
8564    #[prost(string, tag = "4")]
8565    pub severity: ::prost::alloc::string::String,
8566    /// The URI link to the bulletin on the website for more information.
8567    #[prost(string, tag = "5")]
8568    pub bulletin_uri: ::prost::alloc::string::String,
8569    /// A brief description of the bulletin. See the bulletin pointed to by the
8570    /// bulletin_uri field for an expanded description.
8571    #[prost(string, tag = "6")]
8572    pub brief_description: ::prost::alloc::string::String,
8573    /// The GKE minor versions affected by this vulnerability.
8574    #[prost(string, repeated, tag = "7")]
8575    pub affected_supported_minors: ::prost::alloc::vec::Vec<
8576        ::prost::alloc::string::String,
8577    >,
8578    /// The GKE versions where this vulnerability is patched.
8579    #[prost(string, repeated, tag = "8")]
8580    pub patched_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8581    /// This represents a version selected from the patched_versions field that
8582    /// the cluster receiving this notification should most likely want to upgrade
8583    /// to based on its current version. Note that if this notification is being
8584    /// received by a given cluster, it means that this version is currently
8585    /// available as an upgrade target in that cluster's location.
8586    #[prost(string, tag = "9")]
8587    pub suggested_upgrade_target: ::prost::alloc::string::String,
8588    /// If this field is specified, it means there are manual steps that the user
8589    /// must take to make their clusters safe.
8590    #[prost(bool, tag = "10")]
8591    pub manual_steps_required: bool,
8592    /// The GKE versions where this vulnerability is mitigated.
8593    #[prost(string, repeated, tag = "11")]
8594    pub mitigated_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8595}
8596/// Autopilot is the configuration for Autopilot settings on the cluster.
8597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8598pub struct Autopilot {
8599    /// Enable Autopilot
8600    #[prost(bool, tag = "1")]
8601    pub enabled: bool,
8602    /// WorkloadPolicyConfig is the configuration related to GCW workload policy
8603    #[prost(message, optional, tag = "2")]
8604    pub workload_policy_config: ::core::option::Option<WorkloadPolicyConfig>,
8605    /// PrivilegedAdmissionConfig is the configuration related to privileged
8606    /// admission control.
8607    #[prost(message, optional, tag = "4")]
8608    pub privileged_admission_config: ::core::option::Option<PrivilegedAdmissionConfig>,
8609}
8610/// PrivilegedAdmissionConfig stores the list of authorized allowlist
8611/// paths for the cluster.
8612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8613pub struct PrivilegedAdmissionConfig {
8614    /// The customer allowlist Cloud Storage paths for the cluster. These paths are
8615    /// used with the `--autopilot-privileged-admission` flag to authorize
8616    /// privileged workloads in Autopilot clusters.
8617    ///
8618    /// Paths can be GKE-owned, in the format
8619    /// `gke://<partner_name>/<app_name>/<allowlist_path>`, or customer-owned, in
8620    /// the format `gs://<bucket_name>/<allowlist_path>`.
8621    ///
8622    /// Wildcards (`*`) are supported to authorize all allowlists under specific
8623    /// paths or directories. Example: `gs://my-bucket/*` will authorize all
8624    /// allowlists under the `my-bucket` bucket.
8625    #[prost(string, repeated, tag = "1")]
8626    pub allowlist_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8627}
8628/// WorkloadPolicyConfig is the configuration related to GCW workload policy
8629#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8630pub struct WorkloadPolicyConfig {
8631    /// If true, workloads can use NET_ADMIN capability.
8632    #[prost(bool, optional, tag = "1")]
8633    pub allow_net_admin: ::core::option::Option<bool>,
8634    /// If true, enables the GCW Auditor that audits workloads on
8635    /// standard clusters.
8636    #[prost(bool, optional, tag = "2")]
8637    pub autopilot_compatibility_auditing_enabled: ::core::option::Option<bool>,
8638}
8639/// LoggingConfig is cluster logging configuration.
8640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8641pub struct LoggingConfig {
8642    /// Logging components configuration
8643    #[prost(message, optional, tag = "1")]
8644    pub component_config: ::core::option::Option<LoggingComponentConfig>,
8645}
8646/// LoggingComponentConfig is cluster logging component configuration.
8647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8648pub struct LoggingComponentConfig {
8649    /// Select components to collect logs. An empty set would disable all logging.
8650    #[prost(enumeration = "logging_component_config::Component", repeated, tag = "1")]
8651    pub enable_components: ::prost::alloc::vec::Vec<i32>,
8652}
8653/// Nested message and enum types in `LoggingComponentConfig`.
8654pub mod logging_component_config {
8655    /// GKE components exposing logs
8656    #[derive(
8657        Clone,
8658        Copy,
8659        Debug,
8660        PartialEq,
8661        Eq,
8662        Hash,
8663        PartialOrd,
8664        Ord,
8665        ::prost::Enumeration
8666    )]
8667    #[repr(i32)]
8668    pub enum Component {
8669        /// Default value. This shouldn't be used.
8670        Unspecified = 0,
8671        /// system components
8672        SystemComponents = 1,
8673        /// workloads
8674        Workloads = 2,
8675        /// kube-apiserver
8676        Apiserver = 3,
8677        /// kube-scheduler
8678        Scheduler = 4,
8679        /// kube-controller-manager
8680        ControllerManager = 5,
8681        /// kcp-sshd
8682        KcpSshd = 7,
8683        /// kcp connection logs
8684        KcpConnection = 8,
8685        /// horizontal pod autoscaler decision logs
8686        KcpHpa = 9,
8687    }
8688    impl Component {
8689        /// String value of the enum field names used in the ProtoBuf definition.
8690        ///
8691        /// The values are not transformed in any way and thus are considered stable
8692        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8693        pub fn as_str_name(&self) -> &'static str {
8694            match self {
8695                Self::Unspecified => "COMPONENT_UNSPECIFIED",
8696                Self::SystemComponents => "SYSTEM_COMPONENTS",
8697                Self::Workloads => "WORKLOADS",
8698                Self::Apiserver => "APISERVER",
8699                Self::Scheduler => "SCHEDULER",
8700                Self::ControllerManager => "CONTROLLER_MANAGER",
8701                Self::KcpSshd => "KCP_SSHD",
8702                Self::KcpConnection => "KCP_CONNECTION",
8703                Self::KcpHpa => "KCP_HPA",
8704            }
8705        }
8706        /// Creates an enum from field names used in the ProtoBuf definition.
8707        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8708            match value {
8709                "COMPONENT_UNSPECIFIED" => Some(Self::Unspecified),
8710                "SYSTEM_COMPONENTS" => Some(Self::SystemComponents),
8711                "WORKLOADS" => Some(Self::Workloads),
8712                "APISERVER" => Some(Self::Apiserver),
8713                "SCHEDULER" => Some(Self::Scheduler),
8714                "CONTROLLER_MANAGER" => Some(Self::ControllerManager),
8715                "KCP_SSHD" => Some(Self::KcpSshd),
8716                "KCP_CONNECTION" => Some(Self::KcpConnection),
8717                "KCP_HPA" => Some(Self::KcpHpa),
8718                _ => None,
8719            }
8720        }
8721    }
8722}
8723/// RayClusterLoggingConfig specifies configuration of Ray logging.
8724#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8725pub struct RayClusterLoggingConfig {
8726    /// Enable log collection for Ray clusters.
8727    #[prost(bool, tag = "1")]
8728    pub enabled: bool,
8729}
8730/// MonitoringConfig is cluster monitoring configuration.
8731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8732pub struct MonitoringConfig {
8733    /// Monitoring components configuration
8734    #[prost(message, optional, tag = "1")]
8735    pub component_config: ::core::option::Option<MonitoringComponentConfig>,
8736    /// Enable Google Cloud Managed Service for Prometheus
8737    /// in the cluster.
8738    #[prost(message, optional, tag = "2")]
8739    pub managed_prometheus_config: ::core::option::Option<ManagedPrometheusConfig>,
8740    /// Configuration of Advanced Datapath Observability features.
8741    #[prost(message, optional, tag = "3")]
8742    pub advanced_datapath_observability_config: ::core::option::Option<
8743        AdvancedDatapathObservabilityConfig,
8744    >,
8745}
8746/// AdvancedDatapathObservabilityConfig specifies configuration of observability
8747/// features of advanced datapath.
8748#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8749pub struct AdvancedDatapathObservabilityConfig {
8750    /// Expose flow metrics on nodes
8751    #[prost(bool, tag = "1")]
8752    pub enable_metrics: bool,
8753    /// Method used to make Relay available
8754    #[prost(
8755        enumeration = "advanced_datapath_observability_config::RelayMode",
8756        tag = "2"
8757    )]
8758    pub relay_mode: i32,
8759    /// Enable Relay component
8760    #[prost(bool, optional, tag = "3")]
8761    pub enable_relay: ::core::option::Option<bool>,
8762}
8763/// Nested message and enum types in `AdvancedDatapathObservabilityConfig`.
8764pub mod advanced_datapath_observability_config {
8765    /// Supported Relay modes
8766    #[derive(
8767        Clone,
8768        Copy,
8769        Debug,
8770        PartialEq,
8771        Eq,
8772        Hash,
8773        PartialOrd,
8774        Ord,
8775        ::prost::Enumeration
8776    )]
8777    #[repr(i32)]
8778    pub enum RelayMode {
8779        /// Default value. This shouldn't be used.
8780        Unspecified = 0,
8781        /// disabled
8782        Disabled = 1,
8783        /// exposed via internal load balancer
8784        InternalVpcLb = 3,
8785        /// exposed via external load balancer
8786        ExternalLb = 4,
8787    }
8788    impl RelayMode {
8789        /// String value of the enum field names used in the ProtoBuf definition.
8790        ///
8791        /// The values are not transformed in any way and thus are considered stable
8792        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8793        pub fn as_str_name(&self) -> &'static str {
8794            match self {
8795                Self::Unspecified => "RELAY_MODE_UNSPECIFIED",
8796                Self::Disabled => "DISABLED",
8797                Self::InternalVpcLb => "INTERNAL_VPC_LB",
8798                Self::ExternalLb => "EXTERNAL_LB",
8799            }
8800        }
8801        /// Creates an enum from field names used in the ProtoBuf definition.
8802        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8803            match value {
8804                "RELAY_MODE_UNSPECIFIED" => Some(Self::Unspecified),
8805                "DISABLED" => Some(Self::Disabled),
8806                "INTERNAL_VPC_LB" => Some(Self::InternalVpcLb),
8807                "EXTERNAL_LB" => Some(Self::ExternalLb),
8808                _ => None,
8809            }
8810        }
8811    }
8812}
8813/// RayClusterMonitoringConfig specifies monitoring configuration for Ray
8814/// clusters.
8815#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8816pub struct RayClusterMonitoringConfig {
8817    /// Enable metrics collection for Ray clusters.
8818    #[prost(bool, tag = "1")]
8819    pub enabled: bool,
8820}
8821/// NodePoolLoggingConfig specifies logging configuration for nodepools.
8822#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8823pub struct NodePoolLoggingConfig {
8824    /// Logging variant configuration.
8825    #[prost(message, optional, tag = "1")]
8826    pub variant_config: ::core::option::Option<LoggingVariantConfig>,
8827}
8828/// LoggingVariantConfig specifies the behaviour of the logging component.
8829#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8830pub struct LoggingVariantConfig {
8831    /// Logging variant deployed on nodes.
8832    #[prost(enumeration = "logging_variant_config::Variant", tag = "1")]
8833    pub variant: i32,
8834}
8835/// Nested message and enum types in `LoggingVariantConfig`.
8836pub mod logging_variant_config {
8837    /// Logging component variants.
8838    #[derive(
8839        Clone,
8840        Copy,
8841        Debug,
8842        PartialEq,
8843        Eq,
8844        Hash,
8845        PartialOrd,
8846        Ord,
8847        ::prost::Enumeration
8848    )]
8849    #[repr(i32)]
8850    pub enum Variant {
8851        /// Default value. This shouldn't be used.
8852        Unspecified = 0,
8853        /// default logging variant.
8854        Default = 1,
8855        /// maximum logging throughput variant.
8856        MaxThroughput = 2,
8857    }
8858    impl Variant {
8859        /// String value of the enum field names used in the ProtoBuf definition.
8860        ///
8861        /// The values are not transformed in any way and thus are considered stable
8862        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8863        pub fn as_str_name(&self) -> &'static str {
8864            match self {
8865                Self::Unspecified => "VARIANT_UNSPECIFIED",
8866                Self::Default => "DEFAULT",
8867                Self::MaxThroughput => "MAX_THROUGHPUT",
8868            }
8869        }
8870        /// Creates an enum from field names used in the ProtoBuf definition.
8871        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8872            match value {
8873                "VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
8874                "DEFAULT" => Some(Self::Default),
8875                "MAX_THROUGHPUT" => Some(Self::MaxThroughput),
8876                _ => None,
8877            }
8878        }
8879    }
8880}
8881/// MonitoringComponentConfig is cluster monitoring component configuration.
8882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8883pub struct MonitoringComponentConfig {
8884    /// Select components to collect metrics. An empty set would disable all
8885    /// monitoring.
8886    #[prost(enumeration = "monitoring_component_config::Component", repeated, tag = "1")]
8887    pub enable_components: ::prost::alloc::vec::Vec<i32>,
8888}
8889/// Nested message and enum types in `MonitoringComponentConfig`.
8890pub mod monitoring_component_config {
8891    /// GKE components exposing metrics
8892    #[derive(
8893        Clone,
8894        Copy,
8895        Debug,
8896        PartialEq,
8897        Eq,
8898        Hash,
8899        PartialOrd,
8900        Ord,
8901        ::prost::Enumeration
8902    )]
8903    #[repr(i32)]
8904    pub enum Component {
8905        /// Default value. This shouldn't be used.
8906        Unspecified = 0,
8907        /// system components
8908        SystemComponents = 1,
8909        /// kube-apiserver
8910        Apiserver = 3,
8911        /// kube-scheduler
8912        Scheduler = 4,
8913        /// kube-controller-manager
8914        ControllerManager = 5,
8915        /// Storage
8916        Storage = 7,
8917        /// Horizontal Pod Autoscaling
8918        Hpa = 8,
8919        /// Pod
8920        Pod = 9,
8921        /// DaemonSet
8922        Daemonset = 10,
8923        /// Deployment
8924        Deployment = 11,
8925        /// Statefulset
8926        Statefulset = 12,
8927        /// CADVISOR
8928        Cadvisor = 13,
8929        /// KUBELET
8930        Kubelet = 14,
8931        /// NVIDIA Data Center GPU Manager (DCGM)
8932        Dcgm = 15,
8933        /// JobSet
8934        Jobset = 16,
8935    }
8936    impl Component {
8937        /// String value of the enum field names used in the ProtoBuf definition.
8938        ///
8939        /// The values are not transformed in any way and thus are considered stable
8940        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8941        pub fn as_str_name(&self) -> &'static str {
8942            match self {
8943                Self::Unspecified => "COMPONENT_UNSPECIFIED",
8944                Self::SystemComponents => "SYSTEM_COMPONENTS",
8945                Self::Apiserver => "APISERVER",
8946                Self::Scheduler => "SCHEDULER",
8947                Self::ControllerManager => "CONTROLLER_MANAGER",
8948                Self::Storage => "STORAGE",
8949                Self::Hpa => "HPA",
8950                Self::Pod => "POD",
8951                Self::Daemonset => "DAEMONSET",
8952                Self::Deployment => "DEPLOYMENT",
8953                Self::Statefulset => "STATEFULSET",
8954                Self::Cadvisor => "CADVISOR",
8955                Self::Kubelet => "KUBELET",
8956                Self::Dcgm => "DCGM",
8957                Self::Jobset => "JOBSET",
8958            }
8959        }
8960        /// Creates an enum from field names used in the ProtoBuf definition.
8961        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8962            match value {
8963                "COMPONENT_UNSPECIFIED" => Some(Self::Unspecified),
8964                "SYSTEM_COMPONENTS" => Some(Self::SystemComponents),
8965                "APISERVER" => Some(Self::Apiserver),
8966                "SCHEDULER" => Some(Self::Scheduler),
8967                "CONTROLLER_MANAGER" => Some(Self::ControllerManager),
8968                "STORAGE" => Some(Self::Storage),
8969                "HPA" => Some(Self::Hpa),
8970                "POD" => Some(Self::Pod),
8971                "DAEMONSET" => Some(Self::Daemonset),
8972                "DEPLOYMENT" => Some(Self::Deployment),
8973                "STATEFULSET" => Some(Self::Statefulset),
8974                "CADVISOR" => Some(Self::Cadvisor),
8975                "KUBELET" => Some(Self::Kubelet),
8976                "DCGM" => Some(Self::Dcgm),
8977                "JOBSET" => Some(Self::Jobset),
8978                _ => None,
8979            }
8980        }
8981    }
8982}
8983/// ManagedPrometheusConfig defines the configuration for
8984/// Google Cloud Managed Service for Prometheus.
8985#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8986pub struct ManagedPrometheusConfig {
8987    /// Enable Managed Collection.
8988    #[prost(bool, tag = "1")]
8989    pub enabled: bool,
8990    /// GKE Workload Auto-Monitoring Configuration.
8991    #[prost(message, optional, tag = "2")]
8992    pub auto_monitoring_config: ::core::option::Option<AutoMonitoringConfig>,
8993}
8994/// AutoMonitoringConfig defines the configuration for GKE Workload
8995/// Auto-Monitoring.
8996#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8997pub struct AutoMonitoringConfig {
8998    /// Scope for GKE Workload Auto-Monitoring.
8999    #[prost(enumeration = "auto_monitoring_config::Scope", tag = "1")]
9000    pub scope: i32,
9001}
9002/// Nested message and enum types in `AutoMonitoringConfig`.
9003pub mod auto_monitoring_config {
9004    /// Scope for applications monitored by Auto-Monitoring
9005    #[derive(
9006        Clone,
9007        Copy,
9008        Debug,
9009        PartialEq,
9010        Eq,
9011        Hash,
9012        PartialOrd,
9013        Ord,
9014        ::prost::Enumeration
9015    )]
9016    #[repr(i32)]
9017    pub enum Scope {
9018        /// Not set.
9019        Unspecified = 0,
9020        /// Auto-Monitoring is enabled for all supported applications.
9021        All = 1,
9022        /// Disable Auto-Monitoring.
9023        None = 2,
9024    }
9025    impl Scope {
9026        /// String value of the enum field names used in the ProtoBuf definition.
9027        ///
9028        /// The values are not transformed in any way and thus are considered stable
9029        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9030        pub fn as_str_name(&self) -> &'static str {
9031            match self {
9032                Self::Unspecified => "SCOPE_UNSPECIFIED",
9033                Self::All => "ALL",
9034                Self::None => "NONE",
9035            }
9036        }
9037        /// Creates an enum from field names used in the ProtoBuf definition.
9038        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9039            match value {
9040                "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
9041                "ALL" => Some(Self::All),
9042                "NONE" => Some(Self::None),
9043                _ => None,
9044            }
9045        }
9046    }
9047}
9048/// PodAutoscaling is used for configuration of parameters
9049/// for workload autoscaling.
9050#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9051pub struct PodAutoscaling {
9052    /// Selected Horizontal Pod Autoscaling profile.
9053    #[prost(enumeration = "pod_autoscaling::HpaProfile", optional, tag = "2")]
9054    pub hpa_profile: ::core::option::Option<i32>,
9055}
9056/// Nested message and enum types in `PodAutoscaling`.
9057pub mod pod_autoscaling {
9058    /// Possible types of Horizontal Pod Autoscaling profile.
9059    #[derive(
9060        Clone,
9061        Copy,
9062        Debug,
9063        PartialEq,
9064        Eq,
9065        Hash,
9066        PartialOrd,
9067        Ord,
9068        ::prost::Enumeration
9069    )]
9070    #[repr(i32)]
9071    pub enum HpaProfile {
9072        /// HPA_PROFILE_UNSPECIFIED is used when no custom HPA profile is set.
9073        Unspecified = 0,
9074        /// Customers explicitly opt-out of HPA profiles.
9075        None = 1,
9076        /// PERFORMANCE is used when customers opt-in to the performance HPA profile.
9077        /// In this profile we support a higher number of HPAs per cluster and faster
9078        /// metrics collection for workload autoscaling.
9079        Performance = 2,
9080    }
9081    impl HpaProfile {
9082        /// String value of the enum field names used in the ProtoBuf definition.
9083        ///
9084        /// The values are not transformed in any way and thus are considered stable
9085        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9086        pub fn as_str_name(&self) -> &'static str {
9087            match self {
9088                Self::Unspecified => "HPA_PROFILE_UNSPECIFIED",
9089                Self::None => "NONE",
9090                Self::Performance => "PERFORMANCE",
9091            }
9092        }
9093        /// Creates an enum from field names used in the ProtoBuf definition.
9094        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9095            match value {
9096                "HPA_PROFILE_UNSPECIFIED" => Some(Self::Unspecified),
9097                "NONE" => Some(Self::None),
9098                "PERFORMANCE" => Some(Self::Performance),
9099                _ => None,
9100            }
9101        }
9102    }
9103}
9104/// Fleet is the fleet configuration for the cluster.
9105#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9106pub struct Fleet {
9107    /// The Fleet host project(project ID or project number) where this cluster
9108    /// will be registered to. This field cannot be changed after the cluster has
9109    /// been registered.
9110    #[prost(string, tag = "1")]
9111    pub project: ::prost::alloc::string::String,
9112    /// Output only. The full resource name of the registered fleet membership of
9113    /// the cluster, in the format
9114    /// `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
9115    #[prost(string, tag = "2")]
9116    pub membership: ::prost::alloc::string::String,
9117    /// Output only. Whether the cluster has been registered through the fleet
9118    /// API.
9119    #[prost(bool, tag = "3")]
9120    pub pre_registered: bool,
9121    /// The type of the cluster's fleet membership.
9122    #[prost(enumeration = "fleet::MembershipType", tag = "4")]
9123    pub membership_type: i32,
9124}
9125/// Nested message and enum types in `Fleet`.
9126pub mod fleet {
9127    /// MembershipType describes if the membership supports all features or only
9128    /// lightweight compatible ones.
9129    #[derive(
9130        Clone,
9131        Copy,
9132        Debug,
9133        PartialEq,
9134        Eq,
9135        Hash,
9136        PartialOrd,
9137        Ord,
9138        ::prost::Enumeration
9139    )]
9140    #[repr(i32)]
9141    pub enum MembershipType {
9142        /// The MembershipType is not set.
9143        Unspecified = 0,
9144        /// The membership supports only lightweight compatible features.
9145        Lightweight = 1,
9146    }
9147    impl MembershipType {
9148        /// String value of the enum field names used in the ProtoBuf definition.
9149        ///
9150        /// The values are not transformed in any way and thus are considered stable
9151        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9152        pub fn as_str_name(&self) -> &'static str {
9153            match self {
9154                Self::Unspecified => "MEMBERSHIP_TYPE_UNSPECIFIED",
9155                Self::Lightweight => "LIGHTWEIGHT",
9156            }
9157        }
9158        /// Creates an enum from field names used in the ProtoBuf definition.
9159        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9160            match value {
9161                "MEMBERSHIP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
9162                "LIGHTWEIGHT" => Some(Self::Lightweight),
9163                _ => None,
9164            }
9165        }
9166    }
9167}
9168/// Configuration for all of the cluster's control plane endpoints.
9169#[derive(Clone, PartialEq, ::prost::Message)]
9170pub struct ControlPlaneEndpointsConfig {
9171    /// DNS endpoint configuration.
9172    #[prost(message, optional, tag = "1")]
9173    pub dns_endpoint_config: ::core::option::Option<
9174        control_plane_endpoints_config::DnsEndpointConfig,
9175    >,
9176    /// IP endpoints configuration.
9177    #[prost(message, optional, tag = "3")]
9178    pub ip_endpoints_config: ::core::option::Option<
9179        control_plane_endpoints_config::IpEndpointsConfig,
9180    >,
9181}
9182/// Nested message and enum types in `ControlPlaneEndpointsConfig`.
9183pub mod control_plane_endpoints_config {
9184    /// Describes the configuration of a DNS endpoint.
9185    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9186    pub struct DnsEndpointConfig {
9187        /// Output only. The cluster's DNS endpoint configuration.
9188        /// A DNS format address. This is accessible from the public internet.
9189        /// Ex: uid.us-central1.gke.goog.
9190        /// Always present, but the behavior may change according to the value of
9191        /// \[DNSEndpointConfig.allow_external_traffic\]\[google.container.v1.ControlPlaneEndpointsConfig.DNSEndpointConfig.allow_external_traffic\].
9192        #[prost(string, tag = "2")]
9193        pub endpoint: ::prost::alloc::string::String,
9194        /// Controls whether user traffic is allowed over this endpoint. Note that
9195        /// Google-managed services may still use the endpoint even if this is false.
9196        #[prost(bool, optional, tag = "3")]
9197        pub allow_external_traffic: ::core::option::Option<bool>,
9198        /// Controls whether the k8s token auth is allowed via DNS.
9199        #[prost(bool, optional, tag = "5")]
9200        pub enable_k8s_tokens_via_dns: ::core::option::Option<bool>,
9201        /// Controls whether the k8s certs auth is allowed via DNS.
9202        #[prost(bool, optional, tag = "6")]
9203        pub enable_k8s_certs_via_dns: ::core::option::Option<bool>,
9204    }
9205    /// IP endpoints configuration.
9206    #[derive(Clone, PartialEq, ::prost::Message)]
9207    pub struct IpEndpointsConfig {
9208        /// Controls whether to allow direct IP access.
9209        #[prost(bool, optional, tag = "1")]
9210        pub enabled: ::core::option::Option<bool>,
9211        /// Controls whether the control plane allows access through a public IP.
9212        /// It is invalid to specify both
9213        /// \[PrivateClusterConfig.enablePrivateEndpoint\]\[\] and this field at the same
9214        /// time.
9215        #[prost(bool, optional, tag = "2")]
9216        pub enable_public_endpoint: ::core::option::Option<bool>,
9217        /// Controls whether the control plane's private endpoint is accessible from
9218        /// sources in other regions.
9219        /// It is invalid to specify both
9220        /// \[PrivateClusterMasterGlobalAccessConfig.enabled\]\[google.container.v1.PrivateClusterMasterGlobalAccessConfig.enabled\]
9221        /// and this field at the same time.
9222        #[prost(bool, optional, tag = "3")]
9223        pub global_access: ::core::option::Option<bool>,
9224        /// Configuration of authorized networks. If enabled, restricts access to the
9225        /// control plane based on source IP.
9226        /// It is invalid to specify both
9227        /// \[Cluster.masterAuthorizedNetworksConfig\]\[\] and this field at the same
9228        /// time.
9229        #[prost(message, optional, tag = "4")]
9230        pub authorized_networks_config: ::core::option::Option<
9231            super::MasterAuthorizedNetworksConfig,
9232        >,
9233        /// Output only. The external IP address of this cluster's control plane.
9234        /// Only populated if enabled.
9235        #[prost(string, tag = "5")]
9236        pub public_endpoint: ::prost::alloc::string::String,
9237        /// Output only. The internal IP address of this cluster's control plane.
9238        /// Only populated if enabled.
9239        #[prost(string, tag = "6")]
9240        pub private_endpoint: ::prost::alloc::string::String,
9241        /// Subnet to provision the master's private endpoint during cluster
9242        /// creation. Specified in projects/*/regions/*/subnetworks/\* format. It is
9243        /// invalid to specify both
9244        /// \[PrivateClusterConfig.privateEndpointSubnetwork\]\[\] and this field at the
9245        /// same time.
9246        #[prost(string, tag = "7")]
9247        pub private_endpoint_subnetwork: ::prost::alloc::string::String,
9248    }
9249}
9250/// LocalNvmeSsdBlockConfig contains configuration for using raw-block local
9251/// NVMe SSDs
9252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9253pub struct LocalNvmeSsdBlockConfig {
9254    /// Number of local NVMe SSDs to use.  The limit for this value is dependent
9255    /// upon the maximum number of disk available on a machine per zone. See:
9256    /// <https://cloud.google.com/compute/docs/disks/local-ssd>
9257    /// for more information.
9258    ///
9259    /// A zero (or unset) value has different meanings depending on machine type
9260    /// being used:
9261    ///
9262    /// 1. For pre-Gen3 machines, which support flexible numbers of local ssds,
9263    ///    zero (or unset) means to disable using local SSDs as ephemeral storage.
9264    /// 1. For Gen3 machines which dictate a specific number of local ssds, zero
9265    ///    (or unset) means to use the default number of local ssds that goes with
9266    ///    that machine type. For example, for a c3-standard-8-lssd machine, 2 local
9267    ///    ssds would be provisioned. For c3-standard-8 (which doesn't support local
9268    ///    ssds), 0 will be provisioned. See
9269    ///    <https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds>
9270    ///    for more info.
9271    #[prost(int32, tag = "1")]
9272    pub local_ssd_count: i32,
9273}
9274/// EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral
9275/// storage using Local SSDs.
9276#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9277pub struct EphemeralStorageLocalSsdConfig {
9278    /// Number of local SSDs to use to back ephemeral storage. Uses NVMe
9279    /// interfaces.
9280    ///
9281    /// A zero (or unset) value has different meanings depending on machine type
9282    /// being used:
9283    ///
9284    /// 1. For pre-Gen3 machines, which support flexible numbers of local ssds,
9285    ///    zero (or unset) means to disable using local SSDs as ephemeral storage. The
9286    ///    limit for this value is dependent upon the maximum number of disk
9287    ///    available on a machine per zone. See:
9288    ///    <https://cloud.google.com/compute/docs/disks/local-ssd>
9289    ///    for more information.
9290    /// 1. For Gen3 machines which dictate a specific number of local ssds, zero
9291    ///    (or unset) means to use the default number of local ssds that goes with
9292    ///    that machine type. For example, for a c3-standard-8-lssd machine, 2 local
9293    ///    ssds would be provisioned. For c3-standard-8 (which doesn't support local
9294    ///    ssds), 0 will be provisioned. See
9295    ///    <https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds>
9296    ///    for more info.
9297    #[prost(int32, tag = "1")]
9298    pub local_ssd_count: i32,
9299    /// Number of local SSDs to use for GKE Data Cache.
9300    #[prost(int32, tag = "2")]
9301    pub data_cache_count: i32,
9302}
9303/// A map of resource manager tag keys and values to be attached to the nodes
9304/// for managing Compute Engine firewalls using Network Firewall Policies.
9305/// Tags must be according to specifications in
9306/// <https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications.>
9307/// A maximum of 5 tag key-value pairs can be specified.
9308/// Existing tags will be replaced with new values.
9309#[derive(Clone, PartialEq, ::prost::Message)]
9310pub struct ResourceManagerTags {
9311    /// TagKeyValue must be in one of the following formats (\[KEY\]=\[VALUE\])
9312    ///
9313    /// 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}`
9314    /// 1. `{org_id}/{tag_key_name}={tag_value_name}`
9315    /// 1. `{project_id}/{tag_key_name}={tag_value_name}`
9316    #[prost(map = "string, string", tag = "1")]
9317    pub tags: ::std::collections::HashMap<
9318        ::prost::alloc::string::String,
9319        ::prost::alloc::string::String,
9320    >,
9321}
9322/// EnterpriseConfig is the cluster enterprise configuration.
9323///
9324/// Deprecated: GKE Enterprise features are now available without an Enterprise
9325/// tier.
9326#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9327pub struct EnterpriseConfig {
9328    /// Output only. cluster_tier indicates the effective tier of the cluster.
9329    #[prost(enumeration = "enterprise_config::ClusterTier", tag = "1")]
9330    pub cluster_tier: i32,
9331    /// desired_tier specifies the desired tier of the cluster.
9332    #[prost(enumeration = "enterprise_config::ClusterTier", tag = "2")]
9333    pub desired_tier: i32,
9334}
9335/// Nested message and enum types in `EnterpriseConfig`.
9336pub mod enterprise_config {
9337    /// Premium tiers for GKE Cluster.
9338    ///
9339    /// Deprecated: GKE Enterprise features are now available without an Enterprise
9340    /// tier.
9341    #[derive(
9342        Clone,
9343        Copy,
9344        Debug,
9345        PartialEq,
9346        Eq,
9347        Hash,
9348        PartialOrd,
9349        Ord,
9350        ::prost::Enumeration
9351    )]
9352    #[repr(i32)]
9353    pub enum ClusterTier {
9354        /// CLUSTER_TIER_UNSPECIFIED is when cluster_tier is not set.
9355        Unspecified = 0,
9356        /// STANDARD indicates a standard GKE cluster.
9357        Standard = 1,
9358        /// ENTERPRISE indicates a GKE Enterprise cluster.
9359        Enterprise = 2,
9360    }
9361    impl ClusterTier {
9362        /// String value of the enum field names used in the ProtoBuf definition.
9363        ///
9364        /// The values are not transformed in any way and thus are considered stable
9365        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9366        pub fn as_str_name(&self) -> &'static str {
9367            match self {
9368                Self::Unspecified => "CLUSTER_TIER_UNSPECIFIED",
9369                Self::Standard => "STANDARD",
9370                Self::Enterprise => "ENTERPRISE",
9371            }
9372        }
9373        /// Creates an enum from field names used in the ProtoBuf definition.
9374        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9375            match value {
9376                "CLUSTER_TIER_UNSPECIFIED" => Some(Self::Unspecified),
9377                "STANDARD" => Some(Self::Standard),
9378                "ENTERPRISE" => Some(Self::Enterprise),
9379                _ => None,
9380            }
9381        }
9382    }
9383}
9384/// SecretManagerConfig is config for secret manager enablement.
9385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9386pub struct SecretManagerConfig {
9387    /// Enable/Disable Secret Manager Config.
9388    #[prost(bool, optional, tag = "1")]
9389    pub enabled: ::core::option::Option<bool>,
9390    /// Rotation config for secret manager.
9391    #[prost(message, optional, tag = "2")]
9392    pub rotation_config: ::core::option::Option<secret_manager_config::RotationConfig>,
9393}
9394/// Nested message and enum types in `SecretManagerConfig`.
9395pub mod secret_manager_config {
9396    /// RotationConfig is config for secret manager auto rotation.
9397    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9398    pub struct RotationConfig {
9399        /// Whether the rotation is enabled.
9400        #[prost(bool, optional, tag = "1")]
9401        pub enabled: ::core::option::Option<bool>,
9402        /// The interval between two consecutive rotations. Default rotation interval
9403        /// is 2 minutes.
9404        #[prost(message, optional, tag = "2")]
9405        pub rotation_interval: ::core::option::Option<::prost_types::Duration>,
9406    }
9407}
9408/// BootDisk specifies the boot disk configuration for nodepools.
9409#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9410pub struct BootDisk {
9411    /// Disk type of the boot disk.
9412    /// (i.e. Hyperdisk-Balanced, PD-Balanced, etc.)
9413    #[prost(string, tag = "1")]
9414    pub disk_type: ::prost::alloc::string::String,
9415    /// Disk size in GB. Replaces NodeConfig.disk_size_gb
9416    #[prost(int64, tag = "2")]
9417    pub size_gb: i64,
9418    /// For Hyperdisk-Balanced only, the provisioned IOPS config value.
9419    #[prost(int64, tag = "3")]
9420    pub provisioned_iops: i64,
9421    /// For Hyperdisk-Balanced only, the provisioned throughput config value.
9422    #[prost(int64, tag = "4")]
9423    pub provisioned_throughput: i64,
9424}
9425/// SecondaryBootDisk represents a persistent disk attached to a node
9426/// with special configurations based on its mode.
9427#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9428pub struct SecondaryBootDisk {
9429    /// Disk mode (container image cache, etc.)
9430    #[prost(enumeration = "secondary_boot_disk::Mode", tag = "1")]
9431    pub mode: i32,
9432    /// Fully-qualified resource ID for an existing disk image.
9433    #[prost(string, tag = "2")]
9434    pub disk_image: ::prost::alloc::string::String,
9435}
9436/// Nested message and enum types in `SecondaryBootDisk`.
9437pub mod secondary_boot_disk {
9438    /// Mode specifies how the secondary boot disk will be used.
9439    /// This triggers mode-specified logic in the control plane.
9440    #[derive(
9441        Clone,
9442        Copy,
9443        Debug,
9444        PartialEq,
9445        Eq,
9446        Hash,
9447        PartialOrd,
9448        Ord,
9449        ::prost::Enumeration
9450    )]
9451    #[repr(i32)]
9452    pub enum Mode {
9453        /// MODE_UNSPECIFIED is when mode is not set.
9454        Unspecified = 0,
9455        /// CONTAINER_IMAGE_CACHE is for using the secondary boot disk as
9456        /// a container image cache.
9457        ContainerImageCache = 1,
9458    }
9459    impl Mode {
9460        /// String value of the enum field names used in the ProtoBuf definition.
9461        ///
9462        /// The values are not transformed in any way and thus are considered stable
9463        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9464        pub fn as_str_name(&self) -> &'static str {
9465            match self {
9466                Self::Unspecified => "MODE_UNSPECIFIED",
9467                Self::ContainerImageCache => "CONTAINER_IMAGE_CACHE",
9468            }
9469        }
9470        /// Creates an enum from field names used in the ProtoBuf definition.
9471        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9472            match value {
9473                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
9474                "CONTAINER_IMAGE_CACHE" => Some(Self::ContainerImageCache),
9475                _ => None,
9476            }
9477        }
9478    }
9479}
9480/// SecondaryBootDiskUpdateStrategy is a placeholder which will be extended
9481/// in the future to define different options for updating secondary boot disks.
9482#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9483pub struct SecondaryBootDiskUpdateStrategy {}
9484/// FetchClusterUpgradeInfoRequest fetches the upgrade information of a cluster.
9485#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9486pub struct FetchClusterUpgradeInfoRequest {
9487    /// Required. The name (project, location, cluster) of the cluster to get.
9488    /// Specified in the format `projects/*/locations/*/clusters/*` or
9489    /// `projects/*/zones/*/clusters/*`.
9490    #[prost(string, tag = "1")]
9491    pub name: ::prost::alloc::string::String,
9492    /// API request version that initiates this operation.
9493    #[prost(string, tag = "100")]
9494    pub version: ::prost::alloc::string::String,
9495}
9496/// ClusterUpgradeInfo contains the upgrade information of a cluster.
9497#[derive(Clone, PartialEq, ::prost::Message)]
9498pub struct ClusterUpgradeInfo {
9499    /// minor_target_version indicates the target version for minor upgrade.
9500    #[prost(string, optional, tag = "7")]
9501    pub minor_target_version: ::core::option::Option<::prost::alloc::string::String>,
9502    /// patch_target_version indicates the target version for patch upgrade.
9503    #[prost(string, optional, tag = "8")]
9504    pub patch_target_version: ::core::option::Option<::prost::alloc::string::String>,
9505    /// The auto upgrade status.
9506    #[prost(
9507        enumeration = "cluster_upgrade_info::AutoUpgradeStatus",
9508        repeated,
9509        tag = "2"
9510    )]
9511    pub auto_upgrade_status: ::prost::alloc::vec::Vec<i32>,
9512    /// The auto upgrade paused reason.
9513    #[prost(
9514        enumeration = "cluster_upgrade_info::AutoUpgradePausedReason",
9515        repeated,
9516        tag = "3"
9517    )]
9518    pub paused_reason: ::prost::alloc::vec::Vec<i32>,
9519    /// The list of past auto upgrades.
9520    #[prost(message, repeated, tag = "4")]
9521    pub upgrade_details: ::prost::alloc::vec::Vec<UpgradeDetails>,
9522    /// The cluster's current minor version's end of standard support timestamp.
9523    #[prost(string, optional, tag = "5")]
9524    pub end_of_standard_support_timestamp: ::core::option::Option<
9525        ::prost::alloc::string::String,
9526    >,
9527    /// The cluster's current minor version's end of extended support timestamp.
9528    #[prost(string, optional, tag = "6")]
9529    pub end_of_extended_support_timestamp: ::core::option::Option<
9530        ::prost::alloc::string::String,
9531    >,
9532}
9533/// Nested message and enum types in `ClusterUpgradeInfo`.
9534pub mod cluster_upgrade_info {
9535    /// AutoUpgradeStatus indicates the status of auto upgrade.
9536    #[derive(
9537        Clone,
9538        Copy,
9539        Debug,
9540        PartialEq,
9541        Eq,
9542        Hash,
9543        PartialOrd,
9544        Ord,
9545        ::prost::Enumeration
9546    )]
9547    #[repr(i32)]
9548    pub enum AutoUpgradeStatus {
9549        /// UNKNOWN indicates an unknown status.
9550        Unknown = 0,
9551        /// ACTIVE indicates an active status.
9552        Active = 1,
9553        /// MINOR_UPGRADE_PAUSED indicates the minor version upgrade is
9554        /// paused.
9555        MinorUpgradePaused = 4,
9556        /// UPGRADE_PAUSED indicates the upgrade is paused.
9557        UpgradePaused = 5,
9558    }
9559    impl AutoUpgradeStatus {
9560        /// String value of the enum field names used in the ProtoBuf definition.
9561        ///
9562        /// The values are not transformed in any way and thus are considered stable
9563        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9564        pub fn as_str_name(&self) -> &'static str {
9565            match self {
9566                Self::Unknown => "UNKNOWN",
9567                Self::Active => "ACTIVE",
9568                Self::MinorUpgradePaused => "MINOR_UPGRADE_PAUSED",
9569                Self::UpgradePaused => "UPGRADE_PAUSED",
9570            }
9571        }
9572        /// Creates an enum from field names used in the ProtoBuf definition.
9573        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9574            match value {
9575                "UNKNOWN" => Some(Self::Unknown),
9576                "ACTIVE" => Some(Self::Active),
9577                "MINOR_UPGRADE_PAUSED" => Some(Self::MinorUpgradePaused),
9578                "UPGRADE_PAUSED" => Some(Self::UpgradePaused),
9579                _ => None,
9580            }
9581        }
9582    }
9583    /// AutoUpgradePausedReason indicates the reason for auto upgrade paused
9584    /// status.
9585    #[derive(
9586        Clone,
9587        Copy,
9588        Debug,
9589        PartialEq,
9590        Eq,
9591        Hash,
9592        PartialOrd,
9593        Ord,
9594        ::prost::Enumeration
9595    )]
9596    #[repr(i32)]
9597    pub enum AutoUpgradePausedReason {
9598        /// AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED indicates an unspecified reason.
9599        Unspecified = 0,
9600        /// MAINTENANCE_WINDOW indicates the cluster is outside customer maintenance
9601        /// window.
9602        MaintenanceWindow = 1,
9603        /// MAINTENANCE_EXCLUSION_NO_UPGRADES indicates the cluster is in a
9604        /// maintenance exclusion with scope NO_UPGRADES.
9605        MaintenanceExclusionNoUpgrades = 5,
9606        /// MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES indicates the cluster is in a
9607        /// maintenance exclusion with scope NO_MINOR_UPGRADES.
9608        MaintenanceExclusionNoMinorUpgrades = 6,
9609        /// CLUSTER_DISRUPTION_BUDGET indicates the cluster is outside the cluster
9610        /// disruption budget.
9611        ClusterDisruptionBudget = 4,
9612        /// CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE indicates the cluster is outside
9613        /// the cluster disruption budget for minor version upgrade.
9614        ClusterDisruptionBudgetMinorUpgrade = 7,
9615        /// SYSTEM_CONFIG indicates the cluster upgrade is paused  by system config.
9616        SystemConfig = 8,
9617    }
9618    impl AutoUpgradePausedReason {
9619        /// String value of the enum field names used in the ProtoBuf definition.
9620        ///
9621        /// The values are not transformed in any way and thus are considered stable
9622        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9623        pub fn as_str_name(&self) -> &'static str {
9624            match self {
9625                Self::Unspecified => "AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED",
9626                Self::MaintenanceWindow => "MAINTENANCE_WINDOW",
9627                Self::MaintenanceExclusionNoUpgrades => {
9628                    "MAINTENANCE_EXCLUSION_NO_UPGRADES"
9629                }
9630                Self::MaintenanceExclusionNoMinorUpgrades => {
9631                    "MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES"
9632                }
9633                Self::ClusterDisruptionBudget => "CLUSTER_DISRUPTION_BUDGET",
9634                Self::ClusterDisruptionBudgetMinorUpgrade => {
9635                    "CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE"
9636                }
9637                Self::SystemConfig => "SYSTEM_CONFIG",
9638            }
9639        }
9640        /// Creates an enum from field names used in the ProtoBuf definition.
9641        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9642            match value {
9643                "AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED" => Some(Self::Unspecified),
9644                "MAINTENANCE_WINDOW" => Some(Self::MaintenanceWindow),
9645                "MAINTENANCE_EXCLUSION_NO_UPGRADES" => {
9646                    Some(Self::MaintenanceExclusionNoUpgrades)
9647                }
9648                "MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES" => {
9649                    Some(Self::MaintenanceExclusionNoMinorUpgrades)
9650                }
9651                "CLUSTER_DISRUPTION_BUDGET" => Some(Self::ClusterDisruptionBudget),
9652                "CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE" => {
9653                    Some(Self::ClusterDisruptionBudgetMinorUpgrade)
9654                }
9655                "SYSTEM_CONFIG" => Some(Self::SystemConfig),
9656                _ => None,
9657            }
9658        }
9659    }
9660}
9661/// UpgradeDetails contains detailed information of each individual upgrade
9662/// operation.
9663#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9664pub struct UpgradeDetails {
9665    /// Output only. The state of the upgrade.
9666    #[prost(enumeration = "upgrade_details::State", tag = "1")]
9667    pub state: i32,
9668    /// The start timestamp of the upgrade.
9669    #[prost(message, optional, tag = "2")]
9670    pub start_time: ::core::option::Option<::prost_types::Timestamp>,
9671    /// The end timestamp of the upgrade.
9672    #[prost(message, optional, tag = "3")]
9673    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
9674    /// The version before the upgrade.
9675    #[prost(string, tag = "4")]
9676    pub initial_version: ::prost::alloc::string::String,
9677    /// The version after the upgrade.
9678    #[prost(string, tag = "5")]
9679    pub target_version: ::prost::alloc::string::String,
9680    /// The start type of the upgrade.
9681    #[prost(enumeration = "upgrade_details::StartType", tag = "6")]
9682    pub start_type: i32,
9683}
9684/// Nested message and enum types in `UpgradeDetails`.
9685pub mod upgrade_details {
9686    /// State indicates the state of the upgrade.
9687    #[derive(
9688        Clone,
9689        Copy,
9690        Debug,
9691        PartialEq,
9692        Eq,
9693        Hash,
9694        PartialOrd,
9695        Ord,
9696        ::prost::Enumeration
9697    )]
9698    #[repr(i32)]
9699    pub enum State {
9700        /// Upgrade state is unknown.
9701        Unknown = 0,
9702        /// Upgrade has failed with an error.
9703        Failed = 1,
9704        /// Upgrade has succeeded.
9705        Succeeded = 2,
9706        /// Upgrade has been canceled.
9707        Canceled = 3,
9708        /// Upgrade is running.
9709        Running = 4,
9710    }
9711    impl State {
9712        /// String value of the enum field names used in the ProtoBuf definition.
9713        ///
9714        /// The values are not transformed in any way and thus are considered stable
9715        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9716        pub fn as_str_name(&self) -> &'static str {
9717            match self {
9718                Self::Unknown => "UNKNOWN",
9719                Self::Failed => "FAILED",
9720                Self::Succeeded => "SUCCEEDED",
9721                Self::Canceled => "CANCELED",
9722                Self::Running => "RUNNING",
9723            }
9724        }
9725        /// Creates an enum from field names used in the ProtoBuf definition.
9726        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9727            match value {
9728                "UNKNOWN" => Some(Self::Unknown),
9729                "FAILED" => Some(Self::Failed),
9730                "SUCCEEDED" => Some(Self::Succeeded),
9731                "CANCELED" => Some(Self::Canceled),
9732                "RUNNING" => Some(Self::Running),
9733                _ => None,
9734            }
9735        }
9736    }
9737    /// StartType indicates the type of starting the upgrade.
9738    #[derive(
9739        Clone,
9740        Copy,
9741        Debug,
9742        PartialEq,
9743        Eq,
9744        Hash,
9745        PartialOrd,
9746        Ord,
9747        ::prost::Enumeration
9748    )]
9749    #[repr(i32)]
9750    pub enum StartType {
9751        /// Upgrade start type is unspecified.
9752        Unspecified = 0,
9753        /// Upgrade started automatically.
9754        Automatic = 1,
9755        /// Upgrade started manually.
9756        Manual = 2,
9757    }
9758    impl StartType {
9759        /// String value of the enum field names used in the ProtoBuf definition.
9760        ///
9761        /// The values are not transformed in any way and thus are considered stable
9762        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9763        pub fn as_str_name(&self) -> &'static str {
9764            match self {
9765                Self::Unspecified => "START_TYPE_UNSPECIFIED",
9766                Self::Automatic => "AUTOMATIC",
9767                Self::Manual => "MANUAL",
9768            }
9769        }
9770        /// Creates an enum from field names used in the ProtoBuf definition.
9771        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9772            match value {
9773                "START_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
9774                "AUTOMATIC" => Some(Self::Automatic),
9775                "MANUAL" => Some(Self::Manual),
9776                _ => None,
9777            }
9778        }
9779    }
9780}
9781/// FetchNodePoolUpgradeInfoRequest fetches the upgrade information of a
9782/// nodepool.
9783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9784pub struct FetchNodePoolUpgradeInfoRequest {
9785    /// Required. The name (project, location, cluster, nodepool) of the nodepool
9786    /// to get. Specified in the format
9787    /// `projects/*/locations/*/clusters/*/nodePools/*` or
9788    /// `projects/*/zones/*/clusters/*/nodePools/*`.
9789    #[prost(string, tag = "1")]
9790    pub name: ::prost::alloc::string::String,
9791    /// API request version that initiates this operation.
9792    #[prost(string, tag = "100")]
9793    pub version: ::prost::alloc::string::String,
9794}
9795/// NodePoolUpgradeInfo contains the upgrade information of a nodepool.
9796#[derive(Clone, PartialEq, ::prost::Message)]
9797pub struct NodePoolUpgradeInfo {
9798    /// minor_target_version indicates the target version for minor upgrade.
9799    #[prost(string, optional, tag = "1")]
9800    pub minor_target_version: ::core::option::Option<::prost::alloc::string::String>,
9801    /// patch_target_version indicates the target version for patch upgrade.
9802    #[prost(string, optional, tag = "2")]
9803    pub patch_target_version: ::core::option::Option<::prost::alloc::string::String>,
9804    /// The auto upgrade status.
9805    #[prost(
9806        enumeration = "node_pool_upgrade_info::AutoUpgradeStatus",
9807        repeated,
9808        tag = "3"
9809    )]
9810    pub auto_upgrade_status: ::prost::alloc::vec::Vec<i32>,
9811    /// The auto upgrade paused reason.
9812    #[prost(
9813        enumeration = "node_pool_upgrade_info::AutoUpgradePausedReason",
9814        repeated,
9815        tag = "4"
9816    )]
9817    pub paused_reason: ::prost::alloc::vec::Vec<i32>,
9818    /// The list of past auto upgrades.
9819    #[prost(message, repeated, tag = "5")]
9820    pub upgrade_details: ::prost::alloc::vec::Vec<UpgradeDetails>,
9821    /// The nodepool's current minor version's end of standard support timestamp.
9822    #[prost(string, optional, tag = "6")]
9823    pub end_of_standard_support_timestamp: ::core::option::Option<
9824        ::prost::alloc::string::String,
9825    >,
9826    /// The nodepool's current minor version's end of extended support timestamp.
9827    #[prost(string, optional, tag = "7")]
9828    pub end_of_extended_support_timestamp: ::core::option::Option<
9829        ::prost::alloc::string::String,
9830    >,
9831}
9832/// Nested message and enum types in `NodePoolUpgradeInfo`.
9833pub mod node_pool_upgrade_info {
9834    /// AutoUpgradeStatus indicates the status of auto upgrade.
9835    #[derive(
9836        Clone,
9837        Copy,
9838        Debug,
9839        PartialEq,
9840        Eq,
9841        Hash,
9842        PartialOrd,
9843        Ord,
9844        ::prost::Enumeration
9845    )]
9846    #[repr(i32)]
9847    pub enum AutoUpgradeStatus {
9848        /// UNKNOWN indicates an unknown status.
9849        Unknown = 0,
9850        /// ACTIVE indicates an active status.
9851        Active = 1,
9852        /// MINOR_UPGRADE_PAUSED indicates the minor version upgrade is
9853        /// paused.
9854        MinorUpgradePaused = 2,
9855        /// UPGRADE_PAUSED indicates the upgrade is paused.
9856        UpgradePaused = 3,
9857    }
9858    impl AutoUpgradeStatus {
9859        /// String value of the enum field names used in the ProtoBuf definition.
9860        ///
9861        /// The values are not transformed in any way and thus are considered stable
9862        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9863        pub fn as_str_name(&self) -> &'static str {
9864            match self {
9865                Self::Unknown => "UNKNOWN",
9866                Self::Active => "ACTIVE",
9867                Self::MinorUpgradePaused => "MINOR_UPGRADE_PAUSED",
9868                Self::UpgradePaused => "UPGRADE_PAUSED",
9869            }
9870        }
9871        /// Creates an enum from field names used in the ProtoBuf definition.
9872        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9873            match value {
9874                "UNKNOWN" => Some(Self::Unknown),
9875                "ACTIVE" => Some(Self::Active),
9876                "MINOR_UPGRADE_PAUSED" => Some(Self::MinorUpgradePaused),
9877                "UPGRADE_PAUSED" => Some(Self::UpgradePaused),
9878                _ => None,
9879            }
9880        }
9881    }
9882    /// AutoUpgradePausedReason indicates the reason for auto upgrade paused
9883    /// status.
9884    #[derive(
9885        Clone,
9886        Copy,
9887        Debug,
9888        PartialEq,
9889        Eq,
9890        Hash,
9891        PartialOrd,
9892        Ord,
9893        ::prost::Enumeration
9894    )]
9895    #[repr(i32)]
9896    pub enum AutoUpgradePausedReason {
9897        /// AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED indicates an unspecified reason.
9898        Unspecified = 0,
9899        /// MAINTENANCE_WINDOW indicates the cluster is outside customer maintenance
9900        /// window.
9901        MaintenanceWindow = 1,
9902        /// MAINTENANCE_EXCLUSION_NO_UPGRADES indicates the cluster is in a
9903        /// maintenance exclusion with scope NO_UPGRADES.
9904        MaintenanceExclusionNoUpgrades = 2,
9905        /// MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES indicates the cluster is in a
9906        /// maintenance exclusion with scope NO_MINOR_UPGRADES.
9907        MaintenanceExclusionNoMinorUpgrades = 3,
9908        /// SYSTEM_CONFIG indicates the cluster upgrade is paused by system config.
9909        SystemConfig = 4,
9910    }
9911    impl AutoUpgradePausedReason {
9912        /// String value of the enum field names used in the ProtoBuf definition.
9913        ///
9914        /// The values are not transformed in any way and thus are considered stable
9915        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9916        pub fn as_str_name(&self) -> &'static str {
9917            match self {
9918                Self::Unspecified => "AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED",
9919                Self::MaintenanceWindow => "MAINTENANCE_WINDOW",
9920                Self::MaintenanceExclusionNoUpgrades => {
9921                    "MAINTENANCE_EXCLUSION_NO_UPGRADES"
9922                }
9923                Self::MaintenanceExclusionNoMinorUpgrades => {
9924                    "MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES"
9925                }
9926                Self::SystemConfig => "SYSTEM_CONFIG",
9927            }
9928        }
9929        /// Creates an enum from field names used in the ProtoBuf definition.
9930        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9931            match value {
9932                "AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED" => Some(Self::Unspecified),
9933                "MAINTENANCE_WINDOW" => Some(Self::MaintenanceWindow),
9934                "MAINTENANCE_EXCLUSION_NO_UPGRADES" => {
9935                    Some(Self::MaintenanceExclusionNoUpgrades)
9936                }
9937                "MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES" => {
9938                    Some(Self::MaintenanceExclusionNoMinorUpgrades)
9939                }
9940                "SYSTEM_CONFIG" => Some(Self::SystemConfig),
9941                _ => None,
9942            }
9943        }
9944    }
9945}
9946/// GkeAutoUpgradeConfig is the configuration for GKE auto upgrades.
9947#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9948pub struct GkeAutoUpgradeConfig {
9949    /// PatchMode specifies how auto upgrade patch builds should be
9950    /// selected.
9951    #[prost(enumeration = "gke_auto_upgrade_config::PatchMode", tag = "1")]
9952    pub patch_mode: i32,
9953}
9954/// Nested message and enum types in `GkeAutoUpgradeConfig`.
9955pub mod gke_auto_upgrade_config {
9956    /// PatchMode specifies how auto upgrade patch builds should be
9957    /// selected.
9958    #[derive(
9959        Clone,
9960        Copy,
9961        Debug,
9962        PartialEq,
9963        Eq,
9964        Hash,
9965        PartialOrd,
9966        Ord,
9967        ::prost::Enumeration
9968    )]
9969    #[repr(i32)]
9970    pub enum PatchMode {
9971        /// PATCH_MODE_UNSPECIFIED defaults to using the upgrade target from the
9972        /// channel's patch upgrade targets as the upgrade target for the
9973        /// version.
9974        Unspecified = 0,
9975        /// ACCELERATED denotes that the latest patch build in the channel should be
9976        /// used as the upgrade target for the version.
9977        Accelerated = 1,
9978    }
9979    impl PatchMode {
9980        /// String value of the enum field names used in the ProtoBuf definition.
9981        ///
9982        /// The values are not transformed in any way and thus are considered stable
9983        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9984        pub fn as_str_name(&self) -> &'static str {
9985            match self {
9986                Self::Unspecified => "PATCH_MODE_UNSPECIFIED",
9987                Self::Accelerated => "ACCELERATED",
9988            }
9989        }
9990        /// Creates an enum from field names used in the ProtoBuf definition.
9991        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9992            match value {
9993                "PATCH_MODE_UNSPECIFIED" => Some(Self::Unspecified),
9994                "ACCELERATED" => Some(Self::Accelerated),
9995                _ => None,
9996            }
9997        }
9998    }
9999}
10000/// NetworkTierConfig contains network tier information.
10001#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10002pub struct NetworkTierConfig {
10003    /// Network tier configuration.
10004    #[prost(enumeration = "network_tier_config::NetworkTier", tag = "1")]
10005    pub network_tier: i32,
10006}
10007/// Nested message and enum types in `NetworkTierConfig`.
10008pub mod network_tier_config {
10009    /// Network tier configuration.
10010    #[derive(
10011        Clone,
10012        Copy,
10013        Debug,
10014        PartialEq,
10015        Eq,
10016        Hash,
10017        PartialOrd,
10018        Ord,
10019        ::prost::Enumeration
10020    )]
10021    #[repr(i32)]
10022    pub enum NetworkTier {
10023        /// By default, use project-level configuration. When unspecified, the
10024        /// behavior defaults to NETWORK_TIER_DEFAULT. For cluster updates, this
10025        /// implies no action (no-op).
10026        Unspecified = 0,
10027        /// Default network tier. Use project-level configuration. User can specify
10028        /// this value, meaning they want to keep the same behaviour as before
10029        /// cluster level network tier configuration is introduced. This field
10030        /// ensures backward compatibility for the network tier of cluster resources,
10031        /// such as node pools and load balancers, for their external IP addresses.
10032        Default = 1,
10033        /// Premium network tier.
10034        Premium = 2,
10035        /// Standard network tier.
10036        Standard = 3,
10037    }
10038    impl NetworkTier {
10039        /// String value of the enum field names used in the ProtoBuf definition.
10040        ///
10041        /// The values are not transformed in any way and thus are considered stable
10042        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10043        pub fn as_str_name(&self) -> &'static str {
10044            match self {
10045                Self::Unspecified => "NETWORK_TIER_UNSPECIFIED",
10046                Self::Default => "NETWORK_TIER_DEFAULT",
10047                Self::Premium => "NETWORK_TIER_PREMIUM",
10048                Self::Standard => "NETWORK_TIER_STANDARD",
10049            }
10050        }
10051        /// Creates an enum from field names used in the ProtoBuf definition.
10052        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10053            match value {
10054                "NETWORK_TIER_UNSPECIFIED" => Some(Self::Unspecified),
10055                "NETWORK_TIER_DEFAULT" => Some(Self::Default),
10056                "NETWORK_TIER_PREMIUM" => Some(Self::Premium),
10057                "NETWORK_TIER_STANDARD" => Some(Self::Standard),
10058                _ => None,
10059            }
10060        }
10061    }
10062}
10063/// ManagedOpenTelemetryConfig is the configuration for the GKE Managed
10064/// OpenTelemetry pipeline.
10065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10066pub struct ManagedOpenTelemetryConfig {
10067    /// Scope of the Managed OpenTelemetry pipeline.
10068    #[prost(enumeration = "managed_open_telemetry_config::Scope", optional, tag = "1")]
10069    pub scope: ::core::option::Option<i32>,
10070}
10071/// Nested message and enum types in `ManagedOpenTelemetryConfig`.
10072pub mod managed_open_telemetry_config {
10073    /// Scope is the scope of the Managed OpenTelemetry pipeline.
10074    #[derive(
10075        Clone,
10076        Copy,
10077        Debug,
10078        PartialEq,
10079        Eq,
10080        Hash,
10081        PartialOrd,
10082        Ord,
10083        ::prost::Enumeration
10084    )]
10085    #[repr(i32)]
10086    pub enum Scope {
10087        /// SCOPE_UNSPECIFIED is when the scope is not set.
10088        Unspecified = 0,
10089        /// NONE is used to disable the Managed OpenTelemetry pipeline.
10090        None = 1,
10091        /// COLLECTION_AND_INSTRUMENTATION_COMPONENTS is used to enable the Managed
10092        /// OpenTelemetry pipeline for collection and instrumentation components.
10093        CollectionAndInstrumentationComponents = 2,
10094    }
10095    impl Scope {
10096        /// String value of the enum field names used in the ProtoBuf definition.
10097        ///
10098        /// The values are not transformed in any way and thus are considered stable
10099        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10100        pub fn as_str_name(&self) -> &'static str {
10101            match self {
10102                Self::Unspecified => "SCOPE_UNSPECIFIED",
10103                Self::None => "NONE",
10104                Self::CollectionAndInstrumentationComponents => {
10105                    "COLLECTION_AND_INSTRUMENTATION_COMPONENTS"
10106                }
10107            }
10108        }
10109        /// Creates an enum from field names used in the ProtoBuf definition.
10110        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10111            match value {
10112                "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
10113                "NONE" => Some(Self::None),
10114                "COLLECTION_AND_INSTRUMENTATION_COMPONENTS" => {
10115                    Some(Self::CollectionAndInstrumentationComponents)
10116                }
10117                _ => None,
10118            }
10119        }
10120    }
10121}
10122/// PrivateIPv6GoogleAccess controls whether and how the pods can communicate
10123/// with Google Services through gRPC over IPv6.
10124#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10125#[repr(i32)]
10126pub enum PrivateIPv6GoogleAccess {
10127    /// Default value. Same as DISABLED
10128    PrivateIpv6GoogleAccessUnspecified = 0,
10129    /// No private access to or from Google Services
10130    PrivateIpv6GoogleAccessDisabled = 1,
10131    /// Enables private IPv6 access to Google Services from GKE
10132    PrivateIpv6GoogleAccessToGoogle = 2,
10133    /// Enables private IPv6 access to and from Google Services
10134    PrivateIpv6GoogleAccessBidirectional = 3,
10135}
10136impl PrivateIPv6GoogleAccess {
10137    /// String value of the enum field names used in the ProtoBuf definition.
10138    ///
10139    /// The values are not transformed in any way and thus are considered stable
10140    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10141    pub fn as_str_name(&self) -> &'static str {
10142        match self {
10143            Self::PrivateIpv6GoogleAccessUnspecified => {
10144                "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
10145            }
10146            Self::PrivateIpv6GoogleAccessDisabled => {
10147                "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED"
10148            }
10149            Self::PrivateIpv6GoogleAccessToGoogle => {
10150                "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE"
10151            }
10152            Self::PrivateIpv6GoogleAccessBidirectional => {
10153                "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL"
10154            }
10155        }
10156    }
10157    /// Creates an enum from field names used in the ProtoBuf definition.
10158    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10159        match value {
10160            "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED" => {
10161                Some(Self::PrivateIpv6GoogleAccessUnspecified)
10162            }
10163            "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED" => {
10164                Some(Self::PrivateIpv6GoogleAccessDisabled)
10165            }
10166            "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE" => {
10167                Some(Self::PrivateIpv6GoogleAccessToGoogle)
10168            }
10169            "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL" => {
10170                Some(Self::PrivateIpv6GoogleAccessBidirectional)
10171            }
10172            _ => None,
10173        }
10174    }
10175}
10176/// UpgradeResourceType is the resource type that is upgrading. It is used
10177/// in upgrade notifications.
10178#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10179#[repr(i32)]
10180pub enum UpgradeResourceType {
10181    /// Default value. This shouldn't be used.
10182    Unspecified = 0,
10183    /// Master / control plane
10184    Master = 1,
10185    /// Node pool
10186    NodePool = 2,
10187}
10188impl UpgradeResourceType {
10189    /// String value of the enum field names used in the ProtoBuf definition.
10190    ///
10191    /// The values are not transformed in any way and thus are considered stable
10192    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10193    pub fn as_str_name(&self) -> &'static str {
10194        match self {
10195            Self::Unspecified => "UPGRADE_RESOURCE_TYPE_UNSPECIFIED",
10196            Self::Master => "MASTER",
10197            Self::NodePool => "NODE_POOL",
10198        }
10199    }
10200    /// Creates an enum from field names used in the ProtoBuf definition.
10201    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10202        match value {
10203            "UPGRADE_RESOURCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
10204            "MASTER" => Some(Self::Master),
10205            "NODE_POOL" => Some(Self::NodePool),
10206            _ => None,
10207        }
10208    }
10209}
10210/// The datapath provider selects the implementation of the Kubernetes networking
10211/// model for service resolution and network policy enforcement.
10212#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10213#[repr(i32)]
10214pub enum DatapathProvider {
10215    /// Default value.
10216    Unspecified = 0,
10217    /// Use the IPTables implementation based on kube-proxy.
10218    LegacyDatapath = 1,
10219    /// Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE
10220    /// Dataplane V2
10221    /// documentation](<https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2>)
10222    /// for more.
10223    AdvancedDatapath = 2,
10224}
10225impl DatapathProvider {
10226    /// String value of the enum field names used in the ProtoBuf definition.
10227    ///
10228    /// The values are not transformed in any way and thus are considered stable
10229    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10230    pub fn as_str_name(&self) -> &'static str {
10231        match self {
10232            Self::Unspecified => "DATAPATH_PROVIDER_UNSPECIFIED",
10233            Self::LegacyDatapath => "LEGACY_DATAPATH",
10234            Self::AdvancedDatapath => "ADVANCED_DATAPATH",
10235        }
10236    }
10237    /// Creates an enum from field names used in the ProtoBuf definition.
10238    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10239        match value {
10240            "DATAPATH_PROVIDER_UNSPECIFIED" => Some(Self::Unspecified),
10241            "LEGACY_DATAPATH" => Some(Self::LegacyDatapath),
10242            "ADVANCED_DATAPATH" => Some(Self::AdvancedDatapath),
10243            _ => None,
10244        }
10245    }
10246}
10247/// Strategy used for node pool update.
10248#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10249#[repr(i32)]
10250pub enum NodePoolUpdateStrategy {
10251    /// Default value if unset. GKE internally defaults the update strategy to
10252    /// SURGE for unspecified strategies.
10253    Unspecified = 0,
10254    /// blue-green upgrade.
10255    BlueGreen = 2,
10256    /// SURGE is the traditional way of upgrade a node pool.
10257    /// max_surge and max_unavailable determines the level of upgrade parallelism.
10258    Surge = 3,
10259    /// SHORT_LIVED is the dedicated upgrade strategy for
10260    /// QueuedProvisioning and flex start nodepools scaled up only by enqueueing to
10261    /// the Dynamic Workload Scheduler (DWS).
10262    ShortLived = 5,
10263}
10264impl NodePoolUpdateStrategy {
10265    /// String value of the enum field names used in the ProtoBuf definition.
10266    ///
10267    /// The values are not transformed in any way and thus are considered stable
10268    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10269    pub fn as_str_name(&self) -> &'static str {
10270        match self {
10271            Self::Unspecified => "NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED",
10272            Self::BlueGreen => "BLUE_GREEN",
10273            Self::Surge => "SURGE",
10274            Self::ShortLived => "SHORT_LIVED",
10275        }
10276    }
10277    /// Creates an enum from field names used in the ProtoBuf definition.
10278    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10279        match value {
10280            "NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified),
10281            "BLUE_GREEN" => Some(Self::BlueGreen),
10282            "SURGE" => Some(Self::Surge),
10283            "SHORT_LIVED" => Some(Self::ShortLived),
10284            _ => None,
10285        }
10286    }
10287}
10288/// Possible values for IP stack type
10289#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10290#[repr(i32)]
10291pub enum StackType {
10292    /// Default value, will be defaulted as IPV4 only
10293    Unspecified = 0,
10294    /// Cluster is IPV4 only
10295    Ipv4 = 1,
10296    /// Cluster can use both IPv4 and IPv6
10297    Ipv4Ipv6 = 2,
10298}
10299impl StackType {
10300    /// String value of the enum field names used in the ProtoBuf definition.
10301    ///
10302    /// The values are not transformed in any way and thus are considered stable
10303    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10304    pub fn as_str_name(&self) -> &'static str {
10305        match self {
10306            Self::Unspecified => "STACK_TYPE_UNSPECIFIED",
10307            Self::Ipv4 => "IPV4",
10308            Self::Ipv4Ipv6 => "IPV4_IPV6",
10309        }
10310    }
10311    /// Creates an enum from field names used in the ProtoBuf definition.
10312    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10313        match value {
10314            "STACK_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
10315            "IPV4" => Some(Self::Ipv4),
10316            "IPV4_IPV6" => Some(Self::Ipv4Ipv6),
10317            _ => None,
10318        }
10319    }
10320}
10321/// Possible values for IPv6 access type
10322#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10323#[repr(i32)]
10324pub enum IPv6AccessType {
10325    /// Default value, will be defaulted as type external.
10326    Ipv6AccessTypeUnspecified = 0,
10327    /// Access type internal (all v6 addresses are internal IPs)
10328    Internal = 1,
10329    /// Access type external (all v6 addresses are external IPs)
10330    External = 2,
10331}
10332impl IPv6AccessType {
10333    /// String value of the enum field names used in the ProtoBuf definition.
10334    ///
10335    /// The values are not transformed in any way and thus are considered stable
10336    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10337    pub fn as_str_name(&self) -> &'static str {
10338        match self {
10339            Self::Ipv6AccessTypeUnspecified => "IPV6_ACCESS_TYPE_UNSPECIFIED",
10340            Self::Internal => "INTERNAL",
10341            Self::External => "EXTERNAL",
10342        }
10343    }
10344    /// Creates an enum from field names used in the ProtoBuf definition.
10345    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10346        match value {
10347            "IPV6_ACCESS_TYPE_UNSPECIFIED" => Some(Self::Ipv6AccessTypeUnspecified),
10348            "INTERNAL" => Some(Self::Internal),
10349            "EXTERNAL" => Some(Self::External),
10350            _ => None,
10351        }
10352    }
10353}
10354/// Options for in-transit encryption.
10355#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10356#[repr(i32)]
10357pub enum InTransitEncryptionConfig {
10358    /// Unspecified, will be inferred as default -
10359    /// IN_TRANSIT_ENCRYPTION_UNSPECIFIED.
10360    Unspecified = 0,
10361    /// In-transit encryption is disabled.
10362    InTransitEncryptionDisabled = 1,
10363    /// Data in-transit is encrypted using inter-node transparent encryption.
10364    InTransitEncryptionInterNodeTransparent = 2,
10365}
10366impl InTransitEncryptionConfig {
10367    /// String value of the enum field names used in the ProtoBuf definition.
10368    ///
10369    /// The values are not transformed in any way and thus are considered stable
10370    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10371    pub fn as_str_name(&self) -> &'static str {
10372        match self {
10373            Self::Unspecified => "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED",
10374            Self::InTransitEncryptionDisabled => "IN_TRANSIT_ENCRYPTION_DISABLED",
10375            Self::InTransitEncryptionInterNodeTransparent => {
10376                "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT"
10377            }
10378        }
10379    }
10380    /// Creates an enum from field names used in the ProtoBuf definition.
10381    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10382        match value {
10383            "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED" => Some(Self::Unspecified),
10384            "IN_TRANSIT_ENCRYPTION_DISABLED" => Some(Self::InTransitEncryptionDisabled),
10385            "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT" => {
10386                Some(Self::InTransitEncryptionInterNodeTransparent)
10387            }
10388            _ => None,
10389        }
10390    }
10391}
10392/// Generated client implementations.
10393pub mod cluster_manager_client {
10394    #![allow(
10395        unused_variables,
10396        dead_code,
10397        missing_docs,
10398        clippy::wildcard_imports,
10399        clippy::let_unit_value,
10400    )]
10401    use tonic::codegen::*;
10402    use tonic::codegen::http::Uri;
10403    /// Google Kubernetes Engine Cluster Manager v1
10404    #[derive(Debug, Clone)]
10405    pub struct ClusterManagerClient<T> {
10406        inner: tonic::client::Grpc<T>,
10407    }
10408    impl<T> ClusterManagerClient<T>
10409    where
10410        T: tonic::client::GrpcService<tonic::body::Body>,
10411        T::Error: Into<StdError>,
10412        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
10413        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
10414    {
10415        pub fn new(inner: T) -> Self {
10416            let inner = tonic::client::Grpc::new(inner);
10417            Self { inner }
10418        }
10419        pub fn with_origin(inner: T, origin: Uri) -> Self {
10420            let inner = tonic::client::Grpc::with_origin(inner, origin);
10421            Self { inner }
10422        }
10423        pub fn with_interceptor<F>(
10424            inner: T,
10425            interceptor: F,
10426        ) -> ClusterManagerClient<InterceptedService<T, F>>
10427        where
10428            F: tonic::service::Interceptor,
10429            T::ResponseBody: Default,
10430            T: tonic::codegen::Service<
10431                http::Request<tonic::body::Body>,
10432                Response = http::Response<
10433                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
10434                >,
10435            >,
10436            <T as tonic::codegen::Service<
10437                http::Request<tonic::body::Body>,
10438            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
10439        {
10440            ClusterManagerClient::new(InterceptedService::new(inner, interceptor))
10441        }
10442        /// Compress requests with the given encoding.
10443        ///
10444        /// This requires the server to support it otherwise it might respond with an
10445        /// error.
10446        #[must_use]
10447        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
10448            self.inner = self.inner.send_compressed(encoding);
10449            self
10450        }
10451        /// Enable decompressing responses.
10452        #[must_use]
10453        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
10454            self.inner = self.inner.accept_compressed(encoding);
10455            self
10456        }
10457        /// Limits the maximum size of a decoded message.
10458        ///
10459        /// Default: `4MB`
10460        #[must_use]
10461        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
10462            self.inner = self.inner.max_decoding_message_size(limit);
10463            self
10464        }
10465        /// Limits the maximum size of an encoded message.
10466        ///
10467        /// Default: `usize::MAX`
10468        #[must_use]
10469        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
10470            self.inner = self.inner.max_encoding_message_size(limit);
10471            self
10472        }
10473        /// Lists all clusters owned by a project in either the specified zone or all
10474        /// zones.
10475        pub async fn list_clusters(
10476            &mut self,
10477            request: impl tonic::IntoRequest<super::ListClustersRequest>,
10478        ) -> std::result::Result<
10479            tonic::Response<super::ListClustersResponse>,
10480            tonic::Status,
10481        > {
10482            self.inner
10483                .ready()
10484                .await
10485                .map_err(|e| {
10486                    tonic::Status::unknown(
10487                        format!("Service was not ready: {}", e.into()),
10488                    )
10489                })?;
10490            let codec = tonic_prost::ProstCodec::default();
10491            let path = http::uri::PathAndQuery::from_static(
10492                "/google.container.v1.ClusterManager/ListClusters",
10493            );
10494            let mut req = request.into_request();
10495            req.extensions_mut()
10496                .insert(
10497                    GrpcMethod::new("google.container.v1.ClusterManager", "ListClusters"),
10498                );
10499            self.inner.unary(req, path, codec).await
10500        }
10501        /// Gets the details of a specific cluster.
10502        pub async fn get_cluster(
10503            &mut self,
10504            request: impl tonic::IntoRequest<super::GetClusterRequest>,
10505        ) -> std::result::Result<tonic::Response<super::Cluster>, tonic::Status> {
10506            self.inner
10507                .ready()
10508                .await
10509                .map_err(|e| {
10510                    tonic::Status::unknown(
10511                        format!("Service was not ready: {}", e.into()),
10512                    )
10513                })?;
10514            let codec = tonic_prost::ProstCodec::default();
10515            let path = http::uri::PathAndQuery::from_static(
10516                "/google.container.v1.ClusterManager/GetCluster",
10517            );
10518            let mut req = request.into_request();
10519            req.extensions_mut()
10520                .insert(
10521                    GrpcMethod::new("google.container.v1.ClusterManager", "GetCluster"),
10522                );
10523            self.inner.unary(req, path, codec).await
10524        }
10525        /// Creates a cluster, consisting of the specified number and type of Google
10526        /// Compute Engine instances.
10527        ///
10528        /// By default, the cluster is created in the project's
10529        /// [default
10530        /// network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks).
10531        ///
10532        /// One firewall is added for the cluster. After cluster creation,
10533        /// the kubelet creates routes for each node to allow the containers
10534        /// on that node to communicate with all other instances in the
10535        /// cluster.
10536        ///
10537        /// Finally, an entry is added to the project's global metadata indicating
10538        /// which CIDR range the cluster is using.
10539        pub async fn create_cluster(
10540            &mut self,
10541            request: impl tonic::IntoRequest<super::CreateClusterRequest>,
10542        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10543            self.inner
10544                .ready()
10545                .await
10546                .map_err(|e| {
10547                    tonic::Status::unknown(
10548                        format!("Service was not ready: {}", e.into()),
10549                    )
10550                })?;
10551            let codec = tonic_prost::ProstCodec::default();
10552            let path = http::uri::PathAndQuery::from_static(
10553                "/google.container.v1.ClusterManager/CreateCluster",
10554            );
10555            let mut req = request.into_request();
10556            req.extensions_mut()
10557                .insert(
10558                    GrpcMethod::new(
10559                        "google.container.v1.ClusterManager",
10560                        "CreateCluster",
10561                    ),
10562                );
10563            self.inner.unary(req, path, codec).await
10564        }
10565        /// Updates the settings of a specific cluster.
10566        pub async fn update_cluster(
10567            &mut self,
10568            request: impl tonic::IntoRequest<super::UpdateClusterRequest>,
10569        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10570            self.inner
10571                .ready()
10572                .await
10573                .map_err(|e| {
10574                    tonic::Status::unknown(
10575                        format!("Service was not ready: {}", e.into()),
10576                    )
10577                })?;
10578            let codec = tonic_prost::ProstCodec::default();
10579            let path = http::uri::PathAndQuery::from_static(
10580                "/google.container.v1.ClusterManager/UpdateCluster",
10581            );
10582            let mut req = request.into_request();
10583            req.extensions_mut()
10584                .insert(
10585                    GrpcMethod::new(
10586                        "google.container.v1.ClusterManager",
10587                        "UpdateCluster",
10588                    ),
10589                );
10590            self.inner.unary(req, path, codec).await
10591        }
10592        /// Updates the version and/or image type for the specified node pool.
10593        pub async fn update_node_pool(
10594            &mut self,
10595            request: impl tonic::IntoRequest<super::UpdateNodePoolRequest>,
10596        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10597            self.inner
10598                .ready()
10599                .await
10600                .map_err(|e| {
10601                    tonic::Status::unknown(
10602                        format!("Service was not ready: {}", e.into()),
10603                    )
10604                })?;
10605            let codec = tonic_prost::ProstCodec::default();
10606            let path = http::uri::PathAndQuery::from_static(
10607                "/google.container.v1.ClusterManager/UpdateNodePool",
10608            );
10609            let mut req = request.into_request();
10610            req.extensions_mut()
10611                .insert(
10612                    GrpcMethod::new(
10613                        "google.container.v1.ClusterManager",
10614                        "UpdateNodePool",
10615                    ),
10616                );
10617            self.inner.unary(req, path, codec).await
10618        }
10619        /// Sets the autoscaling settings for the specified node pool.
10620        pub async fn set_node_pool_autoscaling(
10621            &mut self,
10622            request: impl tonic::IntoRequest<super::SetNodePoolAutoscalingRequest>,
10623        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10624            self.inner
10625                .ready()
10626                .await
10627                .map_err(|e| {
10628                    tonic::Status::unknown(
10629                        format!("Service was not ready: {}", e.into()),
10630                    )
10631                })?;
10632            let codec = tonic_prost::ProstCodec::default();
10633            let path = http::uri::PathAndQuery::from_static(
10634                "/google.container.v1.ClusterManager/SetNodePoolAutoscaling",
10635            );
10636            let mut req = request.into_request();
10637            req.extensions_mut()
10638                .insert(
10639                    GrpcMethod::new(
10640                        "google.container.v1.ClusterManager",
10641                        "SetNodePoolAutoscaling",
10642                    ),
10643                );
10644            self.inner.unary(req, path, codec).await
10645        }
10646        /// Sets the logging service for a specific cluster.
10647        pub async fn set_logging_service(
10648            &mut self,
10649            request: impl tonic::IntoRequest<super::SetLoggingServiceRequest>,
10650        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10651            self.inner
10652                .ready()
10653                .await
10654                .map_err(|e| {
10655                    tonic::Status::unknown(
10656                        format!("Service was not ready: {}", e.into()),
10657                    )
10658                })?;
10659            let codec = tonic_prost::ProstCodec::default();
10660            let path = http::uri::PathAndQuery::from_static(
10661                "/google.container.v1.ClusterManager/SetLoggingService",
10662            );
10663            let mut req = request.into_request();
10664            req.extensions_mut()
10665                .insert(
10666                    GrpcMethod::new(
10667                        "google.container.v1.ClusterManager",
10668                        "SetLoggingService",
10669                    ),
10670                );
10671            self.inner.unary(req, path, codec).await
10672        }
10673        /// Sets the monitoring service for a specific cluster.
10674        pub async fn set_monitoring_service(
10675            &mut self,
10676            request: impl tonic::IntoRequest<super::SetMonitoringServiceRequest>,
10677        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10678            self.inner
10679                .ready()
10680                .await
10681                .map_err(|e| {
10682                    tonic::Status::unknown(
10683                        format!("Service was not ready: {}", e.into()),
10684                    )
10685                })?;
10686            let codec = tonic_prost::ProstCodec::default();
10687            let path = http::uri::PathAndQuery::from_static(
10688                "/google.container.v1.ClusterManager/SetMonitoringService",
10689            );
10690            let mut req = request.into_request();
10691            req.extensions_mut()
10692                .insert(
10693                    GrpcMethod::new(
10694                        "google.container.v1.ClusterManager",
10695                        "SetMonitoringService",
10696                    ),
10697                );
10698            self.inner.unary(req, path, codec).await
10699        }
10700        /// Sets the addons for a specific cluster.
10701        pub async fn set_addons_config(
10702            &mut self,
10703            request: impl tonic::IntoRequest<super::SetAddonsConfigRequest>,
10704        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10705            self.inner
10706                .ready()
10707                .await
10708                .map_err(|e| {
10709                    tonic::Status::unknown(
10710                        format!("Service was not ready: {}", e.into()),
10711                    )
10712                })?;
10713            let codec = tonic_prost::ProstCodec::default();
10714            let path = http::uri::PathAndQuery::from_static(
10715                "/google.container.v1.ClusterManager/SetAddonsConfig",
10716            );
10717            let mut req = request.into_request();
10718            req.extensions_mut()
10719                .insert(
10720                    GrpcMethod::new(
10721                        "google.container.v1.ClusterManager",
10722                        "SetAddonsConfig",
10723                    ),
10724                );
10725            self.inner.unary(req, path, codec).await
10726        }
10727        /// Sets the locations for a specific cluster.
10728        /// Deprecated. Use
10729        /// [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update)
10730        /// instead.
10731        #[deprecated]
10732        pub async fn set_locations(
10733            &mut self,
10734            request: impl tonic::IntoRequest<super::SetLocationsRequest>,
10735        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10736            self.inner
10737                .ready()
10738                .await
10739                .map_err(|e| {
10740                    tonic::Status::unknown(
10741                        format!("Service was not ready: {}", e.into()),
10742                    )
10743                })?;
10744            let codec = tonic_prost::ProstCodec::default();
10745            let path = http::uri::PathAndQuery::from_static(
10746                "/google.container.v1.ClusterManager/SetLocations",
10747            );
10748            let mut req = request.into_request();
10749            req.extensions_mut()
10750                .insert(
10751                    GrpcMethod::new("google.container.v1.ClusterManager", "SetLocations"),
10752                );
10753            self.inner.unary(req, path, codec).await
10754        }
10755        /// Updates the master for a specific cluster.
10756        pub async fn update_master(
10757            &mut self,
10758            request: impl tonic::IntoRequest<super::UpdateMasterRequest>,
10759        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10760            self.inner
10761                .ready()
10762                .await
10763                .map_err(|e| {
10764                    tonic::Status::unknown(
10765                        format!("Service was not ready: {}", e.into()),
10766                    )
10767                })?;
10768            let codec = tonic_prost::ProstCodec::default();
10769            let path = http::uri::PathAndQuery::from_static(
10770                "/google.container.v1.ClusterManager/UpdateMaster",
10771            );
10772            let mut req = request.into_request();
10773            req.extensions_mut()
10774                .insert(
10775                    GrpcMethod::new("google.container.v1.ClusterManager", "UpdateMaster"),
10776                );
10777            self.inner.unary(req, path, codec).await
10778        }
10779        /// Sets master auth materials. Currently supports changing the admin password
10780        /// or a specific cluster, either via password generation or explicitly setting
10781        /// the password.
10782        pub async fn set_master_auth(
10783            &mut self,
10784            request: impl tonic::IntoRequest<super::SetMasterAuthRequest>,
10785        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10786            self.inner
10787                .ready()
10788                .await
10789                .map_err(|e| {
10790                    tonic::Status::unknown(
10791                        format!("Service was not ready: {}", e.into()),
10792                    )
10793                })?;
10794            let codec = tonic_prost::ProstCodec::default();
10795            let path = http::uri::PathAndQuery::from_static(
10796                "/google.container.v1.ClusterManager/SetMasterAuth",
10797            );
10798            let mut req = request.into_request();
10799            req.extensions_mut()
10800                .insert(
10801                    GrpcMethod::new(
10802                        "google.container.v1.ClusterManager",
10803                        "SetMasterAuth",
10804                    ),
10805                );
10806            self.inner.unary(req, path, codec).await
10807        }
10808        /// Deletes the cluster, including the Kubernetes endpoint and all worker
10809        /// nodes.
10810        ///
10811        /// Firewalls and routes that were configured during cluster creation
10812        /// are also deleted.
10813        ///
10814        /// Other Google Compute Engine resources that might be in use by the cluster,
10815        /// such as load balancer resources, are not deleted if they weren't present
10816        /// when the cluster was initially created.
10817        pub async fn delete_cluster(
10818            &mut self,
10819            request: impl tonic::IntoRequest<super::DeleteClusterRequest>,
10820        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10821            self.inner
10822                .ready()
10823                .await
10824                .map_err(|e| {
10825                    tonic::Status::unknown(
10826                        format!("Service was not ready: {}", e.into()),
10827                    )
10828                })?;
10829            let codec = tonic_prost::ProstCodec::default();
10830            let path = http::uri::PathAndQuery::from_static(
10831                "/google.container.v1.ClusterManager/DeleteCluster",
10832            );
10833            let mut req = request.into_request();
10834            req.extensions_mut()
10835                .insert(
10836                    GrpcMethod::new(
10837                        "google.container.v1.ClusterManager",
10838                        "DeleteCluster",
10839                    ),
10840                );
10841            self.inner.unary(req, path, codec).await
10842        }
10843        /// Lists all operations in a project in a specific zone or all zones.
10844        pub async fn list_operations(
10845            &mut self,
10846            request: impl tonic::IntoRequest<super::ListOperationsRequest>,
10847        ) -> std::result::Result<
10848            tonic::Response<super::ListOperationsResponse>,
10849            tonic::Status,
10850        > {
10851            self.inner
10852                .ready()
10853                .await
10854                .map_err(|e| {
10855                    tonic::Status::unknown(
10856                        format!("Service was not ready: {}", e.into()),
10857                    )
10858                })?;
10859            let codec = tonic_prost::ProstCodec::default();
10860            let path = http::uri::PathAndQuery::from_static(
10861                "/google.container.v1.ClusterManager/ListOperations",
10862            );
10863            let mut req = request.into_request();
10864            req.extensions_mut()
10865                .insert(
10866                    GrpcMethod::new(
10867                        "google.container.v1.ClusterManager",
10868                        "ListOperations",
10869                    ),
10870                );
10871            self.inner.unary(req, path, codec).await
10872        }
10873        /// Gets the specified operation.
10874        pub async fn get_operation(
10875            &mut self,
10876            request: impl tonic::IntoRequest<super::GetOperationRequest>,
10877        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
10878            self.inner
10879                .ready()
10880                .await
10881                .map_err(|e| {
10882                    tonic::Status::unknown(
10883                        format!("Service was not ready: {}", e.into()),
10884                    )
10885                })?;
10886            let codec = tonic_prost::ProstCodec::default();
10887            let path = http::uri::PathAndQuery::from_static(
10888                "/google.container.v1.ClusterManager/GetOperation",
10889            );
10890            let mut req = request.into_request();
10891            req.extensions_mut()
10892                .insert(
10893                    GrpcMethod::new("google.container.v1.ClusterManager", "GetOperation"),
10894                );
10895            self.inner.unary(req, path, codec).await
10896        }
10897        /// Cancels the specified operation.
10898        pub async fn cancel_operation(
10899            &mut self,
10900            request: impl tonic::IntoRequest<super::CancelOperationRequest>,
10901        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
10902            self.inner
10903                .ready()
10904                .await
10905                .map_err(|e| {
10906                    tonic::Status::unknown(
10907                        format!("Service was not ready: {}", e.into()),
10908                    )
10909                })?;
10910            let codec = tonic_prost::ProstCodec::default();
10911            let path = http::uri::PathAndQuery::from_static(
10912                "/google.container.v1.ClusterManager/CancelOperation",
10913            );
10914            let mut req = request.into_request();
10915            req.extensions_mut()
10916                .insert(
10917                    GrpcMethod::new(
10918                        "google.container.v1.ClusterManager",
10919                        "CancelOperation",
10920                    ),
10921                );
10922            self.inner.unary(req, path, codec).await
10923        }
10924        /// Returns configuration info about the Google Kubernetes Engine service.
10925        pub async fn get_server_config(
10926            &mut self,
10927            request: impl tonic::IntoRequest<super::GetServerConfigRequest>,
10928        ) -> std::result::Result<tonic::Response<super::ServerConfig>, tonic::Status> {
10929            self.inner
10930                .ready()
10931                .await
10932                .map_err(|e| {
10933                    tonic::Status::unknown(
10934                        format!("Service was not ready: {}", e.into()),
10935                    )
10936                })?;
10937            let codec = tonic_prost::ProstCodec::default();
10938            let path = http::uri::PathAndQuery::from_static(
10939                "/google.container.v1.ClusterManager/GetServerConfig",
10940            );
10941            let mut req = request.into_request();
10942            req.extensions_mut()
10943                .insert(
10944                    GrpcMethod::new(
10945                        "google.container.v1.ClusterManager",
10946                        "GetServerConfig",
10947                    ),
10948                );
10949            self.inner.unary(req, path, codec).await
10950        }
10951        /// Gets the public component of the cluster signing keys in
10952        /// JSON Web Key format.
10953        pub async fn get_json_web_keys(
10954            &mut self,
10955            request: impl tonic::IntoRequest<super::GetJsonWebKeysRequest>,
10956        ) -> std::result::Result<
10957            tonic::Response<super::GetJsonWebKeysResponse>,
10958            tonic::Status,
10959        > {
10960            self.inner
10961                .ready()
10962                .await
10963                .map_err(|e| {
10964                    tonic::Status::unknown(
10965                        format!("Service was not ready: {}", e.into()),
10966                    )
10967                })?;
10968            let codec = tonic_prost::ProstCodec::default();
10969            let path = http::uri::PathAndQuery::from_static(
10970                "/google.container.v1.ClusterManager/GetJSONWebKeys",
10971            );
10972            let mut req = request.into_request();
10973            req.extensions_mut()
10974                .insert(
10975                    GrpcMethod::new(
10976                        "google.container.v1.ClusterManager",
10977                        "GetJSONWebKeys",
10978                    ),
10979                );
10980            self.inner.unary(req, path, codec).await
10981        }
10982        /// Lists the node pools for a cluster.
10983        pub async fn list_node_pools(
10984            &mut self,
10985            request: impl tonic::IntoRequest<super::ListNodePoolsRequest>,
10986        ) -> std::result::Result<
10987            tonic::Response<super::ListNodePoolsResponse>,
10988            tonic::Status,
10989        > {
10990            self.inner
10991                .ready()
10992                .await
10993                .map_err(|e| {
10994                    tonic::Status::unknown(
10995                        format!("Service was not ready: {}", e.into()),
10996                    )
10997                })?;
10998            let codec = tonic_prost::ProstCodec::default();
10999            let path = http::uri::PathAndQuery::from_static(
11000                "/google.container.v1.ClusterManager/ListNodePools",
11001            );
11002            let mut req = request.into_request();
11003            req.extensions_mut()
11004                .insert(
11005                    GrpcMethod::new(
11006                        "google.container.v1.ClusterManager",
11007                        "ListNodePools",
11008                    ),
11009                );
11010            self.inner.unary(req, path, codec).await
11011        }
11012        /// Retrieves the requested node pool.
11013        pub async fn get_node_pool(
11014            &mut self,
11015            request: impl tonic::IntoRequest<super::GetNodePoolRequest>,
11016        ) -> std::result::Result<tonic::Response<super::NodePool>, tonic::Status> {
11017            self.inner
11018                .ready()
11019                .await
11020                .map_err(|e| {
11021                    tonic::Status::unknown(
11022                        format!("Service was not ready: {}", e.into()),
11023                    )
11024                })?;
11025            let codec = tonic_prost::ProstCodec::default();
11026            let path = http::uri::PathAndQuery::from_static(
11027                "/google.container.v1.ClusterManager/GetNodePool",
11028            );
11029            let mut req = request.into_request();
11030            req.extensions_mut()
11031                .insert(
11032                    GrpcMethod::new("google.container.v1.ClusterManager", "GetNodePool"),
11033                );
11034            self.inner.unary(req, path, codec).await
11035        }
11036        /// Creates a node pool for a cluster.
11037        pub async fn create_node_pool(
11038            &mut self,
11039            request: impl tonic::IntoRequest<super::CreateNodePoolRequest>,
11040        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11041            self.inner
11042                .ready()
11043                .await
11044                .map_err(|e| {
11045                    tonic::Status::unknown(
11046                        format!("Service was not ready: {}", e.into()),
11047                    )
11048                })?;
11049            let codec = tonic_prost::ProstCodec::default();
11050            let path = http::uri::PathAndQuery::from_static(
11051                "/google.container.v1.ClusterManager/CreateNodePool",
11052            );
11053            let mut req = request.into_request();
11054            req.extensions_mut()
11055                .insert(
11056                    GrpcMethod::new(
11057                        "google.container.v1.ClusterManager",
11058                        "CreateNodePool",
11059                    ),
11060                );
11061            self.inner.unary(req, path, codec).await
11062        }
11063        /// Deletes a node pool from a cluster.
11064        pub async fn delete_node_pool(
11065            &mut self,
11066            request: impl tonic::IntoRequest<super::DeleteNodePoolRequest>,
11067        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11068            self.inner
11069                .ready()
11070                .await
11071                .map_err(|e| {
11072                    tonic::Status::unknown(
11073                        format!("Service was not ready: {}", e.into()),
11074                    )
11075                })?;
11076            let codec = tonic_prost::ProstCodec::default();
11077            let path = http::uri::PathAndQuery::from_static(
11078                "/google.container.v1.ClusterManager/DeleteNodePool",
11079            );
11080            let mut req = request.into_request();
11081            req.extensions_mut()
11082                .insert(
11083                    GrpcMethod::new(
11084                        "google.container.v1.ClusterManager",
11085                        "DeleteNodePool",
11086                    ),
11087                );
11088            self.inner.unary(req, path, codec).await
11089        }
11090        /// CompleteNodePoolUpgrade will signal an on-going node pool upgrade to
11091        /// complete.
11092        pub async fn complete_node_pool_upgrade(
11093            &mut self,
11094            request: impl tonic::IntoRequest<super::CompleteNodePoolUpgradeRequest>,
11095        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
11096            self.inner
11097                .ready()
11098                .await
11099                .map_err(|e| {
11100                    tonic::Status::unknown(
11101                        format!("Service was not ready: {}", e.into()),
11102                    )
11103                })?;
11104            let codec = tonic_prost::ProstCodec::default();
11105            let path = http::uri::PathAndQuery::from_static(
11106                "/google.container.v1.ClusterManager/CompleteNodePoolUpgrade",
11107            );
11108            let mut req = request.into_request();
11109            req.extensions_mut()
11110                .insert(
11111                    GrpcMethod::new(
11112                        "google.container.v1.ClusterManager",
11113                        "CompleteNodePoolUpgrade",
11114                    ),
11115                );
11116            self.inner.unary(req, path, codec).await
11117        }
11118        /// Rolls back a previously Aborted or Failed NodePool upgrade.
11119        /// This makes no changes if the last upgrade successfully completed.
11120        pub async fn rollback_node_pool_upgrade(
11121            &mut self,
11122            request: impl tonic::IntoRequest<super::RollbackNodePoolUpgradeRequest>,
11123        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11124            self.inner
11125                .ready()
11126                .await
11127                .map_err(|e| {
11128                    tonic::Status::unknown(
11129                        format!("Service was not ready: {}", e.into()),
11130                    )
11131                })?;
11132            let codec = tonic_prost::ProstCodec::default();
11133            let path = http::uri::PathAndQuery::from_static(
11134                "/google.container.v1.ClusterManager/RollbackNodePoolUpgrade",
11135            );
11136            let mut req = request.into_request();
11137            req.extensions_mut()
11138                .insert(
11139                    GrpcMethod::new(
11140                        "google.container.v1.ClusterManager",
11141                        "RollbackNodePoolUpgrade",
11142                    ),
11143                );
11144            self.inner.unary(req, path, codec).await
11145        }
11146        /// Sets the NodeManagement options for a node pool.
11147        pub async fn set_node_pool_management(
11148            &mut self,
11149            request: impl tonic::IntoRequest<super::SetNodePoolManagementRequest>,
11150        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11151            self.inner
11152                .ready()
11153                .await
11154                .map_err(|e| {
11155                    tonic::Status::unknown(
11156                        format!("Service was not ready: {}", e.into()),
11157                    )
11158                })?;
11159            let codec = tonic_prost::ProstCodec::default();
11160            let path = http::uri::PathAndQuery::from_static(
11161                "/google.container.v1.ClusterManager/SetNodePoolManagement",
11162            );
11163            let mut req = request.into_request();
11164            req.extensions_mut()
11165                .insert(
11166                    GrpcMethod::new(
11167                        "google.container.v1.ClusterManager",
11168                        "SetNodePoolManagement",
11169                    ),
11170                );
11171            self.inner.unary(req, path, codec).await
11172        }
11173        /// Sets labels on a cluster.
11174        pub async fn set_labels(
11175            &mut self,
11176            request: impl tonic::IntoRequest<super::SetLabelsRequest>,
11177        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11178            self.inner
11179                .ready()
11180                .await
11181                .map_err(|e| {
11182                    tonic::Status::unknown(
11183                        format!("Service was not ready: {}", e.into()),
11184                    )
11185                })?;
11186            let codec = tonic_prost::ProstCodec::default();
11187            let path = http::uri::PathAndQuery::from_static(
11188                "/google.container.v1.ClusterManager/SetLabels",
11189            );
11190            let mut req = request.into_request();
11191            req.extensions_mut()
11192                .insert(
11193                    GrpcMethod::new("google.container.v1.ClusterManager", "SetLabels"),
11194                );
11195            self.inner.unary(req, path, codec).await
11196        }
11197        /// Enables or disables the ABAC authorization mechanism on a cluster.
11198        pub async fn set_legacy_abac(
11199            &mut self,
11200            request: impl tonic::IntoRequest<super::SetLegacyAbacRequest>,
11201        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11202            self.inner
11203                .ready()
11204                .await
11205                .map_err(|e| {
11206                    tonic::Status::unknown(
11207                        format!("Service was not ready: {}", e.into()),
11208                    )
11209                })?;
11210            let codec = tonic_prost::ProstCodec::default();
11211            let path = http::uri::PathAndQuery::from_static(
11212                "/google.container.v1.ClusterManager/SetLegacyAbac",
11213            );
11214            let mut req = request.into_request();
11215            req.extensions_mut()
11216                .insert(
11217                    GrpcMethod::new(
11218                        "google.container.v1.ClusterManager",
11219                        "SetLegacyAbac",
11220                    ),
11221                );
11222            self.inner.unary(req, path, codec).await
11223        }
11224        /// Starts master IP rotation.
11225        pub async fn start_ip_rotation(
11226            &mut self,
11227            request: impl tonic::IntoRequest<super::StartIpRotationRequest>,
11228        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11229            self.inner
11230                .ready()
11231                .await
11232                .map_err(|e| {
11233                    tonic::Status::unknown(
11234                        format!("Service was not ready: {}", e.into()),
11235                    )
11236                })?;
11237            let codec = tonic_prost::ProstCodec::default();
11238            let path = http::uri::PathAndQuery::from_static(
11239                "/google.container.v1.ClusterManager/StartIPRotation",
11240            );
11241            let mut req = request.into_request();
11242            req.extensions_mut()
11243                .insert(
11244                    GrpcMethod::new(
11245                        "google.container.v1.ClusterManager",
11246                        "StartIPRotation",
11247                    ),
11248                );
11249            self.inner.unary(req, path, codec).await
11250        }
11251        /// Completes master IP rotation.
11252        pub async fn complete_ip_rotation(
11253            &mut self,
11254            request: impl tonic::IntoRequest<super::CompleteIpRotationRequest>,
11255        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11256            self.inner
11257                .ready()
11258                .await
11259                .map_err(|e| {
11260                    tonic::Status::unknown(
11261                        format!("Service was not ready: {}", e.into()),
11262                    )
11263                })?;
11264            let codec = tonic_prost::ProstCodec::default();
11265            let path = http::uri::PathAndQuery::from_static(
11266                "/google.container.v1.ClusterManager/CompleteIPRotation",
11267            );
11268            let mut req = request.into_request();
11269            req.extensions_mut()
11270                .insert(
11271                    GrpcMethod::new(
11272                        "google.container.v1.ClusterManager",
11273                        "CompleteIPRotation",
11274                    ),
11275                );
11276            self.inner.unary(req, path, codec).await
11277        }
11278        /// Sets the size for a specific node pool. The new size will be used for all
11279        /// replicas, including future replicas created by modifying
11280        /// \[NodePool.locations\]\[google.container.v1.NodePool.locations\].
11281        pub async fn set_node_pool_size(
11282            &mut self,
11283            request: impl tonic::IntoRequest<super::SetNodePoolSizeRequest>,
11284        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11285            self.inner
11286                .ready()
11287                .await
11288                .map_err(|e| {
11289                    tonic::Status::unknown(
11290                        format!("Service was not ready: {}", e.into()),
11291                    )
11292                })?;
11293            let codec = tonic_prost::ProstCodec::default();
11294            let path = http::uri::PathAndQuery::from_static(
11295                "/google.container.v1.ClusterManager/SetNodePoolSize",
11296            );
11297            let mut req = request.into_request();
11298            req.extensions_mut()
11299                .insert(
11300                    GrpcMethod::new(
11301                        "google.container.v1.ClusterManager",
11302                        "SetNodePoolSize",
11303                    ),
11304                );
11305            self.inner.unary(req, path, codec).await
11306        }
11307        /// Enables or disables Network Policy for a cluster.
11308        pub async fn set_network_policy(
11309            &mut self,
11310            request: impl tonic::IntoRequest<super::SetNetworkPolicyRequest>,
11311        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11312            self.inner
11313                .ready()
11314                .await
11315                .map_err(|e| {
11316                    tonic::Status::unknown(
11317                        format!("Service was not ready: {}", e.into()),
11318                    )
11319                })?;
11320            let codec = tonic_prost::ProstCodec::default();
11321            let path = http::uri::PathAndQuery::from_static(
11322                "/google.container.v1.ClusterManager/SetNetworkPolicy",
11323            );
11324            let mut req = request.into_request();
11325            req.extensions_mut()
11326                .insert(
11327                    GrpcMethod::new(
11328                        "google.container.v1.ClusterManager",
11329                        "SetNetworkPolicy",
11330                    ),
11331                );
11332            self.inner.unary(req, path, codec).await
11333        }
11334        /// Sets the maintenance policy for a cluster.
11335        pub async fn set_maintenance_policy(
11336            &mut self,
11337            request: impl tonic::IntoRequest<super::SetMaintenancePolicyRequest>,
11338        ) -> std::result::Result<tonic::Response<super::Operation>, tonic::Status> {
11339            self.inner
11340                .ready()
11341                .await
11342                .map_err(|e| {
11343                    tonic::Status::unknown(
11344                        format!("Service was not ready: {}", e.into()),
11345                    )
11346                })?;
11347            let codec = tonic_prost::ProstCodec::default();
11348            let path = http::uri::PathAndQuery::from_static(
11349                "/google.container.v1.ClusterManager/SetMaintenancePolicy",
11350            );
11351            let mut req = request.into_request();
11352            req.extensions_mut()
11353                .insert(
11354                    GrpcMethod::new(
11355                        "google.container.v1.ClusterManager",
11356                        "SetMaintenancePolicy",
11357                    ),
11358                );
11359            self.inner.unary(req, path, codec).await
11360        }
11361        /// Lists subnetworks that are usable for creating clusters in a project.
11362        pub async fn list_usable_subnetworks(
11363            &mut self,
11364            request: impl tonic::IntoRequest<super::ListUsableSubnetworksRequest>,
11365        ) -> std::result::Result<
11366            tonic::Response<super::ListUsableSubnetworksResponse>,
11367            tonic::Status,
11368        > {
11369            self.inner
11370                .ready()
11371                .await
11372                .map_err(|e| {
11373                    tonic::Status::unknown(
11374                        format!("Service was not ready: {}", e.into()),
11375                    )
11376                })?;
11377            let codec = tonic_prost::ProstCodec::default();
11378            let path = http::uri::PathAndQuery::from_static(
11379                "/google.container.v1.ClusterManager/ListUsableSubnetworks",
11380            );
11381            let mut req = request.into_request();
11382            req.extensions_mut()
11383                .insert(
11384                    GrpcMethod::new(
11385                        "google.container.v1.ClusterManager",
11386                        "ListUsableSubnetworks",
11387                    ),
11388                );
11389            self.inner.unary(req, path, codec).await
11390        }
11391        /// Checks the cluster compatibility with Autopilot mode, and returns a list of
11392        /// compatibility issues.
11393        pub async fn check_autopilot_compatibility(
11394            &mut self,
11395            request: impl tonic::IntoRequest<super::CheckAutopilotCompatibilityRequest>,
11396        ) -> std::result::Result<
11397            tonic::Response<super::CheckAutopilotCompatibilityResponse>,
11398            tonic::Status,
11399        > {
11400            self.inner
11401                .ready()
11402                .await
11403                .map_err(|e| {
11404                    tonic::Status::unknown(
11405                        format!("Service was not ready: {}", e.into()),
11406                    )
11407                })?;
11408            let codec = tonic_prost::ProstCodec::default();
11409            let path = http::uri::PathAndQuery::from_static(
11410                "/google.container.v1.ClusterManager/CheckAutopilotCompatibility",
11411            );
11412            let mut req = request.into_request();
11413            req.extensions_mut()
11414                .insert(
11415                    GrpcMethod::new(
11416                        "google.container.v1.ClusterManager",
11417                        "CheckAutopilotCompatibility",
11418                    ),
11419                );
11420            self.inner.unary(req, path, codec).await
11421        }
11422        /// Fetch upgrade information of a specific cluster.
11423        pub async fn fetch_cluster_upgrade_info(
11424            &mut self,
11425            request: impl tonic::IntoRequest<super::FetchClusterUpgradeInfoRequest>,
11426        ) -> std::result::Result<
11427            tonic::Response<super::ClusterUpgradeInfo>,
11428            tonic::Status,
11429        > {
11430            self.inner
11431                .ready()
11432                .await
11433                .map_err(|e| {
11434                    tonic::Status::unknown(
11435                        format!("Service was not ready: {}", e.into()),
11436                    )
11437                })?;
11438            let codec = tonic_prost::ProstCodec::default();
11439            let path = http::uri::PathAndQuery::from_static(
11440                "/google.container.v1.ClusterManager/FetchClusterUpgradeInfo",
11441            );
11442            let mut req = request.into_request();
11443            req.extensions_mut()
11444                .insert(
11445                    GrpcMethod::new(
11446                        "google.container.v1.ClusterManager",
11447                        "FetchClusterUpgradeInfo",
11448                    ),
11449                );
11450            self.inner.unary(req, path, codec).await
11451        }
11452        /// Fetch upgrade information of a specific nodepool.
11453        pub async fn fetch_node_pool_upgrade_info(
11454            &mut self,
11455            request: impl tonic::IntoRequest<super::FetchNodePoolUpgradeInfoRequest>,
11456        ) -> std::result::Result<
11457            tonic::Response<super::NodePoolUpgradeInfo>,
11458            tonic::Status,
11459        > {
11460            self.inner
11461                .ready()
11462                .await
11463                .map_err(|e| {
11464                    tonic::Status::unknown(
11465                        format!("Service was not ready: {}", e.into()),
11466                    )
11467                })?;
11468            let codec = tonic_prost::ProstCodec::default();
11469            let path = http::uri::PathAndQuery::from_static(
11470                "/google.container.v1.ClusterManager/FetchNodePoolUpgradeInfo",
11471            );
11472            let mut req = request.into_request();
11473            req.extensions_mut()
11474                .insert(
11475                    GrpcMethod::new(
11476                        "google.container.v1.ClusterManager",
11477                        "FetchNodePoolUpgradeInfo",
11478                    ),
11479                );
11480            self.inner.unary(req, path, codec).await
11481        }
11482    }
11483}