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}