diff --git a/apis/container/v1beta1/zz_generated.conversion_spokes.go b/apis/container/v1beta1/zz_generated.conversion_spokes.go new file mode 100755 index 0000000..49d5c67 --- /dev/null +++ b/apis/container/v1beta1/zz_generated.conversion_spokes.go @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +import ( + ujconversion "github.com/crossplane/upjet/pkg/controller/conversion" + "github.com/crossplane/upjet/pkg/resource" + "github.com/pkg/errors" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// ConvertTo converts this Cluster to the hub type. +func (tr *Cluster) ConvertTo(dstRaw conversion.Hub) error { + spokeVersion := tr.GetObjectKind().GroupVersionKind().Version + hubVersion := dstRaw.GetObjectKind().GroupVersionKind().Version + if err := ujconversion.RoundTrip(dstRaw.(resource.Terraformed), tr); err != nil { + return errors.Wrapf(err, "cannot convert from the spoke version %q to the hub version %q", spokeVersion, hubVersion) + } + return nil +} + +// ConvertFrom converts from the hub type to the Cluster type. +func (tr *Cluster) ConvertFrom(srcRaw conversion.Hub) error { + spokeVersion := tr.GetObjectKind().GroupVersionKind().Version + hubVersion := srcRaw.GetObjectKind().GroupVersionKind().Version + if err := ujconversion.RoundTrip(tr, srcRaw.(resource.Terraformed)); err != nil { + return errors.Wrapf(err, "cannot convert from the hub version %q to the spoke version %q", hubVersion, spokeVersion) + } + return nil +} diff --git a/apis/container/v1beta2/zz_cluster_terraformed.go b/apis/container/v1beta2/zz_cluster_terraformed.go new file mode 100755 index 0000000..165a01d --- /dev/null +++ b/apis/container/v1beta2/zz_cluster_terraformed.go @@ -0,0 +1,145 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1beta2 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Cluster +func (mg *Cluster) GetTerraformResourceType() string { + return "google_container_cluster" +} + +// GetConnectionDetailsMapping for this Cluster +func (tr *Cluster) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"master_auth[*].client_key": "status.atProvider.masterAuth[*].clientKey"} +} + +// GetObservation of this Cluster +func (tr *Cluster) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Cluster +func (tr *Cluster) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Cluster +func (tr *Cluster) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Cluster +func (tr *Cluster) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Cluster +func (tr *Cluster) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Cluster +func (tr *Cluster) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Cluster +func (tr *Cluster) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Cluster using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Cluster) LateInitialize(attrs []byte) (bool, error) { + params := &ClusterParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + opts = append(opts, resource.WithNameFilter("AddonsConfig.DNSCacheConfig")) + opts = append(opts, resource.WithNameFilter("AddonsConfig.GCPFilestoreCsiDriverConfig")) + opts = append(opts, resource.WithNameFilter("AddonsConfig.GcsFuseCsiDriverConfig")) + opts = append(opts, resource.WithNameFilter("AddonsConfig.NetworkPolicyConfig")) + opts = append(opts, resource.WithNameFilter("ClusterAutoscaling.Enabled")) + opts = append(opts, resource.WithNameFilter("ClusterAutoscaling.ResourceLimits")) + opts = append(opts, resource.WithNameFilter("ClusterIPv4Cidr")) + opts = append(opts, resource.WithNameFilter("DefaultMaxPodsPerNode")) + opts = append(opts, resource.WithNameFilter("EnableAutopilot")) + opts = append(opts, resource.WithNameFilter("EnableIntranodeVisibility")) + opts = append(opts, resource.WithNameFilter("EnableShieldedNodes")) + opts = append(opts, resource.WithNameFilter("IPAllocationPolicy")) + opts = append(opts, resource.WithNameFilter("NetworkPolicy")) + opts = append(opts, resource.WithNameFilter("NodeConfig")) + opts = append(opts, resource.WithNameFilter("NodeVersion")) + opts = append(opts, resource.WithNameFilter("WorkloadIdentityConfig")) + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Cluster) GetTerraformSchemaVersion() int { + return 2 +} diff --git a/apis/container/v1beta2/zz_cluster_types.go b/apis/container/v1beta2/zz_cluster_types.go new file mode 100755 index 0000000..e50656d --- /dev/null +++ b/apis/container/v1beta2/zz_cluster_types.go @@ -0,0 +1,5985 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1beta2 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AdditionalNodeNetworkConfigsInitParameters struct { +} + +type AdditionalNodeNetworkConfigsObservation struct { + + // The name or self_link of the Google Compute Engine + // network to which the cluster is connected. For Shared VPC, set this to the self link of the + // shared network. + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // The name or self_link of the Google Compute Engine + // subnetwork in which the cluster's instances are launched. + Subnetwork *string `json:"subnetwork,omitempty" tf:"subnetwork,omitempty"` +} + +type AdditionalNodeNetworkConfigsParameters struct { +} + +type AdditionalPodNetworkConfigsInitParameters struct { +} + +type AdditionalPodNetworkConfigsObservation struct { + MaxPodsPerNode *float64 `json:"maxPodsPerNode,omitempty" tf:"max_pods_per_node,omitempty"` + + SecondaryPodRange *string `json:"secondaryPodRange,omitempty" tf:"secondary_pod_range,omitempty"` + + // The name or self_link of the Google Compute Engine + // subnetwork in which the cluster's instances are launched. + Subnetwork *string `json:"subnetwork,omitempty" tf:"subnetwork,omitempty"` +} + +type AdditionalPodNetworkConfigsParameters struct { +} + +type AdditionalPodRangesConfigInitParameters struct { + + // The names of the Pod ranges to add to the cluster. + // +listType=set + PodRangeNames []*string `json:"podRangeNames,omitempty" tf:"pod_range_names,omitempty"` +} + +type AdditionalPodRangesConfigObservation struct { + + // The names of the Pod ranges to add to the cluster. + // +listType=set + PodRangeNames []*string `json:"podRangeNames,omitempty" tf:"pod_range_names,omitempty"` +} + +type AdditionalPodRangesConfigParameters struct { + + // The names of the Pod ranges to add to the cluster. + // +kubebuilder:validation:Optional + // +listType=set + PodRangeNames []*string `json:"podRangeNames" tf:"pod_range_names,omitempty"` +} + +type AddonsConfigInitParameters struct { + + // . Structure is documented below. + CloudrunConfig *CloudrunConfigInitParameters `json:"cloudrunConfig,omitempty" tf:"cloudrun_config,omitempty"` + + // . + // The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + ConfigConnectorConfig *ConfigConnectorConfigInitParameters `json:"configConnectorConfig,omitempty" tf:"config_connector_config,omitempty"` + + // . + // The status of the NodeLocal DNSCache addon. It is disabled by default. + // Set enabled = true to enable. + DNSCacheConfig *DNSCacheConfigInitParameters `json:"dnsCacheConfig,omitempty" tf:"dns_cache_config,omitempty"` + + // The status of the Filestore CSI driver addon, + // which allows the usage of filestore instance as volumes. + // It is disabled by default; set enabled = true to enable. + GCPFilestoreCsiDriverConfig *GCPFilestoreCsiDriverConfigInitParameters `json:"gcpFilestoreCsiDriverConfig,omitempty" tf:"gcp_filestore_csi_driver_config,omitempty"` + + // . + // Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + GcePersistentDiskCsiDriverConfig *GcePersistentDiskCsiDriverConfigInitParameters `json:"gcePersistentDiskCsiDriverConfig,omitempty" tf:"gce_persistent_disk_csi_driver_config,omitempty"` + + // The status of the GCSFuse CSI driver addon, + // which allows the usage of a gcs bucket as volumes. + // It is disabled by default for Standard clusters; set enabled = true to enable. + // It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + // See Enable the Cloud Storage FUSE CSI driver for more information. + GcsFuseCsiDriverConfig *GcsFuseCsiDriverConfigInitParameters `json:"gcsFuseCsiDriverConfig,omitempty" tf:"gcs_fuse_csi_driver_config,omitempty"` + + // . + // The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + GkeBackupAgentConfig *GkeBackupAgentConfigInitParameters `json:"gkeBackupAgentConfig,omitempty" tf:"gke_backup_agent_config,omitempty"` + + // The status of the HTTP (L7) load balancing + // controller addon, which makes it easy to set up HTTP load balancers for services in a + // cluster. It is enabled by default; set disabled = true to disable. + HTTPLoadBalancing *HTTPLoadBalancingInitParameters `json:"httpLoadBalancing,omitempty" tf:"http_load_balancing,omitempty"` + + // The status of the Horizontal Pod Autoscaling + // addon, which increases or decreases the number of replica pods a replication controller + // has based on the resource usage of the existing pods. + // It is enabled by default; + // set disabled = true to disable. + HorizontalPodAutoscaling *HorizontalPodAutoscalingInitParameters `json:"horizontalPodAutoscaling,omitempty" tf:"horizontal_pod_autoscaling,omitempty"` + + // . + // Structure is documented below. + IstioConfig *IstioConfigInitParameters `json:"istioConfig,omitempty" tf:"istio_config,omitempty"` + + // . + // Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + KalmConfig *KalmConfigInitParameters `json:"kalmConfig,omitempty" tf:"kalm_config,omitempty"` + + // Whether we should enable the network policy addon + // for the master. This must be enabled in order to enable network policy for the nodes. + // To enable this, you must also define a network_policy block, + // otherwise nothing will happen. + // It can only be disabled if the nodes already do not have network policies enabled. + // Defaults to disabled; set disabled = false to enable. + NetworkPolicyConfig *NetworkPolicyConfigInitParameters `json:"networkPolicyConfig,omitempty" tf:"network_policy_config,omitempty"` + + // . The status of the Ray Operator + // addon. + // It is disabled by default. Set enabled = true to enable. The minimum + // cluster version to enable Ray is 1.30.0-gke.1747000. + RayOperatorConfig []RayOperatorConfigInitParameters `json:"rayOperatorConfig,omitempty" tf:"ray_operator_config,omitempty"` + + // . + // The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + // It is disabled by default for Standard clusters. Set enabled = true to enable. + StatefulHaConfig *StatefulHaConfigInitParameters `json:"statefulHaConfig,omitempty" tf:"stateful_ha_config,omitempty"` +} + +type AddonsConfigObservation struct { + + // . Structure is documented below. + CloudrunConfig *CloudrunConfigObservation `json:"cloudrunConfig,omitempty" tf:"cloudrun_config,omitempty"` + + // . + // The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + ConfigConnectorConfig *ConfigConnectorConfigObservation `json:"configConnectorConfig,omitempty" tf:"config_connector_config,omitempty"` + + // . + // The status of the NodeLocal DNSCache addon. It is disabled by default. + // Set enabled = true to enable. + DNSCacheConfig *DNSCacheConfigObservation `json:"dnsCacheConfig,omitempty" tf:"dns_cache_config,omitempty"` + + // The status of the Filestore CSI driver addon, + // which allows the usage of filestore instance as volumes. + // It is disabled by default; set enabled = true to enable. + GCPFilestoreCsiDriverConfig *GCPFilestoreCsiDriverConfigObservation `json:"gcpFilestoreCsiDriverConfig,omitempty" tf:"gcp_filestore_csi_driver_config,omitempty"` + + // . + // Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + GcePersistentDiskCsiDriverConfig *GcePersistentDiskCsiDriverConfigObservation `json:"gcePersistentDiskCsiDriverConfig,omitempty" tf:"gce_persistent_disk_csi_driver_config,omitempty"` + + // The status of the GCSFuse CSI driver addon, + // which allows the usage of a gcs bucket as volumes. + // It is disabled by default for Standard clusters; set enabled = true to enable. + // It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + // See Enable the Cloud Storage FUSE CSI driver for more information. + GcsFuseCsiDriverConfig *GcsFuseCsiDriverConfigObservation `json:"gcsFuseCsiDriverConfig,omitempty" tf:"gcs_fuse_csi_driver_config,omitempty"` + + // . + // The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + GkeBackupAgentConfig *GkeBackupAgentConfigObservation `json:"gkeBackupAgentConfig,omitempty" tf:"gke_backup_agent_config,omitempty"` + + // The status of the HTTP (L7) load balancing + // controller addon, which makes it easy to set up HTTP load balancers for services in a + // cluster. It is enabled by default; set disabled = true to disable. + HTTPLoadBalancing *HTTPLoadBalancingObservation `json:"httpLoadBalancing,omitempty" tf:"http_load_balancing,omitempty"` + + // The status of the Horizontal Pod Autoscaling + // addon, which increases or decreases the number of replica pods a replication controller + // has based on the resource usage of the existing pods. + // It is enabled by default; + // set disabled = true to disable. + HorizontalPodAutoscaling *HorizontalPodAutoscalingObservation `json:"horizontalPodAutoscaling,omitempty" tf:"horizontal_pod_autoscaling,omitempty"` + + // . + // Structure is documented below. + IstioConfig *IstioConfigObservation `json:"istioConfig,omitempty" tf:"istio_config,omitempty"` + + // . + // Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + KalmConfig *KalmConfigObservation `json:"kalmConfig,omitempty" tf:"kalm_config,omitempty"` + + // Whether we should enable the network policy addon + // for the master. This must be enabled in order to enable network policy for the nodes. + // To enable this, you must also define a network_policy block, + // otherwise nothing will happen. + // It can only be disabled if the nodes already do not have network policies enabled. + // Defaults to disabled; set disabled = false to enable. + NetworkPolicyConfig *NetworkPolicyConfigObservation `json:"networkPolicyConfig,omitempty" tf:"network_policy_config,omitempty"` + + // . The status of the Ray Operator + // addon. + // It is disabled by default. Set enabled = true to enable. The minimum + // cluster version to enable Ray is 1.30.0-gke.1747000. + RayOperatorConfig []RayOperatorConfigObservation `json:"rayOperatorConfig,omitempty" tf:"ray_operator_config,omitempty"` + + // . + // The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + // It is disabled by default for Standard clusters. Set enabled = true to enable. + StatefulHaConfig *StatefulHaConfigObservation `json:"statefulHaConfig,omitempty" tf:"stateful_ha_config,omitempty"` +} + +type AddonsConfigParameters struct { + + // . Structure is documented below. + // +kubebuilder:validation:Optional + CloudrunConfig *CloudrunConfigParameters `json:"cloudrunConfig,omitempty" tf:"cloudrun_config,omitempty"` + + // . + // The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + // +kubebuilder:validation:Optional + ConfigConnectorConfig *ConfigConnectorConfigParameters `json:"configConnectorConfig,omitempty" tf:"config_connector_config,omitempty"` + + // . + // The status of the NodeLocal DNSCache addon. It is disabled by default. + // Set enabled = true to enable. + // +kubebuilder:validation:Optional + DNSCacheConfig *DNSCacheConfigParameters `json:"dnsCacheConfig,omitempty" tf:"dns_cache_config,omitempty"` + + // The status of the Filestore CSI driver addon, + // which allows the usage of filestore instance as volumes. + // It is disabled by default; set enabled = true to enable. + // +kubebuilder:validation:Optional + GCPFilestoreCsiDriverConfig *GCPFilestoreCsiDriverConfigParameters `json:"gcpFilestoreCsiDriverConfig,omitempty" tf:"gcp_filestore_csi_driver_config,omitempty"` + + // . + // Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + // +kubebuilder:validation:Optional + GcePersistentDiskCsiDriverConfig *GcePersistentDiskCsiDriverConfigParameters `json:"gcePersistentDiskCsiDriverConfig,omitempty" tf:"gce_persistent_disk_csi_driver_config,omitempty"` + + // The status of the GCSFuse CSI driver addon, + // which allows the usage of a gcs bucket as volumes. + // It is disabled by default for Standard clusters; set enabled = true to enable. + // It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + // See Enable the Cloud Storage FUSE CSI driver for more information. + // +kubebuilder:validation:Optional + GcsFuseCsiDriverConfig *GcsFuseCsiDriverConfigParameters `json:"gcsFuseCsiDriverConfig,omitempty" tf:"gcs_fuse_csi_driver_config,omitempty"` + + // . + // The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + // +kubebuilder:validation:Optional + GkeBackupAgentConfig *GkeBackupAgentConfigParameters `json:"gkeBackupAgentConfig,omitempty" tf:"gke_backup_agent_config,omitempty"` + + // The status of the HTTP (L7) load balancing + // controller addon, which makes it easy to set up HTTP load balancers for services in a + // cluster. It is enabled by default; set disabled = true to disable. + // +kubebuilder:validation:Optional + HTTPLoadBalancing *HTTPLoadBalancingParameters `json:"httpLoadBalancing,omitempty" tf:"http_load_balancing,omitempty"` + + // The status of the Horizontal Pod Autoscaling + // addon, which increases or decreases the number of replica pods a replication controller + // has based on the resource usage of the existing pods. + // It is enabled by default; + // set disabled = true to disable. + // +kubebuilder:validation:Optional + HorizontalPodAutoscaling *HorizontalPodAutoscalingParameters `json:"horizontalPodAutoscaling,omitempty" tf:"horizontal_pod_autoscaling,omitempty"` + + // . + // Structure is documented below. + // +kubebuilder:validation:Optional + IstioConfig *IstioConfigParameters `json:"istioConfig,omitempty" tf:"istio_config,omitempty"` + + // . + // Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + // +kubebuilder:validation:Optional + KalmConfig *KalmConfigParameters `json:"kalmConfig,omitempty" tf:"kalm_config,omitempty"` + + // Whether we should enable the network policy addon + // for the master. This must be enabled in order to enable network policy for the nodes. + // To enable this, you must also define a network_policy block, + // otherwise nothing will happen. + // It can only be disabled if the nodes already do not have network policies enabled. + // Defaults to disabled; set disabled = false to enable. + // +kubebuilder:validation:Optional + NetworkPolicyConfig *NetworkPolicyConfigParameters `json:"networkPolicyConfig,omitempty" tf:"network_policy_config,omitempty"` + + // . The status of the Ray Operator + // addon. + // It is disabled by default. Set enabled = true to enable. The minimum + // cluster version to enable Ray is 1.30.0-gke.1747000. + // +kubebuilder:validation:Optional + RayOperatorConfig []RayOperatorConfigParameters `json:"rayOperatorConfig,omitempty" tf:"ray_operator_config,omitempty"` + + // . + // The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + // It is disabled by default for Standard clusters. Set enabled = true to enable. + // +kubebuilder:validation:Optional + StatefulHaConfig *StatefulHaConfigParameters `json:"statefulHaConfig,omitempty" tf:"stateful_ha_config,omitempty"` +} + +type AdvancedDatapathObservabilityConfigInitParameters struct { + + // Whether or not to enable advanced datapath metrics. + EnableMetrics *bool `json:"enableMetrics,omitempty" tf:"enable_metrics,omitempty"` + + // Whether or not Relay is enabled. + EnableRelay *bool `json:"enableRelay,omitempty" tf:"enable_relay,omitempty"` +} + +type AdvancedDatapathObservabilityConfigObservation struct { + + // Whether or not to enable advanced datapath metrics. + EnableMetrics *bool `json:"enableMetrics,omitempty" tf:"enable_metrics,omitempty"` + + // Whether or not Relay is enabled. + EnableRelay *bool `json:"enableRelay,omitempty" tf:"enable_relay,omitempty"` +} + +type AdvancedDatapathObservabilityConfigParameters struct { + + // Whether or not to enable advanced datapath metrics. + // +kubebuilder:validation:Optional + EnableMetrics *bool `json:"enableMetrics" tf:"enable_metrics,omitempty"` + + // Whether or not Relay is enabled. + // +kubebuilder:validation:Optional + EnableRelay *bool `json:"enableRelay" tf:"enable_relay,omitempty"` +} + +type AdvancedMachineFeaturesInitParameters struct { + + // Defines whether the instance should have nested virtualization enabled. Defaults to false. + EnableNestedVirtualization *bool `json:"enableNestedVirtualization,omitempty" tf:"enable_nested_virtualization,omitempty"` + + // The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed. + ThreadsPerCore *float64 `json:"threadsPerCore,omitempty" tf:"threads_per_core,omitempty"` +} + +type AdvancedMachineFeaturesObservation struct { + + // Defines whether the instance should have nested virtualization enabled. Defaults to false. + EnableNestedVirtualization *bool `json:"enableNestedVirtualization,omitempty" tf:"enable_nested_virtualization,omitempty"` + + // The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed. + ThreadsPerCore *float64 `json:"threadsPerCore,omitempty" tf:"threads_per_core,omitempty"` +} + +type AdvancedMachineFeaturesParameters struct { + + // Defines whether the instance should have nested virtualization enabled. Defaults to false. + // +kubebuilder:validation:Optional + EnableNestedVirtualization *bool `json:"enableNestedVirtualization,omitempty" tf:"enable_nested_virtualization,omitempty"` + + // The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed. + // +kubebuilder:validation:Optional + ThreadsPerCore *float64 `json:"threadsPerCore" tf:"threads_per_core,omitempty"` +} + +type AuthenticatorGroupsConfigInitParameters struct { + + // The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com. + SecurityGroup *string `json:"securityGroup,omitempty" tf:"security_group,omitempty"` +} + +type AuthenticatorGroupsConfigObservation struct { + + // The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com. + SecurityGroup *string `json:"securityGroup,omitempty" tf:"security_group,omitempty"` +} + +type AuthenticatorGroupsConfigParameters struct { + + // The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com. + // +kubebuilder:validation:Optional + SecurityGroup *string `json:"securityGroup" tf:"security_group,omitempty"` +} + +type AutoProvisioningDefaultsInitParameters struct { + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to 100 + DiskSize *float64 `json:"diskSize,omitempty" tf:"disk_size,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // NodeManagement configuration for this NodePool. Structure is documented below. + Management *ManagementInitParameters `json:"management,omitempty" tf:"management,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + ShieldedInstanceConfig *ShieldedInstanceConfigInitParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Specifies the upgrade settings for NAP created node pools. Structure is documented below. + UpgradeSettings *UpgradeSettingsInitParameters `json:"upgradeSettings,omitempty" tf:"upgrade_settings,omitempty"` +} + +type AutoProvisioningDefaultsObservation struct { + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to 100 + DiskSize *float64 `json:"diskSize,omitempty" tf:"disk_size,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // NodeManagement configuration for this NodePool. Structure is documented below. + Management *ManagementObservation `json:"management,omitempty" tf:"management,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + ShieldedInstanceConfig *ShieldedInstanceConfigObservation `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Specifies the upgrade settings for NAP created node pools. Structure is documented below. + UpgradeSettings *UpgradeSettingsObservation `json:"upgradeSettings,omitempty" tf:"upgrade_settings,omitempty"` +} + +type AutoProvisioningDefaultsParameters struct { + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + // +kubebuilder:validation:Optional + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. Defaults to 100 + // +kubebuilder:validation:Optional + DiskSize *float64 `json:"diskSize,omitempty" tf:"disk_size,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + // +kubebuilder:validation:Optional + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + // +kubebuilder:validation:Optional + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // NodeManagement configuration for this NodePool. Structure is documented below. + // +kubebuilder:validation:Optional + Management *ManagementParameters `json:"management,omitempty" tf:"management,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + // +kubebuilder:validation:Optional + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + // +kubebuilder:validation:Optional + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + // +kubebuilder:validation:Optional + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + // +kubebuilder:validation:Optional + ShieldedInstanceConfig *ShieldedInstanceConfigParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Specifies the upgrade settings for NAP created node pools. Structure is documented below. + // +kubebuilder:validation:Optional + UpgradeSettings *UpgradeSettingsParameters `json:"upgradeSettings,omitempty" tf:"upgrade_settings,omitempty"` +} + +type AutoscalingInitParameters struct { +} + +type AutoscalingObservation struct { + LocationPolicy *string `json:"locationPolicy,omitempty" tf:"location_policy,omitempty"` + + MaxNodeCount *float64 `json:"maxNodeCount,omitempty" tf:"max_node_count,omitempty"` + + MinNodeCount *float64 `json:"minNodeCount,omitempty" tf:"min_node_count,omitempty"` + + TotalMaxNodeCount *float64 `json:"totalMaxNodeCount,omitempty" tf:"total_max_node_count,omitempty"` + + TotalMinNodeCount *float64 `json:"totalMinNodeCount,omitempty" tf:"total_min_node_count,omitempty"` +} + +type AutoscalingParameters struct { +} + +type BigqueryDestinationInitParameters struct { + + // The ID of a BigQuery Dataset. For Example: + DatasetID *string `json:"datasetId,omitempty" tf:"dataset_id,omitempty"` +} + +type BigqueryDestinationObservation struct { + + // The ID of a BigQuery Dataset. For Example: + DatasetID *string `json:"datasetId,omitempty" tf:"dataset_id,omitempty"` +} + +type BigqueryDestinationParameters struct { + + // The ID of a BigQuery Dataset. For Example: + // +kubebuilder:validation:Optional + DatasetID *string `json:"datasetId" tf:"dataset_id,omitempty"` +} + +type BinaryAuthorizationInitParameters struct { + + // (DEPRECATED) Enable Binary Authorization for this cluster. Deprecated in favor of evaluation_mode. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + // and PROJECT_SINGLETON_POLICY_ENFORCE. + EvaluationMode *string `json:"evaluationMode,omitempty" tf:"evaluation_mode,omitempty"` +} + +type BinaryAuthorizationObservation struct { + + // (DEPRECATED) Enable Binary Authorization for this cluster. Deprecated in favor of evaluation_mode. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + // and PROJECT_SINGLETON_POLICY_ENFORCE. + EvaluationMode *string `json:"evaluationMode,omitempty" tf:"evaluation_mode,omitempty"` +} + +type BinaryAuthorizationParameters struct { + + // (DEPRECATED) Enable Binary Authorization for this cluster. Deprecated in favor of evaluation_mode. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + // and PROJECT_SINGLETON_POLICY_ENFORCE. + // +kubebuilder:validation:Optional + EvaluationMode *string `json:"evaluationMode,omitempty" tf:"evaluation_mode,omitempty"` +} + +type BlueGreenSettingsInitParameters struct { + + // Time needed after draining entire blue pool. After this period, blue pool will be cleaned up. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". + NodePoolSoakDuration *string `json:"nodePoolSoakDuration,omitempty" tf:"node_pool_soak_duration,omitempty"` + + // green upgrade. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + StandardRolloutPolicy *StandardRolloutPolicyInitParameters `json:"standardRolloutPolicy,omitempty" tf:"standard_rollout_policy,omitempty"` +} + +type BlueGreenSettingsObservation struct { + + // Time needed after draining entire blue pool. After this period, blue pool will be cleaned up. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". + NodePoolSoakDuration *string `json:"nodePoolSoakDuration,omitempty" tf:"node_pool_soak_duration,omitempty"` + + // green upgrade. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + StandardRolloutPolicy *StandardRolloutPolicyObservation `json:"standardRolloutPolicy,omitempty" tf:"standard_rollout_policy,omitempty"` +} + +type BlueGreenSettingsParameters struct { + + // Time needed after draining entire blue pool. After this period, blue pool will be cleaned up. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". + // +kubebuilder:validation:Optional + NodePoolSoakDuration *string `json:"nodePoolSoakDuration,omitempty" tf:"node_pool_soak_duration,omitempty"` + + // green upgrade. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + // +kubebuilder:validation:Optional + StandardRolloutPolicy *StandardRolloutPolicyParameters `json:"standardRolloutPolicy,omitempty" tf:"standard_rollout_policy,omitempty"` +} + +type BlueGreenSettingsStandardRolloutPolicyInitParameters struct { +} + +type BlueGreenSettingsStandardRolloutPolicyObservation struct { + + // Number of blue nodes to drain in a batch. Only one of the batch_percentage or batch_node_count can be specified. + BatchNodeCount *float64 `json:"batchNodeCount,omitempty" tf:"batch_node_count,omitempty"` + + // : Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0). Only one of the batch_percentage or batch_node_count can be specified. + BatchPercentage *float64 `json:"batchPercentage,omitempty" tf:"batch_percentage,omitempty"` + + // Soak time after each batch gets drained. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".`. + BatchSoakDuration *string `json:"batchSoakDuration,omitempty" tf:"batch_soak_duration,omitempty"` +} + +type BlueGreenSettingsStandardRolloutPolicyParameters struct { +} + +type CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters struct { +} + +type CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation struct { + SecretURI *string `json:"secretUri,omitempty" tf:"secret_uri,omitempty"` +} + +type CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters struct { +} + +type CertificateAuthorityDomainConfigInitParameters struct { + Fqdns []*string `json:"fqdns,omitempty" tf:"fqdns,omitempty"` + + GCPSecretManagerCertificateConfig *GCPSecretManagerCertificateConfigInitParameters `json:"gcpSecretManagerCertificateConfig,omitempty" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type CertificateAuthorityDomainConfigObservation struct { + Fqdns []*string `json:"fqdns,omitempty" tf:"fqdns,omitempty"` + + GCPSecretManagerCertificateConfig *GCPSecretManagerCertificateConfigObservation `json:"gcpSecretManagerCertificateConfig,omitempty" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type CertificateAuthorityDomainConfigParameters struct { + + // +kubebuilder:validation:Optional + Fqdns []*string `json:"fqdns" tf:"fqdns,omitempty"` + + // +kubebuilder:validation:Optional + GCPSecretManagerCertificateConfig *GCPSecretManagerCertificateConfigParameters `json:"gcpSecretManagerCertificateConfig" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type CidrBlocksInitParameters struct { + + // External network that can access Kubernetes master through HTTPS. + // Must be specified in CIDR notation. + CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + + // Field for users to identify CIDR blocks. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` +} + +type CidrBlocksObservation struct { + + // External network that can access Kubernetes master through HTTPS. + // Must be specified in CIDR notation. + CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + + // Field for users to identify CIDR blocks. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` +} + +type CidrBlocksParameters struct { + + // External network that can access Kubernetes master through HTTPS. + // Must be specified in CIDR notation. + // +kubebuilder:validation:Optional + CidrBlock *string `json:"cidrBlock" tf:"cidr_block,omitempty"` + + // Field for users to identify CIDR blocks. + // +kubebuilder:validation:Optional + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` +} + +type ClientCertificateConfigInitParameters struct { + IssueClientCertificate *bool `json:"issueClientCertificate,omitempty" tf:"issue_client_certificate,omitempty"` +} + +type ClientCertificateConfigObservation struct { + IssueClientCertificate *bool `json:"issueClientCertificate,omitempty" tf:"issue_client_certificate,omitempty"` +} + +type ClientCertificateConfigParameters struct { + + // +kubebuilder:validation:Optional + IssueClientCertificate *bool `json:"issueClientCertificate" tf:"issue_client_certificate,omitempty"` +} + +type CloudrunConfigInitParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // The load balancer type of CloudRun ingress service. It is external load balancer by default. + // Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + LoadBalancerType *string `json:"loadBalancerType,omitempty" tf:"load_balancer_type,omitempty"` +} + +type CloudrunConfigObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // The load balancer type of CloudRun ingress service. It is external load balancer by default. + // Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + LoadBalancerType *string `json:"loadBalancerType,omitempty" tf:"load_balancer_type,omitempty"` +} + +type CloudrunConfigParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` + + // The load balancer type of CloudRun ingress service. It is external load balancer by default. + // Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + // +kubebuilder:validation:Optional + LoadBalancerType *string `json:"loadBalancerType,omitempty" tf:"load_balancer_type,omitempty"` +} + +type ClusterAutoscalingInitParameters struct { + + // Contains defaults for a node pool created by NAP. A subset of fields also apply to + // GKE Autopilot clusters. + // Structure is documented below. + AutoProvisioningDefaults *AutoProvisioningDefaultsInitParameters `json:"autoProvisioningDefaults,omitempty" tf:"auto_provisioning_defaults,omitempty"` + + // The list of Google Compute Engine + // zones in which the + // NodePool's nodes can be created by NAP. + AutoProvisioningLocations []*string `json:"autoProvisioningLocations,omitempty" tf:"auto_provisioning_locations,omitempty"` + + // Configuration + // options for the Autoscaling profile + // feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + // when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + AutoscalingProfile *string `json:"autoscalingProfile,omitempty" tf:"autoscaling_profile,omitempty"` + + // Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + // for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Global constraints for machine resources in the + // cluster. Configuring the cpu and memory types is required if node + // auto-provisioning is enabled. These limits will apply to node pool autoscaling + // in addition to node auto-provisioning. Structure is documented below. + ResourceLimits []ResourceLimitsInitParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type ClusterAutoscalingObservation struct { + + // Contains defaults for a node pool created by NAP. A subset of fields also apply to + // GKE Autopilot clusters. + // Structure is documented below. + AutoProvisioningDefaults *AutoProvisioningDefaultsObservation `json:"autoProvisioningDefaults,omitempty" tf:"auto_provisioning_defaults,omitempty"` + + // The list of Google Compute Engine + // zones in which the + // NodePool's nodes can be created by NAP. + AutoProvisioningLocations []*string `json:"autoProvisioningLocations,omitempty" tf:"auto_provisioning_locations,omitempty"` + + // Configuration + // options for the Autoscaling profile + // feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + // when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + AutoscalingProfile *string `json:"autoscalingProfile,omitempty" tf:"autoscaling_profile,omitempty"` + + // Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + // for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Global constraints for machine resources in the + // cluster. Configuring the cpu and memory types is required if node + // auto-provisioning is enabled. These limits will apply to node pool autoscaling + // in addition to node auto-provisioning. Structure is documented below. + ResourceLimits []ResourceLimitsObservation `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type ClusterAutoscalingParameters struct { + + // Contains defaults for a node pool created by NAP. A subset of fields also apply to + // GKE Autopilot clusters. + // Structure is documented below. + // +kubebuilder:validation:Optional + AutoProvisioningDefaults *AutoProvisioningDefaultsParameters `json:"autoProvisioningDefaults,omitempty" tf:"auto_provisioning_defaults,omitempty"` + + // The list of Google Compute Engine + // zones in which the + // NodePool's nodes can be created by NAP. + // +kubebuilder:validation:Optional + AutoProvisioningLocations []*string `json:"autoProvisioningLocations,omitempty" tf:"auto_provisioning_locations,omitempty"` + + // Configuration + // options for the Autoscaling profile + // feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + // when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + // +kubebuilder:validation:Optional + AutoscalingProfile *string `json:"autoscalingProfile,omitempty" tf:"autoscaling_profile,omitempty"` + + // Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + // for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Global constraints for machine resources in the + // cluster. Configuring the cpu and memory types is required if node + // auto-provisioning is enabled. These limits will apply to node pool autoscaling + // in addition to node auto-provisioning. Structure is documented below. + // +kubebuilder:validation:Optional + ResourceLimits []ResourceLimitsParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type ClusterInitParameters struct { + + // The configuration for addons supported by GKE. + // Structure is documented below. + AddonsConfig *AddonsConfigInitParameters `json:"addonsConfig,omitempty" tf:"addons_config,omitempty"` + + // Enable NET_ADMIN for the cluster. Defaults to + // false. This field should only be enabled for Autopilot clusters (enable_autopilot + // set to true). + AllowNetAdmin *bool `json:"allowNetAdmin,omitempty" tf:"allow_net_admin,omitempty"` + + // Configuration for the + // Google Groups for GKE feature. + // Structure is documented below. + AuthenticatorGroupsConfig *AuthenticatorGroupsConfigInitParameters `json:"authenticatorGroupsConfig,omitempty" tf:"authenticator_groups_config,omitempty"` + + // Configuration options for the Binary + // Authorization feature. Structure is documented below. + BinaryAuthorization *BinaryAuthorizationInitParameters `json:"binaryAuthorization,omitempty" tf:"binary_authorization,omitempty"` + + // Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + // automatically adjust the size of the cluster and create/delete node pools based + // on the current needs of the cluster's workload. See the + // guide to using Node Auto-Provisioning + // for more details. Structure is documented below. + ClusterAutoscaling *ClusterAutoscalingInitParameters `json:"clusterAutoscaling,omitempty" tf:"cluster_autoscaling,omitempty"` + + // The IP address range of the Kubernetes pods + // in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + // automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + // default a new cluster to routes-based, where ip_allocation_policy is not defined. + ClusterIPv4Cidr *string `json:"clusterIpv4Cidr,omitempty" tf:"cluster_ipv4_cidr,omitempty"` + + // Configuration for + // ClusterTelemetry feature, + // Structure is documented below. + ClusterTelemetry *ClusterTelemetryInitParameters `json:"clusterTelemetry,omitempty" tf:"cluster_telemetry,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below documented below. + ConfidentialNodes *ConfidentialNodesInitParameters `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Configuration for the + // Cost Allocation feature. + // Structure is documented below. + CostManagementConfig *CostManagementConfigInitParameters `json:"costManagementConfig,omitempty" tf:"cost_management_config,omitempty"` + + // Configuration for Using Cloud DNS for GKE. Structure is documented below. + DNSConfig *DNSConfigInitParameters `json:"dnsConfig,omitempty" tf:"dns_config,omitempty"` + + // Structure is documented below. + DatabaseEncryption *DatabaseEncryptionInitParameters `json:"databaseEncryption,omitempty" tf:"database_encryption,omitempty"` + + // The desired datapath provider for this cluster. This is set to LEGACY_DATAPATH by default, which uses the IPTables-based kube-proxy implementation. Set to ADVANCED_DATAPATH to enable Dataplane v2. + DatapathProvider *string `json:"datapathProvider,omitempty" tf:"datapath_provider,omitempty"` + + // The default maximum number of pods + // per node in this cluster. This doesn't work on "routes-based" clusters, clusters + // that don't have IP Aliasing enabled. See the official documentation + // for more information. + DefaultMaxPodsPerNode *float64 `json:"defaultMaxPodsPerNode,omitempty" tf:"default_max_pods_per_node,omitempty"` + + // GKE SNAT DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster, API doc. Structure is documented below + DefaultSnatStatus *DefaultSnatStatusInitParameters `json:"defaultSnatStatus,omitempty" tf:"default_snat_status,omitempty"` + + DeletionProtection *bool `json:"deletionProtection,omitempty" tf:"deletion_protection,omitempty"` + + // Description of the cluster. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Enable Autopilot for this cluster. Defaults to false. + // Note that when this option is enabled, certain features of Standard GKE are not available. + // See the official documentation + // for available features. + EnableAutopilot *bool `json:"enableAutopilot,omitempty" tf:"enable_autopilot,omitempty"` + + // Whether CiliumClusterWideNetworkPolicy is enabled on this cluster. Defaults to false. + EnableCiliumClusterwideNetworkPolicy *bool `json:"enableCiliumClusterwideNetworkPolicy,omitempty" tf:"enable_cilium_clusterwide_network_policy,omitempty"` + + // Whether FQDN Network Policy is enabled on this cluster. Users who enable this feature for existing Standard clusters must restart the GKE Dataplane V2 anetd DaemonSet after enabling it. See the Enable FQDN Network Policy in an existing cluster for more information. + EnableFqdnNetworkPolicy *bool `json:"enableFqdnNetworkPolicy,omitempty" tf:"enable_fqdn_network_policy,omitempty"` + + // Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network. + EnableIntranodeVisibility *bool `json:"enableIntranodeVisibility,omitempty" tf:"enable_intranode_visibility,omitempty"` + + // Configuration for Kubernetes Beta APIs. + // Structure is documented below. + EnableK8SBetaApis *EnableK8SBetaApisInitParameters `json:"enableK8SBetaApis,omitempty" tf:"enable_k8s_beta_apis,omitempty"` + + // Whether to enable Kubernetes Alpha features for + // this cluster. Note that when this option is enabled, the cluster cannot be upgraded + // and will be automatically deleted after 30 days. + EnableKubernetesAlpha *bool `json:"enableKubernetesAlpha,omitempty" tf:"enable_kubernetes_alpha,omitempty"` + + // Whether L4ILB Subsetting is enabled for this cluster. + EnableL4IlbSubsetting *bool `json:"enableL4IlbSubsetting,omitempty" tf:"enable_l4_ilb_subsetting,omitempty"` + + // Whether the ABAC authorizer is enabled for this cluster. + // When enabled, identities in the system, including service accounts, nodes, and controllers, + // will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + // Defaults to false + EnableLegacyAbac *bool `json:"enableLegacyAbac,omitempty" tf:"enable_legacy_abac,omitempty"` + + // Whether multi-networking is enabled for this cluster. + EnableMultiNetworking *bool `json:"enableMultiNetworking,omitempty" tf:"enable_multi_networking,omitempty"` + + // Enable Shielded Nodes features on all nodes in this cluster. Defaults to true. + EnableShieldedNodes *bool `json:"enableShieldedNodes,omitempty" tf:"enable_shielded_nodes,omitempty"` + + // Whether to enable Cloud TPU resources in this cluster. + // See the official documentation. + EnableTpu *bool `json:"enableTpu,omitempty" tf:"enable_tpu,omitempty"` + + // Fleet configuration for the cluster. Structure is documented below. + Fleet *FleetInitParameters `json:"fleet,omitempty" tf:"fleet,omitempty"` + + // Configuration for GKE Gateway API controller. Structure is documented below. + GatewayAPIConfig *GatewayAPIConfigInitParameters `json:"gatewayApiConfig,omitempty" tf:"gateway_api_config,omitempty"` + + // Configuration of cluster IP allocation for + // VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + // Structure is documented below. + IPAllocationPolicy *IPAllocationPolicyInitParameters `json:"ipAllocationPolicy,omitempty" tf:"ip_allocation_policy,omitempty"` + + // . Structure is documented below. + IdentityServiceConfig *IdentityServiceConfigInitParameters `json:"identityServiceConfig,omitempty" tf:"identity_service_config,omitempty"` + + // The number of nodes to create in this + // cluster's default node pool. In regional or multi-zonal clusters, this is the + // number of nodes per zone. Must be set if node_pool is not set. If you're using + // google_container_node_pool objects with no default node pool, you'll need to + // set this to a value of at least 1, alongside setting + // remove_default_node_pool to true. + InitialNodeCount *float64 `json:"initialNodeCount,omitempty" tf:"initial_node_count,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + LoggingConfig *LoggingConfigInitParameters `json:"loggingConfig,omitempty" tf:"logging_config,omitempty"` + + // The logging service that the cluster should + // write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + // logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + LoggingService *string `json:"loggingService,omitempty" tf:"logging_service,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + MaintenancePolicy *MaintenancePolicyInitParameters `json:"maintenancePolicy,omitempty" tf:"maintenance_policy,omitempty"` + + // The authentication information for accessing the + // Kubernetes master. Some values in this block are only returned by the API if + // your service account has permission to get credentials for your GKE cluster. If + // you see an unexpected diff unsetting your client cert, ensure you have the + // container.clusters.getCredentials permission. + // Structure is documented below. + MasterAuth *MasterAuthInitParameters `json:"masterAuth,omitempty" tf:"master_auth,omitempty"` + + // The desired + // configuration options for master authorized networks. Omit the + // nested cidr_blocks attribute to disallow external access (except + // the cluster node IPs, which GKE automatically whitelists). + // Structure is documented below. + MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfigInitParameters `json:"masterAuthorizedNetworksConfig,omitempty" tf:"master_authorized_networks_config,omitempty"` + + // Structure is documented below. + MeshCertificates *MeshCertificatesInitParameters `json:"meshCertificates,omitempty" tf:"mesh_certificates,omitempty"` + + // The minimum version of the master. GKE + // will auto-update the master to new versions, so this does not guarantee the + // current master version--use the read-only master_version field to obtain that. + // If unset, the cluster's version will be set by GKE to the version of the most recent + // official release (which is not necessarily the latest version). If you intend to specify versions manually, + // the docs + // describe the various acceptable formats for this field. + MinMasterVersion *string `json:"minMasterVersion,omitempty" tf:"min_master_version,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + MonitoringConfig *MonitoringConfigInitParameters `json:"monitoringConfig,omitempty" tf:"monitoring_config,omitempty"` + + // The monitoring service that the cluster + // should write metrics to. + // Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + // VM metrics will be collected by Google Compute Engine regardless of this setting + // Available options include + // monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + // Defaults to monitoring.googleapis.com/kubernetes + MonitoringService *string `json:"monitoringService,omitempty" tf:"monitoring_service,omitempty"` + + // The name or self_link of the Google Compute Engine + // network to which the cluster is connected. For Shared VPC, set this to the self link of the + // shared network. + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // Configuration options for the + // NetworkPolicy + // feature. Structure is documented below. + NetworkPolicy *NetworkPolicyInitParameters `json:"networkPolicy,omitempty" tf:"network_policy,omitempty"` + + // Determines whether alias IPs or routes will be used for pod IPs in the cluster. + // Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + NetworkingMode *string `json:"networkingMode,omitempty" tf:"networking_mode,omitempty"` + + // Parameters used in creating the default node pool. Structure is documented below. + NodeConfig *NodeConfigInitParameters `json:"nodeConfig,omitempty" tf:"node_config,omitempty"` + + // The list of zones in which the cluster's nodes + // are located. Nodes must be in the region of their regional cluster or in the + // same region as their cluster's zone for zonal clusters. If this is specified for + // a zonal cluster, omit the cluster's zone. + // +listType=set + NodeLocations []*string `json:"nodeLocations,omitempty" tf:"node_locations,omitempty"` + + // Node pool configs that apply to auto-provisioned node pools in + // autopilot clusters and + // node auto-provisioning-enabled clusters. Structure is documented below. + NodePoolAutoConfig *NodePoolAutoConfigInitParameters `json:"nodePoolAutoConfig,omitempty" tf:"node_pool_auto_config,omitempty"` + + // Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object. Structure is documented below. + NodePoolDefaults *NodePoolDefaultsInitParameters `json:"nodePoolDefaults,omitempty" tf:"node_pool_defaults,omitempty"` + + // The Kubernetes version on the nodes. Must either be unset + // or set to the same value as min_master_version on create. Defaults to the default + // version set by GKE which is not necessarily the latest version. This only affects + // nodes in the default node pool. + // To update nodes in other node pools, use the version attribute on the node pool. + NodeVersion *string `json:"nodeVersion,omitempty" tf:"node_version,omitempty"` + + // Configuration for the cluster upgrade notifications feature. Structure is documented below. + NotificationConfig *NotificationConfigInitParameters `json:"notificationConfig,omitempty" tf:"notification_config,omitempty"` + + // Configuration for the + // PodSecurityPolicy feature. + // Structure is documented below. + PodSecurityPolicyConfig *PodSecurityPolicyConfigInitParameters `json:"podSecurityPolicyConfig,omitempty" tf:"pod_security_policy_config,omitempty"` + + // Configuration for private clusters, + // clusters with private nodes. Structure is documented below. + PrivateClusterConfig *PrivateClusterConfigInitParameters `json:"privateClusterConfig,omitempty" tf:"private_cluster_config,omitempty"` + + // The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4). + PrivateIPv6GoogleAccess *string `json:"privateIpv6GoogleAccess,omitempty" tf:"private_ipv6_google_access,omitempty"` + + // The ID of the project in which the resource belongs. If it + // is not provided, the provider project is used. + Project *string `json:"project,omitempty" tf:"project,omitempty"` + + // Enable/Disable Protect API features for the cluster. Structure is documented below. + ProtectConfig *ProtectConfigInitParameters `json:"protectConfig,omitempty" tf:"protect_config,omitempty"` + + // Configuration options for the Release channel + // feature, which provide more control over automatic upgrades of your GKE clusters. + // When updating this field, GKE imposes specific version requirements. See + // Selecting a new release channel + // for more details; the google_container_engine_versions datasource can provide + // the default version for a channel. Instead, use the "UNSPECIFIED" + // channel. Structure is documented below. + ReleaseChannel *ReleaseChannelInitParameters `json:"releaseChannel,omitempty" tf:"release_channel,omitempty"` + + // If true, deletes the default node + // pool upon cluster creation. If you're using google_container_node_pool + // resources with no default node pool, this should be set to true, alongside + // setting initial_node_count to at least 1. + RemoveDefaultNodePool *bool `json:"removeDefaultNodePool,omitempty" tf:"remove_default_node_pool,omitempty"` + + // The GCE resource labels (a map of key/value pairs) to be applied to the cluster. + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // Configuration for the + // ResourceUsageExportConfig feature. + // Structure is documented below. + ResourceUsageExportConfig *ResourceUsageExportConfigInitParameters `json:"resourceUsageExportConfig,omitempty" tf:"resource_usage_export_config,omitempty"` + + // Configuration for the + // SecretManagerConfig feature. + // Structure is documented below. + SecretManagerConfig *SecretManagerConfigInitParameters `json:"secretManagerConfig,omitempty" tf:"secret_manager_config,omitempty"` + + // Enable/Disable Security Posture API features for the cluster. Structure is documented below. + SecurityPostureConfig *SecurityPostureConfigInitParameters `json:"securityPostureConfig,omitempty" tf:"security_posture_config,omitempty"` + + // Structure is documented below. + ServiceExternalIpsConfig *ServiceExternalIpsConfigInitParameters `json:"serviceExternalIpsConfig,omitempty" tf:"service_external_ips_config,omitempty"` + + // The name or self_link of the Google Compute Engine + // subnetwork in which the cluster's instances are launched. + Subnetwork *string `json:"subnetwork,omitempty" tf:"subnetwork,omitempty"` + + TpuConfig *TpuConfigInitParameters `json:"tpuConfig,omitempty" tf:"tpu_config,omitempty"` + + // Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + // Structure is documented below. + VerticalPodAutoscaling *VerticalPodAutoscalingInitParameters `json:"verticalPodAutoscaling,omitempty" tf:"vertical_pod_autoscaling,omitempty"` + + // Configuration for direct-path (via ALTS) with workload identity.. Structure is documented below. + WorkloadAltsConfig *WorkloadAltsConfigInitParameters `json:"workloadAltsConfig,omitempty" tf:"workload_alts_config,omitempty"` + + // Workload Identity allows Kubernetes service accounts to act as a user-managed + // Google IAM Service Account. + // Structure is documented below. + WorkloadIdentityConfig *WorkloadIdentityConfigInitParameters `json:"workloadIdentityConfig,omitempty" tf:"workload_identity_config,omitempty"` +} + +type ClusterObservation struct { + + // The configuration for addons supported by GKE. + // Structure is documented below. + AddonsConfig *AddonsConfigObservation `json:"addonsConfig,omitempty" tf:"addons_config,omitempty"` + + // Enable NET_ADMIN for the cluster. Defaults to + // false. This field should only be enabled for Autopilot clusters (enable_autopilot + // set to true). + AllowNetAdmin *bool `json:"allowNetAdmin,omitempty" tf:"allow_net_admin,omitempty"` + + // Configuration for the + // Google Groups for GKE feature. + // Structure is documented below. + AuthenticatorGroupsConfig *AuthenticatorGroupsConfigObservation `json:"authenticatorGroupsConfig,omitempty" tf:"authenticator_groups_config,omitempty"` + + // Configuration options for the Binary + // Authorization feature. Structure is documented below. + BinaryAuthorization *BinaryAuthorizationObservation `json:"binaryAuthorization,omitempty" tf:"binary_authorization,omitempty"` + + // Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + // automatically adjust the size of the cluster and create/delete node pools based + // on the current needs of the cluster's workload. See the + // guide to using Node Auto-Provisioning + // for more details. Structure is documented below. + ClusterAutoscaling *ClusterAutoscalingObservation `json:"clusterAutoscaling,omitempty" tf:"cluster_autoscaling,omitempty"` + + // The IP address range of the Kubernetes pods + // in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + // automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + // default a new cluster to routes-based, where ip_allocation_policy is not defined. + ClusterIPv4Cidr *string `json:"clusterIpv4Cidr,omitempty" tf:"cluster_ipv4_cidr,omitempty"` + + // Configuration for + // ClusterTelemetry feature, + // Structure is documented below. + ClusterTelemetry *ClusterTelemetryObservation `json:"clusterTelemetry,omitempty" tf:"cluster_telemetry,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below documented below. + ConfidentialNodes *ConfidentialNodesObservation `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Configuration for the + // Cost Allocation feature. + // Structure is documented below. + CostManagementConfig *CostManagementConfigObservation `json:"costManagementConfig,omitempty" tf:"cost_management_config,omitempty"` + + // Configuration for Using Cloud DNS for GKE. Structure is documented below. + DNSConfig *DNSConfigObservation `json:"dnsConfig,omitempty" tf:"dns_config,omitempty"` + + // Structure is documented below. + DatabaseEncryption *DatabaseEncryptionObservation `json:"databaseEncryption,omitempty" tf:"database_encryption,omitempty"` + + // The desired datapath provider for this cluster. This is set to LEGACY_DATAPATH by default, which uses the IPTables-based kube-proxy implementation. Set to ADVANCED_DATAPATH to enable Dataplane v2. + DatapathProvider *string `json:"datapathProvider,omitempty" tf:"datapath_provider,omitempty"` + + // The default maximum number of pods + // per node in this cluster. This doesn't work on "routes-based" clusters, clusters + // that don't have IP Aliasing enabled. See the official documentation + // for more information. + DefaultMaxPodsPerNode *float64 `json:"defaultMaxPodsPerNode,omitempty" tf:"default_max_pods_per_node,omitempty"` + + // GKE SNAT DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster, API doc. Structure is documented below + DefaultSnatStatus *DefaultSnatStatusObservation `json:"defaultSnatStatus,omitempty" tf:"default_snat_status,omitempty"` + + DeletionProtection *bool `json:"deletionProtection,omitempty" tf:"deletion_protection,omitempty"` + + // Description of the cluster. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // +mapType=granular + EffectiveLabels map[string]*string `json:"effectiveLabels,omitempty" tf:"effective_labels,omitempty"` + + // Enable Autopilot for this cluster. Defaults to false. + // Note that when this option is enabled, certain features of Standard GKE are not available. + // See the official documentation + // for available features. + EnableAutopilot *bool `json:"enableAutopilot,omitempty" tf:"enable_autopilot,omitempty"` + + // Whether CiliumClusterWideNetworkPolicy is enabled on this cluster. Defaults to false. + EnableCiliumClusterwideNetworkPolicy *bool `json:"enableCiliumClusterwideNetworkPolicy,omitempty" tf:"enable_cilium_clusterwide_network_policy,omitempty"` + + // Whether FQDN Network Policy is enabled on this cluster. Users who enable this feature for existing Standard clusters must restart the GKE Dataplane V2 anetd DaemonSet after enabling it. See the Enable FQDN Network Policy in an existing cluster for more information. + EnableFqdnNetworkPolicy *bool `json:"enableFqdnNetworkPolicy,omitempty" tf:"enable_fqdn_network_policy,omitempty"` + + // Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network. + EnableIntranodeVisibility *bool `json:"enableIntranodeVisibility,omitempty" tf:"enable_intranode_visibility,omitempty"` + + // Configuration for Kubernetes Beta APIs. + // Structure is documented below. + EnableK8SBetaApis *EnableK8SBetaApisObservation `json:"enableK8SBetaApis,omitempty" tf:"enable_k8s_beta_apis,omitempty"` + + // Whether to enable Kubernetes Alpha features for + // this cluster. Note that when this option is enabled, the cluster cannot be upgraded + // and will be automatically deleted after 30 days. + EnableKubernetesAlpha *bool `json:"enableKubernetesAlpha,omitempty" tf:"enable_kubernetes_alpha,omitempty"` + + // Whether L4ILB Subsetting is enabled for this cluster. + EnableL4IlbSubsetting *bool `json:"enableL4IlbSubsetting,omitempty" tf:"enable_l4_ilb_subsetting,omitempty"` + + // Whether the ABAC authorizer is enabled for this cluster. + // When enabled, identities in the system, including service accounts, nodes, and controllers, + // will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + // Defaults to false + EnableLegacyAbac *bool `json:"enableLegacyAbac,omitempty" tf:"enable_legacy_abac,omitempty"` + + // Whether multi-networking is enabled for this cluster. + EnableMultiNetworking *bool `json:"enableMultiNetworking,omitempty" tf:"enable_multi_networking,omitempty"` + + // Enable Shielded Nodes features on all nodes in this cluster. Defaults to true. + EnableShieldedNodes *bool `json:"enableShieldedNodes,omitempty" tf:"enable_shielded_nodes,omitempty"` + + // Whether to enable Cloud TPU resources in this cluster. + // See the official documentation. + EnableTpu *bool `json:"enableTpu,omitempty" tf:"enable_tpu,omitempty"` + + // The IP address of this cluster's Kubernetes master. + Endpoint *string `json:"endpoint,omitempty" tf:"endpoint,omitempty"` + + // Fleet configuration for the cluster. Structure is documented below. + Fleet *FleetObservation `json:"fleet,omitempty" tf:"fleet,omitempty"` + + // Configuration for GKE Gateway API controller. Structure is documented below. + GatewayAPIConfig *GatewayAPIConfigObservation `json:"gatewayApiConfig,omitempty" tf:"gateway_api_config,omitempty"` + + // an identifier for the resource with format projects/{{project}}/locations/{{zone}}/clusters/{{name}} + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // Configuration of cluster IP allocation for + // VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + // Structure is documented below. + IPAllocationPolicy *IPAllocationPolicyObservation `json:"ipAllocationPolicy,omitempty" tf:"ip_allocation_policy,omitempty"` + + // . Structure is documented below. + IdentityServiceConfig *IdentityServiceConfigObservation `json:"identityServiceConfig,omitempty" tf:"identity_service_config,omitempty"` + + // The number of nodes to create in this + // cluster's default node pool. In regional or multi-zonal clusters, this is the + // number of nodes per zone. Must be set if node_pool is not set. If you're using + // google_container_node_pool objects with no default node pool, you'll need to + // set this to a value of at least 1, alongside setting + // remove_default_node_pool to true. + InitialNodeCount *float64 `json:"initialNodeCount,omitempty" tf:"initial_node_count,omitempty"` + + // The fingerprint of the set of labels for this cluster. + LabelFingerprint *string `json:"labelFingerprint,omitempty" tf:"label_fingerprint,omitempty"` + + // The location (region or zone) in which the cluster + // master will be created, as well as the default node location. If you specify a + // zone (such as us-central1-a), the cluster will be a zonal cluster with a + // single cluster master. If you specify a region (such as us-west1), the + // cluster will be a regional cluster with multiple masters spread across zones in + // the region, and with default node locations in those zones as well + Location *string `json:"location,omitempty" tf:"location,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + LoggingConfig *LoggingConfigObservation `json:"loggingConfig,omitempty" tf:"logging_config,omitempty"` + + // The logging service that the cluster should + // write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + // logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + LoggingService *string `json:"loggingService,omitempty" tf:"logging_service,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + MaintenancePolicy *MaintenancePolicyObservation `json:"maintenancePolicy,omitempty" tf:"maintenance_policy,omitempty"` + + // The authentication information for accessing the + // Kubernetes master. Some values in this block are only returned by the API if + // your service account has permission to get credentials for your GKE cluster. If + // you see an unexpected diff unsetting your client cert, ensure you have the + // container.clusters.getCredentials permission. + // Structure is documented below. + MasterAuth *MasterAuthObservation `json:"masterAuth,omitempty" tf:"master_auth,omitempty"` + + // The desired + // configuration options for master authorized networks. Omit the + // nested cidr_blocks attribute to disallow external access (except + // the cluster node IPs, which GKE automatically whitelists). + // Structure is documented below. + MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfigObservation `json:"masterAuthorizedNetworksConfig,omitempty" tf:"master_authorized_networks_config,omitempty"` + + // The current version of the master in the cluster. This may + // be different than the min_master_version set in the config if the master + // has been updated by GKE. + MasterVersion *string `json:"masterVersion,omitempty" tf:"master_version,omitempty"` + + // Structure is documented below. + MeshCertificates *MeshCertificatesObservation `json:"meshCertificates,omitempty" tf:"mesh_certificates,omitempty"` + + // The minimum version of the master. GKE + // will auto-update the master to new versions, so this does not guarantee the + // current master version--use the read-only master_version field to obtain that. + // If unset, the cluster's version will be set by GKE to the version of the most recent + // official release (which is not necessarily the latest version). If you intend to specify versions manually, + // the docs + // describe the various acceptable formats for this field. + MinMasterVersion *string `json:"minMasterVersion,omitempty" tf:"min_master_version,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + MonitoringConfig *MonitoringConfigObservation `json:"monitoringConfig,omitempty" tf:"monitoring_config,omitempty"` + + // The monitoring service that the cluster + // should write metrics to. + // Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + // VM metrics will be collected by Google Compute Engine regardless of this setting + // Available options include + // monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + // Defaults to monitoring.googleapis.com/kubernetes + MonitoringService *string `json:"monitoringService,omitempty" tf:"monitoring_service,omitempty"` + + // The name or self_link of the Google Compute Engine + // network to which the cluster is connected. For Shared VPC, set this to the self link of the + // shared network. + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // Configuration options for the + // NetworkPolicy + // feature. Structure is documented below. + NetworkPolicy *NetworkPolicyObservation `json:"networkPolicy,omitempty" tf:"network_policy,omitempty"` + + // Determines whether alias IPs or routes will be used for pod IPs in the cluster. + // Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + NetworkingMode *string `json:"networkingMode,omitempty" tf:"networking_mode,omitempty"` + + // Parameters used in creating the default node pool. Structure is documented below. + NodeConfig *NodeConfigObservation `json:"nodeConfig,omitempty" tf:"node_config,omitempty"` + + // The list of zones in which the cluster's nodes + // are located. Nodes must be in the region of their regional cluster or in the + // same region as their cluster's zone for zonal clusters. If this is specified for + // a zonal cluster, omit the cluster's zone. + // +listType=set + NodeLocations []*string `json:"nodeLocations,omitempty" tf:"node_locations,omitempty"` + + // List of node pools associated with this cluster. + // See google_container_node_pool for schema. + // Warning: node pools defined inside a cluster can't be changed (or added/removed) after + // cluster creation without deleting and recreating the entire cluster. Unless you absolutely need the ability + // to say "these are the only node pools associated with this cluster", use the + // google_container_node_pool resource instead of this property. + NodePool []NodePoolObservation `json:"nodePool,omitempty" tf:"node_pool,omitempty"` + + // Node pool configs that apply to auto-provisioned node pools in + // autopilot clusters and + // node auto-provisioning-enabled clusters. Structure is documented below. + NodePoolAutoConfig *NodePoolAutoConfigObservation `json:"nodePoolAutoConfig,omitempty" tf:"node_pool_auto_config,omitempty"` + + // Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object. Structure is documented below. + NodePoolDefaults *NodePoolDefaultsObservation `json:"nodePoolDefaults,omitempty" tf:"node_pool_defaults,omitempty"` + + // The Kubernetes version on the nodes. Must either be unset + // or set to the same value as min_master_version on create. Defaults to the default + // version set by GKE which is not necessarily the latest version. This only affects + // nodes in the default node pool. + // To update nodes in other node pools, use the version attribute on the node pool. + NodeVersion *string `json:"nodeVersion,omitempty" tf:"node_version,omitempty"` + + // Configuration for the cluster upgrade notifications feature. Structure is documented below. + NotificationConfig *NotificationConfigObservation `json:"notificationConfig,omitempty" tf:"notification_config,omitempty"` + + Operation *string `json:"operation,omitempty" tf:"operation,omitempty"` + + // Configuration for the + // PodSecurityPolicy feature. + // Structure is documented below. + PodSecurityPolicyConfig *PodSecurityPolicyConfigObservation `json:"podSecurityPolicyConfig,omitempty" tf:"pod_security_policy_config,omitempty"` + + // Configuration for private clusters, + // clusters with private nodes. Structure is documented below. + PrivateClusterConfig *PrivateClusterConfigObservation `json:"privateClusterConfig,omitempty" tf:"private_cluster_config,omitempty"` + + // The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4). + PrivateIPv6GoogleAccess *string `json:"privateIpv6GoogleAccess,omitempty" tf:"private_ipv6_google_access,omitempty"` + + // The ID of the project in which the resource belongs. If it + // is not provided, the provider project is used. + Project *string `json:"project,omitempty" tf:"project,omitempty"` + + // Enable/Disable Protect API features for the cluster. Structure is documented below. + ProtectConfig *ProtectConfigObservation `json:"protectConfig,omitempty" tf:"protect_config,omitempty"` + + // Configuration options for the Release channel + // feature, which provide more control over automatic upgrades of your GKE clusters. + // When updating this field, GKE imposes specific version requirements. See + // Selecting a new release channel + // for more details; the google_container_engine_versions datasource can provide + // the default version for a channel. Instead, use the "UNSPECIFIED" + // channel. Structure is documented below. + ReleaseChannel *ReleaseChannelObservation `json:"releaseChannel,omitempty" tf:"release_channel,omitempty"` + + // If true, deletes the default node + // pool upon cluster creation. If you're using google_container_node_pool + // resources with no default node pool, this should be set to true, alongside + // setting initial_node_count to at least 1. + RemoveDefaultNodePool *bool `json:"removeDefaultNodePool,omitempty" tf:"remove_default_node_pool,omitempty"` + + // The GCE resource labels (a map of key/value pairs) to be applied to the cluster. + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // Configuration for the + // ResourceUsageExportConfig feature. + // Structure is documented below. + ResourceUsageExportConfig *ResourceUsageExportConfigObservation `json:"resourceUsageExportConfig,omitempty" tf:"resource_usage_export_config,omitempty"` + + // Configuration for the + // SecretManagerConfig feature. + // Structure is documented below. + SecretManagerConfig *SecretManagerConfigObservation `json:"secretManagerConfig,omitempty" tf:"secret_manager_config,omitempty"` + + // Enable/Disable Security Posture API features for the cluster. Structure is documented below. + SecurityPostureConfig *SecurityPostureConfigObservation `json:"securityPostureConfig,omitempty" tf:"security_posture_config,omitempty"` + + // The server-defined URL for the resource. + SelfLink *string `json:"selfLink,omitempty" tf:"self_link,omitempty"` + + // Structure is documented below. + ServiceExternalIpsConfig *ServiceExternalIpsConfigObservation `json:"serviceExternalIpsConfig,omitempty" tf:"service_external_ips_config,omitempty"` + + // The IP address range of the Kubernetes services in this + // cluster, in CIDR + // notation (e.g. 1.2.3.4/29). Service addresses are typically put in the last + // /16 from the container CIDR. + ServicesIPv4Cidr *string `json:"servicesIpv4Cidr,omitempty" tf:"services_ipv4_cidr,omitempty"` + + // The name or self_link of the Google Compute Engine + // subnetwork in which the cluster's instances are launched. + Subnetwork *string `json:"subnetwork,omitempty" tf:"subnetwork,omitempty"` + + // The combination of labels configured directly on the resource and default labels configured on the provider. + // +mapType=granular + TerraformLabels map[string]*string `json:"terraformLabels,omitempty" tf:"terraform_labels,omitempty"` + + TpuConfig *TpuConfigObservation `json:"tpuConfig,omitempty" tf:"tpu_config,omitempty"` + + // The IP address range of the Cloud TPUs in this cluster, in + // CIDR + // notation (e.g. 1.2.3.4/29). + TpuIPv4CidrBlock *string `json:"tpuIpv4CidrBlock,omitempty" tf:"tpu_ipv4_cidr_block,omitempty"` + + // Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + // Structure is documented below. + VerticalPodAutoscaling *VerticalPodAutoscalingObservation `json:"verticalPodAutoscaling,omitempty" tf:"vertical_pod_autoscaling,omitempty"` + + // Configuration for direct-path (via ALTS) with workload identity.. Structure is documented below. + WorkloadAltsConfig *WorkloadAltsConfigObservation `json:"workloadAltsConfig,omitempty" tf:"workload_alts_config,omitempty"` + + // Workload Identity allows Kubernetes service accounts to act as a user-managed + // Google IAM Service Account. + // Structure is documented below. + WorkloadIdentityConfig *WorkloadIdentityConfigObservation `json:"workloadIdentityConfig,omitempty" tf:"workload_identity_config,omitempty"` +} + +type ClusterParameters struct { + + // The configuration for addons supported by GKE. + // Structure is documented below. + // +kubebuilder:validation:Optional + AddonsConfig *AddonsConfigParameters `json:"addonsConfig,omitempty" tf:"addons_config,omitempty"` + + // Enable NET_ADMIN for the cluster. Defaults to + // false. This field should only be enabled for Autopilot clusters (enable_autopilot + // set to true). + // +kubebuilder:validation:Optional + AllowNetAdmin *bool `json:"allowNetAdmin,omitempty" tf:"allow_net_admin,omitempty"` + + // Configuration for the + // Google Groups for GKE feature. + // Structure is documented below. + // +kubebuilder:validation:Optional + AuthenticatorGroupsConfig *AuthenticatorGroupsConfigParameters `json:"authenticatorGroupsConfig,omitempty" tf:"authenticator_groups_config,omitempty"` + + // Configuration options for the Binary + // Authorization feature. Structure is documented below. + // +kubebuilder:validation:Optional + BinaryAuthorization *BinaryAuthorizationParameters `json:"binaryAuthorization,omitempty" tf:"binary_authorization,omitempty"` + + // Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + // automatically adjust the size of the cluster and create/delete node pools based + // on the current needs of the cluster's workload. See the + // guide to using Node Auto-Provisioning + // for more details. Structure is documented below. + // +kubebuilder:validation:Optional + ClusterAutoscaling *ClusterAutoscalingParameters `json:"clusterAutoscaling,omitempty" tf:"cluster_autoscaling,omitempty"` + + // The IP address range of the Kubernetes pods + // in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + // automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + // default a new cluster to routes-based, where ip_allocation_policy is not defined. + // +kubebuilder:validation:Optional + ClusterIPv4Cidr *string `json:"clusterIpv4Cidr,omitempty" tf:"cluster_ipv4_cidr,omitempty"` + + // Configuration for + // ClusterTelemetry feature, + // Structure is documented below. + // +kubebuilder:validation:Optional + ClusterTelemetry *ClusterTelemetryParameters `json:"clusterTelemetry,omitempty" tf:"cluster_telemetry,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below documented below. + // +kubebuilder:validation:Optional + ConfidentialNodes *ConfidentialNodesParameters `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Configuration for the + // Cost Allocation feature. + // Structure is documented below. + // +kubebuilder:validation:Optional + CostManagementConfig *CostManagementConfigParameters `json:"costManagementConfig,omitempty" tf:"cost_management_config,omitempty"` + + // Configuration for Using Cloud DNS for GKE. Structure is documented below. + // +kubebuilder:validation:Optional + DNSConfig *DNSConfigParameters `json:"dnsConfig,omitempty" tf:"dns_config,omitempty"` + + // Structure is documented below. + // +kubebuilder:validation:Optional + DatabaseEncryption *DatabaseEncryptionParameters `json:"databaseEncryption,omitempty" tf:"database_encryption,omitempty"` + + // The desired datapath provider for this cluster. This is set to LEGACY_DATAPATH by default, which uses the IPTables-based kube-proxy implementation. Set to ADVANCED_DATAPATH to enable Dataplane v2. + // +kubebuilder:validation:Optional + DatapathProvider *string `json:"datapathProvider,omitempty" tf:"datapath_provider,omitempty"` + + // The default maximum number of pods + // per node in this cluster. This doesn't work on "routes-based" clusters, clusters + // that don't have IP Aliasing enabled. See the official documentation + // for more information. + // +kubebuilder:validation:Optional + DefaultMaxPodsPerNode *float64 `json:"defaultMaxPodsPerNode,omitempty" tf:"default_max_pods_per_node,omitempty"` + + // GKE SNAT DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster, API doc. Structure is documented below + // +kubebuilder:validation:Optional + DefaultSnatStatus *DefaultSnatStatusParameters `json:"defaultSnatStatus,omitempty" tf:"default_snat_status,omitempty"` + + // +kubebuilder:validation:Optional + DeletionProtection *bool `json:"deletionProtection,omitempty" tf:"deletion_protection,omitempty"` + + // Description of the cluster. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Enable Autopilot for this cluster. Defaults to false. + // Note that when this option is enabled, certain features of Standard GKE are not available. + // See the official documentation + // for available features. + // +kubebuilder:validation:Optional + EnableAutopilot *bool `json:"enableAutopilot,omitempty" tf:"enable_autopilot,omitempty"` + + // Whether CiliumClusterWideNetworkPolicy is enabled on this cluster. Defaults to false. + // +kubebuilder:validation:Optional + EnableCiliumClusterwideNetworkPolicy *bool `json:"enableCiliumClusterwideNetworkPolicy,omitempty" tf:"enable_cilium_clusterwide_network_policy,omitempty"` + + // Whether FQDN Network Policy is enabled on this cluster. Users who enable this feature for existing Standard clusters must restart the GKE Dataplane V2 anetd DaemonSet after enabling it. See the Enable FQDN Network Policy in an existing cluster for more information. + // +kubebuilder:validation:Optional + EnableFqdnNetworkPolicy *bool `json:"enableFqdnNetworkPolicy,omitempty" tf:"enable_fqdn_network_policy,omitempty"` + + // Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network. + // +kubebuilder:validation:Optional + EnableIntranodeVisibility *bool `json:"enableIntranodeVisibility,omitempty" tf:"enable_intranode_visibility,omitempty"` + + // Configuration for Kubernetes Beta APIs. + // Structure is documented below. + // +kubebuilder:validation:Optional + EnableK8SBetaApis *EnableK8SBetaApisParameters `json:"enableK8SBetaApis,omitempty" tf:"enable_k8s_beta_apis,omitempty"` + + // Whether to enable Kubernetes Alpha features for + // this cluster. Note that when this option is enabled, the cluster cannot be upgraded + // and will be automatically deleted after 30 days. + // +kubebuilder:validation:Optional + EnableKubernetesAlpha *bool `json:"enableKubernetesAlpha,omitempty" tf:"enable_kubernetes_alpha,omitempty"` + + // Whether L4ILB Subsetting is enabled for this cluster. + // +kubebuilder:validation:Optional + EnableL4IlbSubsetting *bool `json:"enableL4IlbSubsetting,omitempty" tf:"enable_l4_ilb_subsetting,omitempty"` + + // Whether the ABAC authorizer is enabled for this cluster. + // When enabled, identities in the system, including service accounts, nodes, and controllers, + // will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + // Defaults to false + // +kubebuilder:validation:Optional + EnableLegacyAbac *bool `json:"enableLegacyAbac,omitempty" tf:"enable_legacy_abac,omitempty"` + + // Whether multi-networking is enabled for this cluster. + // +kubebuilder:validation:Optional + EnableMultiNetworking *bool `json:"enableMultiNetworking,omitempty" tf:"enable_multi_networking,omitempty"` + + // Enable Shielded Nodes features on all nodes in this cluster. Defaults to true. + // +kubebuilder:validation:Optional + EnableShieldedNodes *bool `json:"enableShieldedNodes,omitempty" tf:"enable_shielded_nodes,omitempty"` + + // Whether to enable Cloud TPU resources in this cluster. + // See the official documentation. + // +kubebuilder:validation:Optional + EnableTpu *bool `json:"enableTpu,omitempty" tf:"enable_tpu,omitempty"` + + // Fleet configuration for the cluster. Structure is documented below. + // +kubebuilder:validation:Optional + Fleet *FleetParameters `json:"fleet,omitempty" tf:"fleet,omitempty"` + + // Configuration for GKE Gateway API controller. Structure is documented below. + // +kubebuilder:validation:Optional + GatewayAPIConfig *GatewayAPIConfigParameters `json:"gatewayApiConfig,omitempty" tf:"gateway_api_config,omitempty"` + + // Configuration of cluster IP allocation for + // VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + // Structure is documented below. + // +kubebuilder:validation:Optional + IPAllocationPolicy *IPAllocationPolicyParameters `json:"ipAllocationPolicy,omitempty" tf:"ip_allocation_policy,omitempty"` + + // . Structure is documented below. + // +kubebuilder:validation:Optional + IdentityServiceConfig *IdentityServiceConfigParameters `json:"identityServiceConfig,omitempty" tf:"identity_service_config,omitempty"` + + // The number of nodes to create in this + // cluster's default node pool. In regional or multi-zonal clusters, this is the + // number of nodes per zone. Must be set if node_pool is not set. If you're using + // google_container_node_pool objects with no default node pool, you'll need to + // set this to a value of at least 1, alongside setting + // remove_default_node_pool to true. + // +kubebuilder:validation:Optional + InitialNodeCount *float64 `json:"initialNodeCount,omitempty" tf:"initial_node_count,omitempty"` + + // The location (region or zone) in which the cluster + // master will be created, as well as the default node location. If you specify a + // zone (such as us-central1-a), the cluster will be a zonal cluster with a + // single cluster master. If you specify a region (such as us-west1), the + // cluster will be a regional cluster with multiple masters spread across zones in + // the region, and with default node locations in those zones as well + // +kubebuilder:validation:Required + Location *string `json:"location" tf:"location,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + // +kubebuilder:validation:Optional + LoggingConfig *LoggingConfigParameters `json:"loggingConfig,omitempty" tf:"logging_config,omitempty"` + + // The logging service that the cluster should + // write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + // logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + // +kubebuilder:validation:Optional + LoggingService *string `json:"loggingService,omitempty" tf:"logging_service,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + // +kubebuilder:validation:Optional + MaintenancePolicy *MaintenancePolicyParameters `json:"maintenancePolicy,omitempty" tf:"maintenance_policy,omitempty"` + + // The authentication information for accessing the + // Kubernetes master. Some values in this block are only returned by the API if + // your service account has permission to get credentials for your GKE cluster. If + // you see an unexpected diff unsetting your client cert, ensure you have the + // container.clusters.getCredentials permission. + // Structure is documented below. + // +kubebuilder:validation:Optional + MasterAuth *MasterAuthParameters `json:"masterAuth,omitempty" tf:"master_auth,omitempty"` + + // The desired + // configuration options for master authorized networks. Omit the + // nested cidr_blocks attribute to disallow external access (except + // the cluster node IPs, which GKE automatically whitelists). + // Structure is documented below. + // +kubebuilder:validation:Optional + MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfigParameters `json:"masterAuthorizedNetworksConfig,omitempty" tf:"master_authorized_networks_config,omitempty"` + + // Structure is documented below. + // +kubebuilder:validation:Optional + MeshCertificates *MeshCertificatesParameters `json:"meshCertificates,omitempty" tf:"mesh_certificates,omitempty"` + + // The minimum version of the master. GKE + // will auto-update the master to new versions, so this does not guarantee the + // current master version--use the read-only master_version field to obtain that. + // If unset, the cluster's version will be set by GKE to the version of the most recent + // official release (which is not necessarily the latest version). If you intend to specify versions manually, + // the docs + // describe the various acceptable formats for this field. + // +kubebuilder:validation:Optional + MinMasterVersion *string `json:"minMasterVersion,omitempty" tf:"min_master_version,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + // +kubebuilder:validation:Optional + MonitoringConfig *MonitoringConfigParameters `json:"monitoringConfig,omitempty" tf:"monitoring_config,omitempty"` + + // The monitoring service that the cluster + // should write metrics to. + // Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + // VM metrics will be collected by Google Compute Engine regardless of this setting + // Available options include + // monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + // Defaults to monitoring.googleapis.com/kubernetes + // +kubebuilder:validation:Optional + MonitoringService *string `json:"monitoringService,omitempty" tf:"monitoring_service,omitempty"` + + // The name or self_link of the Google Compute Engine + // network to which the cluster is connected. For Shared VPC, set this to the self link of the + // shared network. + // +kubebuilder:validation:Optional + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // Configuration options for the + // NetworkPolicy + // feature. Structure is documented below. + // +kubebuilder:validation:Optional + NetworkPolicy *NetworkPolicyParameters `json:"networkPolicy,omitempty" tf:"network_policy,omitempty"` + + // Determines whether alias IPs or routes will be used for pod IPs in the cluster. + // Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + // +kubebuilder:validation:Optional + NetworkingMode *string `json:"networkingMode,omitempty" tf:"networking_mode,omitempty"` + + // Parameters used in creating the default node pool. Structure is documented below. + // +kubebuilder:validation:Optional + NodeConfig *NodeConfigParameters `json:"nodeConfig,omitempty" tf:"node_config,omitempty"` + + // The list of zones in which the cluster's nodes + // are located. Nodes must be in the region of their regional cluster or in the + // same region as their cluster's zone for zonal clusters. If this is specified for + // a zonal cluster, omit the cluster's zone. + // +kubebuilder:validation:Optional + // +listType=set + NodeLocations []*string `json:"nodeLocations,omitempty" tf:"node_locations,omitempty"` + + // Node pool configs that apply to auto-provisioned node pools in + // autopilot clusters and + // node auto-provisioning-enabled clusters. Structure is documented below. + // +kubebuilder:validation:Optional + NodePoolAutoConfig *NodePoolAutoConfigParameters `json:"nodePoolAutoConfig,omitempty" tf:"node_pool_auto_config,omitempty"` + + // Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object. Structure is documented below. + // +kubebuilder:validation:Optional + NodePoolDefaults *NodePoolDefaultsParameters `json:"nodePoolDefaults,omitempty" tf:"node_pool_defaults,omitempty"` + + // The Kubernetes version on the nodes. Must either be unset + // or set to the same value as min_master_version on create. Defaults to the default + // version set by GKE which is not necessarily the latest version. This only affects + // nodes in the default node pool. + // To update nodes in other node pools, use the version attribute on the node pool. + // +kubebuilder:validation:Optional + NodeVersion *string `json:"nodeVersion,omitempty" tf:"node_version,omitempty"` + + // Configuration for the cluster upgrade notifications feature. Structure is documented below. + // +kubebuilder:validation:Optional + NotificationConfig *NotificationConfigParameters `json:"notificationConfig,omitempty" tf:"notification_config,omitempty"` + + // Configuration for the + // PodSecurityPolicy feature. + // Structure is documented below. + // +kubebuilder:validation:Optional + PodSecurityPolicyConfig *PodSecurityPolicyConfigParameters `json:"podSecurityPolicyConfig,omitempty" tf:"pod_security_policy_config,omitempty"` + + // Configuration for private clusters, + // clusters with private nodes. Structure is documented below. + // +kubebuilder:validation:Optional + PrivateClusterConfig *PrivateClusterConfigParameters `json:"privateClusterConfig,omitempty" tf:"private_cluster_config,omitempty"` + + // The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4). + // +kubebuilder:validation:Optional + PrivateIPv6GoogleAccess *string `json:"privateIpv6GoogleAccess,omitempty" tf:"private_ipv6_google_access,omitempty"` + + // The ID of the project in which the resource belongs. If it + // is not provided, the provider project is used. + // +kubebuilder:validation:Optional + Project *string `json:"project,omitempty" tf:"project,omitempty"` + + // Enable/Disable Protect API features for the cluster. Structure is documented below. + // +kubebuilder:validation:Optional + ProtectConfig *ProtectConfigParameters `json:"protectConfig,omitempty" tf:"protect_config,omitempty"` + + // Configuration options for the Release channel + // feature, which provide more control over automatic upgrades of your GKE clusters. + // When updating this field, GKE imposes specific version requirements. See + // Selecting a new release channel + // for more details; the google_container_engine_versions datasource can provide + // the default version for a channel. Instead, use the "UNSPECIFIED" + // channel. Structure is documented below. + // +kubebuilder:validation:Optional + ReleaseChannel *ReleaseChannelParameters `json:"releaseChannel,omitempty" tf:"release_channel,omitempty"` + + // If true, deletes the default node + // pool upon cluster creation. If you're using google_container_node_pool + // resources with no default node pool, this should be set to true, alongside + // setting initial_node_count to at least 1. + // +kubebuilder:validation:Optional + RemoveDefaultNodePool *bool `json:"removeDefaultNodePool,omitempty" tf:"remove_default_node_pool,omitempty"` + + // The GCE resource labels (a map of key/value pairs) to be applied to the cluster. + // +kubebuilder:validation:Optional + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // Configuration for the + // ResourceUsageExportConfig feature. + // Structure is documented below. + // +kubebuilder:validation:Optional + ResourceUsageExportConfig *ResourceUsageExportConfigParameters `json:"resourceUsageExportConfig,omitempty" tf:"resource_usage_export_config,omitempty"` + + // Configuration for the + // SecretManagerConfig feature. + // Structure is documented below. + // +kubebuilder:validation:Optional + SecretManagerConfig *SecretManagerConfigParameters `json:"secretManagerConfig,omitempty" tf:"secret_manager_config,omitempty"` + + // Enable/Disable Security Posture API features for the cluster. Structure is documented below. + // +kubebuilder:validation:Optional + SecurityPostureConfig *SecurityPostureConfigParameters `json:"securityPostureConfig,omitempty" tf:"security_posture_config,omitempty"` + + // Structure is documented below. + // +kubebuilder:validation:Optional + ServiceExternalIpsConfig *ServiceExternalIpsConfigParameters `json:"serviceExternalIpsConfig,omitempty" tf:"service_external_ips_config,omitempty"` + + // The name or self_link of the Google Compute Engine + // subnetwork in which the cluster's instances are launched. + // +kubebuilder:validation:Optional + Subnetwork *string `json:"subnetwork,omitempty" tf:"subnetwork,omitempty"` + + // +kubebuilder:validation:Optional + TpuConfig *TpuConfigParameters `json:"tpuConfig,omitempty" tf:"tpu_config,omitempty"` + + // Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + // Structure is documented below. + // +kubebuilder:validation:Optional + VerticalPodAutoscaling *VerticalPodAutoscalingParameters `json:"verticalPodAutoscaling,omitempty" tf:"vertical_pod_autoscaling,omitempty"` + + // Configuration for direct-path (via ALTS) with workload identity.. Structure is documented below. + // +kubebuilder:validation:Optional + WorkloadAltsConfig *WorkloadAltsConfigParameters `json:"workloadAltsConfig,omitempty" tf:"workload_alts_config,omitempty"` + + // Workload Identity allows Kubernetes service accounts to act as a user-managed + // Google IAM Service Account. + // Structure is documented below. + // +kubebuilder:validation:Optional + WorkloadIdentityConfig *WorkloadIdentityConfigParameters `json:"workloadIdentityConfig,omitempty" tf:"workload_identity_config,omitempty"` +} + +type ClusterTelemetryInitParameters struct { + + // Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + // SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ClusterTelemetryObservation struct { + + // Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + // SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ClusterTelemetryParameters struct { + + // Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + // SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +type ConfidentialNodesInitParameters struct { + + // Enable Confidential GKE Nodes for this node pool, to + // enforce encryption of data in-use. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ConfidentialNodesObservation struct { + + // Enable Confidential GKE Nodes for this node pool, to + // enforce encryption of data in-use. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ConfidentialNodesParameters struct { + + // Enable Confidential GKE Nodes for this node pool, to + // enforce encryption of data in-use. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type ConfigConnectorConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ConfigConnectorConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ConfigConnectorConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type ContainerdConfigInitParameters struct { + + // Configuration for private container registries. There are two fields in this config: + PrivateRegistryAccessConfig *PrivateRegistryAccessConfigInitParameters `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type ContainerdConfigObservation struct { + + // Configuration for private container registries. There are two fields in this config: + PrivateRegistryAccessConfig *PrivateRegistryAccessConfigObservation `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type ContainerdConfigParameters struct { + + // Configuration for private container registries. There are two fields in this config: + // +kubebuilder:validation:Optional + PrivateRegistryAccessConfig *PrivateRegistryAccessConfigParameters `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters struct { + Fqdns []*string `json:"fqdns,omitempty" tf:"fqdns,omitempty"` + + GCPSecretManagerCertificateConfig *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters `json:"gcpSecretManagerCertificateConfig,omitempty" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation struct { + Fqdns []*string `json:"fqdns,omitempty" tf:"fqdns,omitempty"` + + GCPSecretManagerCertificateConfig *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation `json:"gcpSecretManagerCertificateConfig,omitempty" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters struct { + + // +kubebuilder:validation:Optional + Fqdns []*string `json:"fqdns" tf:"fqdns,omitempty"` + + // +kubebuilder:validation:Optional + GCPSecretManagerCertificateConfig *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters `json:"gcpSecretManagerCertificateConfig" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type ContainerdConfigPrivateRegistryAccessConfigInitParameters struct { +} + +type ContainerdConfigPrivateRegistryAccessConfigObservation struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + CertificateAuthorityDomainConfig []PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ContainerdConfigPrivateRegistryAccessConfigParameters struct { +} + +type CostManagementConfigInitParameters struct { + + // Whether to enable the cost allocation feature. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type CostManagementConfigObservation struct { + + // Whether to enable the cost allocation feature. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type CostManagementConfigParameters struct { + + // Whether to enable the cost allocation feature. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type DNSCacheConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type DNSCacheConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type DNSCacheConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type DNSConfigInitParameters struct { + + // This will enable Cloud DNS additive VPC scope. Must provide a domain name that is unique within the VPC. For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope = "CLUSTER_SCOPE" must both be set as well. + AdditiveVPCScopeDNSDomain *string `json:"additiveVpcScopeDnsDomain,omitempty" tf:"additive_vpc_scope_dns_domain,omitempty"` + + // Which in-cluster DNS provider should be used. PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + ClusterDNS *string `json:"clusterDns,omitempty" tf:"cluster_dns,omitempty"` + + // The suffix used for all cluster service records. + ClusterDNSDomain *string `json:"clusterDnsDomain,omitempty" tf:"cluster_dns_domain,omitempty"` + + // The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED (default) or CLUSTER_SCOPE or VPC_SCOPE. + ClusterDNSScope *string `json:"clusterDnsScope,omitempty" tf:"cluster_dns_scope,omitempty"` +} + +type DNSConfigObservation struct { + + // This will enable Cloud DNS additive VPC scope. Must provide a domain name that is unique within the VPC. For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope = "CLUSTER_SCOPE" must both be set as well. + AdditiveVPCScopeDNSDomain *string `json:"additiveVpcScopeDnsDomain,omitempty" tf:"additive_vpc_scope_dns_domain,omitempty"` + + // Which in-cluster DNS provider should be used. PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + ClusterDNS *string `json:"clusterDns,omitempty" tf:"cluster_dns,omitempty"` + + // The suffix used for all cluster service records. + ClusterDNSDomain *string `json:"clusterDnsDomain,omitempty" tf:"cluster_dns_domain,omitempty"` + + // The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED (default) or CLUSTER_SCOPE or VPC_SCOPE. + ClusterDNSScope *string `json:"clusterDnsScope,omitempty" tf:"cluster_dns_scope,omitempty"` +} + +type DNSConfigParameters struct { + + // This will enable Cloud DNS additive VPC scope. Must provide a domain name that is unique within the VPC. For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope = "CLUSTER_SCOPE" must both be set as well. + // +kubebuilder:validation:Optional + AdditiveVPCScopeDNSDomain *string `json:"additiveVpcScopeDnsDomain,omitempty" tf:"additive_vpc_scope_dns_domain,omitempty"` + + // Which in-cluster DNS provider should be used. PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + // +kubebuilder:validation:Optional + ClusterDNS *string `json:"clusterDns,omitempty" tf:"cluster_dns,omitempty"` + + // The suffix used for all cluster service records. + // +kubebuilder:validation:Optional + ClusterDNSDomain *string `json:"clusterDnsDomain,omitempty" tf:"cluster_dns_domain,omitempty"` + + // The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED (default) or CLUSTER_SCOPE or VPC_SCOPE. + // +kubebuilder:validation:Optional + ClusterDNSScope *string `json:"clusterDnsScope,omitempty" tf:"cluster_dns_scope,omitempty"` +} + +type DailyMaintenanceWindowInitParameters struct { + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type DailyMaintenanceWindowObservation struct { + + // Duration of the time window, automatically chosen to be + // smallest possible in the given scenario. + // Duration will be in RFC3339 format "PTnHnMnS". + Duration *string `json:"duration,omitempty" tf:"duration,omitempty"` + + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type DailyMaintenanceWindowParameters struct { + + // +kubebuilder:validation:Optional + StartTime *string `json:"startTime" tf:"start_time,omitempty"` +} + +type DatabaseEncryptionInitParameters struct { + + // the key to use to encrypt/decrypt secrets. See the DatabaseEncryption definition for more information. + KeyName *string `json:"keyName,omitempty" tf:"key_name,omitempty"` + + // ENCRYPTED or DECRYPTED + State *string `json:"state,omitempty" tf:"state,omitempty"` +} + +type DatabaseEncryptionObservation struct { + + // the key to use to encrypt/decrypt secrets. See the DatabaseEncryption definition for more information. + KeyName *string `json:"keyName,omitempty" tf:"key_name,omitempty"` + + // ENCRYPTED or DECRYPTED + State *string `json:"state,omitempty" tf:"state,omitempty"` +} + +type DatabaseEncryptionParameters struct { + + // the key to use to encrypt/decrypt secrets. See the DatabaseEncryption definition for more information. + // +kubebuilder:validation:Optional + KeyName *string `json:"keyName,omitempty" tf:"key_name,omitempty"` + + // ENCRYPTED or DECRYPTED + // +kubebuilder:validation:Optional + State *string `json:"state" tf:"state,omitempty"` +} + +type DefaultSnatStatusInitParameters struct { + + // Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type DefaultSnatStatusObservation struct { + + // Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type DefaultSnatStatusParameters struct { + + // Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type EffectiveTaintsInitParameters struct { +} + +type EffectiveTaintsObservation struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Value for taint. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type EffectiveTaintsParameters struct { +} + +type EnableK8SBetaApisInitParameters struct { + + // Enabled Kubernetes Beta APIs. To list a Beta API resource, use the representation {group}/{version}/{resource}. The version must be a Beta version. Note that you cannot disable beta APIs that are already enabled on a cluster without recreating it. See the Configure beta APIs for more information. + // +listType=set + EnabledApis []*string `json:"enabledApis,omitempty" tf:"enabled_apis,omitempty"` +} + +type EnableK8SBetaApisObservation struct { + + // Enabled Kubernetes Beta APIs. To list a Beta API resource, use the representation {group}/{version}/{resource}. The version must be a Beta version. Note that you cannot disable beta APIs that are already enabled on a cluster without recreating it. See the Configure beta APIs for more information. + // +listType=set + EnabledApis []*string `json:"enabledApis,omitempty" tf:"enabled_apis,omitempty"` +} + +type EnableK8SBetaApisParameters struct { + + // Enabled Kubernetes Beta APIs. To list a Beta API resource, use the representation {group}/{version}/{resource}. The version must be a Beta version. Note that you cannot disable beta APIs that are already enabled on a cluster without recreating it. See the Configure beta APIs for more information. + // +kubebuilder:validation:Optional + // +listType=set + EnabledApis []*string `json:"enabledApis" tf:"enabled_apis,omitempty"` +} + +type EphemeralStorageConfigInitParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type EphemeralStorageConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type EphemeralStorageConfigParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + // +kubebuilder:validation:Optional + LocalSsdCount *float64 `json:"localSsdCount" tf:"local_ssd_count,omitempty"` +} + +type EphemeralStorageLocalSsdConfigInitParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type EphemeralStorageLocalSsdConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type EphemeralStorageLocalSsdConfigParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + // +kubebuilder:validation:Optional + LocalSsdCount *float64 `json:"localSsdCount" tf:"local_ssd_count,omitempty"` +} + +type ExclusionOptionsInitParameters struct { + + // The scope of automatic upgrades to restrict in the exclusion window. One of: NO_UPGRADES | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES + Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` +} + +type ExclusionOptionsObservation struct { + + // The scope of automatic upgrades to restrict in the exclusion window. One of: NO_UPGRADES | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES + Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` +} + +type ExclusionOptionsParameters struct { + + // The scope of automatic upgrades to restrict in the exclusion window. One of: NO_UPGRADES | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES + // +kubebuilder:validation:Optional + Scope *string `json:"scope" tf:"scope,omitempty"` +} + +type FastSocketInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type FastSocketObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type FastSocketParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type FilterInitParameters struct { + + // Can be used to filter what notifications are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering notifications for more details. + EventType []*string `json:"eventType,omitempty" tf:"event_type,omitempty"` +} + +type FilterObservation struct { + + // Can be used to filter what notifications are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering notifications for more details. + EventType []*string `json:"eventType,omitempty" tf:"event_type,omitempty"` +} + +type FilterParameters struct { + + // Can be used to filter what notifications are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering notifications for more details. + // +kubebuilder:validation:Optional + EventType []*string `json:"eventType" tf:"event_type,omitempty"` +} + +type FleetInitParameters struct { + + // The name of the Fleet host project where this cluster will be registered. + Project *string `json:"project,omitempty" tf:"project,omitempty"` +} + +type FleetObservation struct { + + // The resource name of the fleet Membership resource associated to this cluster with format //gkehub.googleapis.com/projects/{{project}}/locations/{{location}}/memberships/{{name}}. See the official doc for fleet management. + Membership *string `json:"membership,omitempty" tf:"membership,omitempty"` + + // The short name of the fleet membership, extracted from fleet.0.membership. You can use this field to configure membership_id under google_gkehub_feature_membership. + MembershipID *string `json:"membershipId,omitempty" tf:"membership_id,omitempty"` + + // The location of the fleet membership, extracted from fleet.0.membership. You can use this field to configure membership_location under google_gkehub_feature_membership. + MembershipLocation *string `json:"membershipLocation,omitempty" tf:"membership_location,omitempty"` + + PreRegistered *bool `json:"preRegistered,omitempty" tf:"pre_registered,omitempty"` + + // The name of the Fleet host project where this cluster will be registered. + Project *string `json:"project,omitempty" tf:"project,omitempty"` +} + +type FleetParameters struct { + + // The name of the Fleet host project where this cluster will be registered. + // +kubebuilder:validation:Optional + Project *string `json:"project,omitempty" tf:"project,omitempty"` +} + +type GCPFilestoreCsiDriverConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GCPFilestoreCsiDriverConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GCPFilestoreCsiDriverConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type GCPSecretManagerCertificateConfigInitParameters struct { + SecretURI *string `json:"secretUri,omitempty" tf:"secret_uri,omitempty"` +} + +type GCPSecretManagerCertificateConfigObservation struct { + SecretURI *string `json:"secretUri,omitempty" tf:"secret_uri,omitempty"` +} + +type GCPSecretManagerCertificateConfigParameters struct { + + // +kubebuilder:validation:Optional + SecretURI *string `json:"secretUri" tf:"secret_uri,omitempty"` +} + +type GatewayAPIConfigInitParameters struct { + + // Which Gateway Api channel should be used. CHANNEL_DISABLED, CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + Channel *string `json:"channel,omitempty" tf:"channel,omitempty"` +} + +type GatewayAPIConfigObservation struct { + + // Which Gateway Api channel should be used. CHANNEL_DISABLED, CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + Channel *string `json:"channel,omitempty" tf:"channel,omitempty"` +} + +type GatewayAPIConfigParameters struct { + + // Which Gateway Api channel should be used. CHANNEL_DISABLED, CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + // +kubebuilder:validation:Optional + Channel *string `json:"channel" tf:"channel,omitempty"` +} + +type GcePersistentDiskCsiDriverConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcePersistentDiskCsiDriverConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcePersistentDiskCsiDriverConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type GcfsConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcfsConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcfsConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type GcsFuseCsiDriverConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcsFuseCsiDriverConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GcsFuseCsiDriverConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type GkeBackupAgentConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GkeBackupAgentConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GkeBackupAgentConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type GpuDriverInstallationConfigInitParameters struct { + + // Mode for how the GPU driver is installed. + // Accepted values are: + GpuDriverVersion *string `json:"gpuDriverVersion,omitempty" tf:"gpu_driver_version,omitempty"` +} + +type GpuDriverInstallationConfigObservation struct { + + // Mode for how the GPU driver is installed. + // Accepted values are: + GpuDriverVersion *string `json:"gpuDriverVersion,omitempty" tf:"gpu_driver_version,omitempty"` +} + +type GpuDriverInstallationConfigParameters struct { + + // Mode for how the GPU driver is installed. + // Accepted values are: + // +kubebuilder:validation:Optional + GpuDriverVersion *string `json:"gpuDriverVersion" tf:"gpu_driver_version,omitempty"` +} + +type GpuSharingConfigInitParameters struct { + + // The type of GPU sharing strategy to enable on the GPU node. + // Accepted values are: + GpuSharingStrategy *string `json:"gpuSharingStrategy,omitempty" tf:"gpu_sharing_strategy,omitempty"` + + // The maximum number of containers that can share a GPU. + MaxSharedClientsPerGpu *float64 `json:"maxSharedClientsPerGpu,omitempty" tf:"max_shared_clients_per_gpu,omitempty"` +} + +type GpuSharingConfigObservation struct { + + // The type of GPU sharing strategy to enable on the GPU node. + // Accepted values are: + GpuSharingStrategy *string `json:"gpuSharingStrategy,omitempty" tf:"gpu_sharing_strategy,omitempty"` + + // The maximum number of containers that can share a GPU. + MaxSharedClientsPerGpu *float64 `json:"maxSharedClientsPerGpu,omitempty" tf:"max_shared_clients_per_gpu,omitempty"` +} + +type GpuSharingConfigParameters struct { + + // The type of GPU sharing strategy to enable on the GPU node. + // Accepted values are: + // +kubebuilder:validation:Optional + GpuSharingStrategy *string `json:"gpuSharingStrategy" tf:"gpu_sharing_strategy,omitempty"` + + // The maximum number of containers that can share a GPU. + // +kubebuilder:validation:Optional + MaxSharedClientsPerGpu *float64 `json:"maxSharedClientsPerGpu" tf:"max_shared_clients_per_gpu,omitempty"` +} + +type GuestAcceleratorGpuDriverInstallationConfigInitParameters struct { +} + +type GuestAcceleratorGpuDriverInstallationConfigObservation struct { + + // Mode for how the GPU driver is installed. + // Accepted values are: + GpuDriverVersion *string `json:"gpuDriverVersion,omitempty" tf:"gpu_driver_version,omitempty"` +} + +type GuestAcceleratorGpuDriverInstallationConfigParameters struct { +} + +type GuestAcceleratorGpuSharingConfigInitParameters struct { +} + +type GuestAcceleratorGpuSharingConfigObservation struct { + + // The type of GPU sharing strategy to enable on the GPU node. + // Accepted values are: + GpuSharingStrategy *string `json:"gpuSharingStrategy,omitempty" tf:"gpu_sharing_strategy,omitempty"` + + // The maximum number of containers that can share a GPU. + MaxSharedClientsPerGpu *float64 `json:"maxSharedClientsPerGpu,omitempty" tf:"max_shared_clients_per_gpu,omitempty"` +} + +type GuestAcceleratorGpuSharingConfigParameters struct { +} + +type GuestAcceleratorInitParameters struct { + + // The number of the guest accelerator cards exposed to this instance. + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // Configuration for auto installation of GPU driver. Structure is documented below. + GpuDriverInstallationConfig *GpuDriverInstallationConfigInitParameters `json:"gpuDriverInstallationConfig,omitempty" tf:"gpu_driver_installation_config,omitempty"` + + // Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide. + GpuPartitionSize *string `json:"gpuPartitionSize,omitempty" tf:"gpu_partition_size,omitempty"` + + // Configuration for GPU sharing. Structure is documented below. + GpuSharingConfig *GpuSharingConfigInitParameters `json:"gpuSharingConfig,omitempty" tf:"gpu_sharing_config,omitempty"` + + // The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type GuestAcceleratorObservation struct { + + // The number of the guest accelerator cards exposed to this instance. + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // Configuration for auto installation of GPU driver. Structure is documented below. + GpuDriverInstallationConfig *GpuDriverInstallationConfigObservation `json:"gpuDriverInstallationConfig,omitempty" tf:"gpu_driver_installation_config,omitempty"` + + // Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide. + GpuPartitionSize *string `json:"gpuPartitionSize,omitempty" tf:"gpu_partition_size,omitempty"` + + // Configuration for GPU sharing. Structure is documented below. + GpuSharingConfig *GpuSharingConfigObservation `json:"gpuSharingConfig,omitempty" tf:"gpu_sharing_config,omitempty"` + + // The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type GuestAcceleratorParameters struct { + + // The number of the guest accelerator cards exposed to this instance. + // +kubebuilder:validation:Optional + Count *float64 `json:"count" tf:"count,omitempty"` + + // Configuration for auto installation of GPU driver. Structure is documented below. + // +kubebuilder:validation:Optional + GpuDriverInstallationConfig *GpuDriverInstallationConfigParameters `json:"gpuDriverInstallationConfig,omitempty" tf:"gpu_driver_installation_config,omitempty"` + + // Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide. + // +kubebuilder:validation:Optional + GpuPartitionSize *string `json:"gpuPartitionSize,omitempty" tf:"gpu_partition_size,omitempty"` + + // Configuration for GPU sharing. Structure is documented below. + // +kubebuilder:validation:Optional + GpuSharingConfig *GpuSharingConfigParameters `json:"gpuSharingConfig,omitempty" tf:"gpu_sharing_config,omitempty"` + + // The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +type GvnicInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GvnicObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type GvnicParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type HTTPLoadBalancingInitParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type HTTPLoadBalancingObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type HTTPLoadBalancingParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type HorizontalPodAutoscalingInitParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type HorizontalPodAutoscalingObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type HorizontalPodAutoscalingParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type HostMaintenancePolicyInitParameters struct { + MaintenanceInterval *string `json:"maintenanceInterval,omitempty" tf:"maintenance_interval,omitempty"` +} + +type HostMaintenancePolicyObservation struct { + MaintenanceInterval *string `json:"maintenanceInterval,omitempty" tf:"maintenance_interval,omitempty"` +} + +type HostMaintenancePolicyParameters struct { + + // +kubebuilder:validation:Optional + MaintenanceInterval *string `json:"maintenanceInterval" tf:"maintenance_interval,omitempty"` +} + +type IPAllocationPolicyInitParameters struct { + + // The configuration for additional pod secondary ranges at + // the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + // secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + AdditionalPodRangesConfig *AdditionalPodRangesConfigInitParameters `json:"additionalPodRangesConfig,omitempty" tf:"additional_pod_ranges_config,omitempty"` + + // The IP address range for the cluster pod IPs. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + ClusterIPv4CidrBlock *string `json:"clusterIpv4CidrBlock,omitempty" tf:"cluster_ipv4_cidr_block,omitempty"` + + // The name of the existing secondary + // range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + // cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + ClusterSecondaryRangeName *string `json:"clusterSecondaryRangeName,omitempty" tf:"cluster_secondary_range_name,omitempty"` + + PodCidrOverprovisionConfig *PodCidrOverprovisionConfigInitParameters `json:"podCidrOverprovisionConfig,omitempty" tf:"pod_cidr_overprovision_config,omitempty"` + + // The IP address range of the services IPs in this cluster. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + ServicesIPv4CidrBlock *string `json:"servicesIpv4CidrBlock,omitempty" tf:"services_ipv4_cidr_block,omitempty"` + + // The name of the existing + // secondary range in the cluster's subnetwork to use for service ClusterIPs. + // Alternatively, services_ipv4_cidr_block can be used to automatically create a + // GKE-managed one. + ServicesSecondaryRangeName *string `json:"servicesSecondaryRangeName,omitempty" tf:"services_secondary_range_name,omitempty"` + + // The IP Stack Type of the cluster. + // Default value is IPV4. + // Possible values are IPV4 and IPV4_IPV6. + StackType *string `json:"stackType,omitempty" tf:"stack_type,omitempty"` +} + +type IPAllocationPolicyObservation struct { + + // The configuration for additional pod secondary ranges at + // the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + // secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + AdditionalPodRangesConfig *AdditionalPodRangesConfigObservation `json:"additionalPodRangesConfig,omitempty" tf:"additional_pod_ranges_config,omitempty"` + + // The IP address range for the cluster pod IPs. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + ClusterIPv4CidrBlock *string `json:"clusterIpv4CidrBlock,omitempty" tf:"cluster_ipv4_cidr_block,omitempty"` + + // The name of the existing secondary + // range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + // cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + ClusterSecondaryRangeName *string `json:"clusterSecondaryRangeName,omitempty" tf:"cluster_secondary_range_name,omitempty"` + + PodCidrOverprovisionConfig *PodCidrOverprovisionConfigObservation `json:"podCidrOverprovisionConfig,omitempty" tf:"pod_cidr_overprovision_config,omitempty"` + + // The IP address range of the services IPs in this cluster. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + ServicesIPv4CidrBlock *string `json:"servicesIpv4CidrBlock,omitempty" tf:"services_ipv4_cidr_block,omitempty"` + + // The name of the existing + // secondary range in the cluster's subnetwork to use for service ClusterIPs. + // Alternatively, services_ipv4_cidr_block can be used to automatically create a + // GKE-managed one. + ServicesSecondaryRangeName *string `json:"servicesSecondaryRangeName,omitempty" tf:"services_secondary_range_name,omitempty"` + + // The IP Stack Type of the cluster. + // Default value is IPV4. + // Possible values are IPV4 and IPV4_IPV6. + StackType *string `json:"stackType,omitempty" tf:"stack_type,omitempty"` +} + +type IPAllocationPolicyParameters struct { + + // The configuration for additional pod secondary ranges at + // the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + // secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + // +kubebuilder:validation:Optional + AdditionalPodRangesConfig *AdditionalPodRangesConfigParameters `json:"additionalPodRangesConfig,omitempty" tf:"additional_pod_ranges_config,omitempty"` + + // The IP address range for the cluster pod IPs. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + // +kubebuilder:validation:Optional + ClusterIPv4CidrBlock *string `json:"clusterIpv4CidrBlock,omitempty" tf:"cluster_ipv4_cidr_block,omitempty"` + + // The name of the existing secondary + // range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + // cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + // +kubebuilder:validation:Optional + ClusterSecondaryRangeName *string `json:"clusterSecondaryRangeName,omitempty" tf:"cluster_secondary_range_name,omitempty"` + + // +kubebuilder:validation:Optional + PodCidrOverprovisionConfig *PodCidrOverprovisionConfigParameters `json:"podCidrOverprovisionConfig,omitempty" tf:"pod_cidr_overprovision_config,omitempty"` + + // The IP address range of the services IPs in this cluster. + // Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + // to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + // from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + // pick a specific range to use. + // +kubebuilder:validation:Optional + ServicesIPv4CidrBlock *string `json:"servicesIpv4CidrBlock,omitempty" tf:"services_ipv4_cidr_block,omitempty"` + + // The name of the existing + // secondary range in the cluster's subnetwork to use for service ClusterIPs. + // Alternatively, services_ipv4_cidr_block can be used to automatically create a + // GKE-managed one. + // +kubebuilder:validation:Optional + ServicesSecondaryRangeName *string `json:"servicesSecondaryRangeName,omitempty" tf:"services_secondary_range_name,omitempty"` + + // The IP Stack Type of the cluster. + // Default value is IPV4. + // Possible values are IPV4 and IPV4_IPV6. + // +kubebuilder:validation:Optional + StackType *string `json:"stackType,omitempty" tf:"stack_type,omitempty"` +} + +type IdentityServiceConfigInitParameters struct { + + // Whether to enable the Identity Service component. It is disabled by default. Set enabled=true to enable. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type IdentityServiceConfigObservation struct { + + // Whether to enable the Identity Service component. It is disabled by default. Set enabled=true to enable. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type IdentityServiceConfigParameters struct { + + // Whether to enable the Identity Service component. It is disabled by default. Set enabled=true to enable. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type IstioConfigInitParameters struct { + + // The authentication type between services in Istio. Available options include AUTH_MUTUAL_TLS. + Auth *string `json:"auth,omitempty" tf:"auth,omitempty"` + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type IstioConfigObservation struct { + + // The authentication type between services in Istio. Available options include AUTH_MUTUAL_TLS. + Auth *string `json:"auth,omitempty" tf:"auth,omitempty"` + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type IstioConfigParameters struct { + + // The authentication type between services in Istio. Available options include AUTH_MUTUAL_TLS. + // +kubebuilder:validation:Optional + Auth *string `json:"auth,omitempty" tf:"auth,omitempty"` + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type KalmConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type KalmConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type KalmConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type KubeletConfigInitParameters struct { + + // If true, enables CPU CFS quota enforcement for + // containers that specify CPU limits. + CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty" tf:"cpu_cfs_quota,omitempty"` + + // The CPU CFS quota period value. Specified + // as a sequence of decimal numbers, each with optional fraction and a unit suffix, + // such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + // "h". The value must be a positive duration. + CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty" tf:"cpu_cfs_quota_period,omitempty"` + + // The CPU management policy on the node. See + // K8S CPU Management Policies. + // One of "none" or "static". Defaults to none when kubelet_config is unset. + CPUManagerPolicy *string `json:"cpuManagerPolicy,omitempty" tf:"cpu_manager_policy,omitempty"` + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304. + PodPidsLimit *float64 `json:"podPidsLimit,omitempty" tf:"pod_pids_limit,omitempty"` +} + +type KubeletConfigObservation struct { + + // If true, enables CPU CFS quota enforcement for + // containers that specify CPU limits. + CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty" tf:"cpu_cfs_quota,omitempty"` + + // The CPU CFS quota period value. Specified + // as a sequence of decimal numbers, each with optional fraction and a unit suffix, + // such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + // "h". The value must be a positive duration. + CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty" tf:"cpu_cfs_quota_period,omitempty"` + + // The CPU management policy on the node. See + // K8S CPU Management Policies. + // One of "none" or "static". Defaults to none when kubelet_config is unset. + CPUManagerPolicy *string `json:"cpuManagerPolicy,omitempty" tf:"cpu_manager_policy,omitempty"` + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304. + PodPidsLimit *float64 `json:"podPidsLimit,omitempty" tf:"pod_pids_limit,omitempty"` +} + +type KubeletConfigParameters struct { + + // If true, enables CPU CFS quota enforcement for + // containers that specify CPU limits. + // +kubebuilder:validation:Optional + CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty" tf:"cpu_cfs_quota,omitempty"` + + // The CPU CFS quota period value. Specified + // as a sequence of decimal numbers, each with optional fraction and a unit suffix, + // such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + // "h". The value must be a positive duration. + // +kubebuilder:validation:Optional + CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty" tf:"cpu_cfs_quota_period,omitempty"` + + // The CPU management policy on the node. See + // K8S CPU Management Policies. + // One of "none" or "static". Defaults to none when kubelet_config is unset. + // +kubebuilder:validation:Optional + CPUManagerPolicy *string `json:"cpuManagerPolicy" tf:"cpu_manager_policy,omitempty"` + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + // +kubebuilder:validation:Optional + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304. + // +kubebuilder:validation:Optional + PodPidsLimit *float64 `json:"podPidsLimit,omitempty" tf:"pod_pids_limit,omitempty"` +} + +type LinuxNodeConfigInitParameters struct { + + // Possible cgroup modes that can be used. + // Accepted values are: + CgroupMode *string `json:"cgroupMode,omitempty" tf:"cgroup_mode,omitempty"` + + // The Linux kernel parameters to be applied to the nodes + // and all pods running on the nodes. Specified as a map from the key, such as + // net.core.wmem_max, to a string value. Currently supported attributes can be found here. + // Note that validations happen all server side. All attributes are optional. + // +mapType=granular + Sysctls map[string]*string `json:"sysctls,omitempty" tf:"sysctls,omitempty"` +} + +type LinuxNodeConfigObservation struct { + + // Possible cgroup modes that can be used. + // Accepted values are: + CgroupMode *string `json:"cgroupMode,omitempty" tf:"cgroup_mode,omitempty"` + + // The Linux kernel parameters to be applied to the nodes + // and all pods running on the nodes. Specified as a map from the key, such as + // net.core.wmem_max, to a string value. Currently supported attributes can be found here. + // Note that validations happen all server side. All attributes are optional. + // +mapType=granular + Sysctls map[string]*string `json:"sysctls,omitempty" tf:"sysctls,omitempty"` +} + +type LinuxNodeConfigParameters struct { + + // Possible cgroup modes that can be used. + // Accepted values are: + // +kubebuilder:validation:Optional + CgroupMode *string `json:"cgroupMode,omitempty" tf:"cgroup_mode,omitempty"` + + // The Linux kernel parameters to be applied to the nodes + // and all pods running on the nodes. Specified as a map from the key, such as + // net.core.wmem_max, to a string value. Currently supported attributes can be found here. + // Note that validations happen all server side. All attributes are optional. + // +kubebuilder:validation:Optional + // +mapType=granular + Sysctls map[string]*string `json:"sysctls,omitempty" tf:"sysctls,omitempty"` +} + +type LocalNvmeSsdBlockConfigInitParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type LocalNvmeSsdBlockConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type LocalNvmeSsdBlockConfigParameters struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + // +kubebuilder:validation:Optional + LocalSsdCount *float64 `json:"localSsdCount" tf:"local_ssd_count,omitempty"` +} + +type LoggingConfigInitParameters struct { + + // The GKE components exposing logs. Supported values include: + // SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + EnableComponents []*string `json:"enableComponents,omitempty" tf:"enable_components,omitempty"` +} + +type LoggingConfigObservation struct { + + // The GKE components exposing logs. Supported values include: + // SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + EnableComponents []*string `json:"enableComponents,omitempty" tf:"enable_components,omitempty"` +} + +type LoggingConfigParameters struct { + + // The GKE components exposing logs. Supported values include: + // SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + // +kubebuilder:validation:Optional + EnableComponents []*string `json:"enableComponents" tf:"enable_components,omitempty"` +} + +type MaintenanceExclusionInitParameters struct { + EndTime *string `json:"endTime,omitempty" tf:"end_time,omitempty"` + + // The name of the cluster, unique within the project and + // location. + ExclusionName *string `json:"exclusionName,omitempty" tf:"exclusion_name,omitempty"` + + // MaintenanceExclusionOptions provides maintenance exclusion related options. + ExclusionOptions *ExclusionOptionsInitParameters `json:"exclusionOptions,omitempty" tf:"exclusion_options,omitempty"` + + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type MaintenanceExclusionObservation struct { + EndTime *string `json:"endTime,omitempty" tf:"end_time,omitempty"` + + // The name of the cluster, unique within the project and + // location. + ExclusionName *string `json:"exclusionName,omitempty" tf:"exclusion_name,omitempty"` + + // MaintenanceExclusionOptions provides maintenance exclusion related options. + ExclusionOptions *ExclusionOptionsObservation `json:"exclusionOptions,omitempty" tf:"exclusion_options,omitempty"` + + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type MaintenanceExclusionParameters struct { + + // +kubebuilder:validation:Optional + EndTime *string `json:"endTime" tf:"end_time,omitempty"` + + // The name of the cluster, unique within the project and + // location. + // +kubebuilder:validation:Optional + ExclusionName *string `json:"exclusionName" tf:"exclusion_name,omitempty"` + + // MaintenanceExclusionOptions provides maintenance exclusion related options. + // +kubebuilder:validation:Optional + ExclusionOptions *ExclusionOptionsParameters `json:"exclusionOptions,omitempty" tf:"exclusion_options,omitempty"` + + // +kubebuilder:validation:Optional + StartTime *string `json:"startTime" tf:"start_time,omitempty"` +} + +type MaintenancePolicyInitParameters struct { + + // structure documented below. + DailyMaintenanceWindow *DailyMaintenanceWindowInitParameters `json:"dailyMaintenanceWindow,omitempty" tf:"daily_maintenance_window,omitempty"` + + // structure documented below + MaintenanceExclusion []MaintenanceExclusionInitParameters `json:"maintenanceExclusion,omitempty" tf:"maintenance_exclusion,omitempty"` + + // structure documented below + RecurringWindow *RecurringWindowInitParameters `json:"recurringWindow,omitempty" tf:"recurring_window,omitempty"` +} + +type MaintenancePolicyObservation struct { + + // structure documented below. + DailyMaintenanceWindow *DailyMaintenanceWindowObservation `json:"dailyMaintenanceWindow,omitempty" tf:"daily_maintenance_window,omitempty"` + + // structure documented below + MaintenanceExclusion []MaintenanceExclusionObservation `json:"maintenanceExclusion,omitempty" tf:"maintenance_exclusion,omitempty"` + + // structure documented below + RecurringWindow *RecurringWindowObservation `json:"recurringWindow,omitempty" tf:"recurring_window,omitempty"` +} + +type MaintenancePolicyParameters struct { + + // structure documented below. + // +kubebuilder:validation:Optional + DailyMaintenanceWindow *DailyMaintenanceWindowParameters `json:"dailyMaintenanceWindow,omitempty" tf:"daily_maintenance_window,omitempty"` + + // structure documented below + // +kubebuilder:validation:Optional + MaintenanceExclusion []MaintenanceExclusionParameters `json:"maintenanceExclusion,omitempty" tf:"maintenance_exclusion,omitempty"` + + // structure documented below + // +kubebuilder:validation:Optional + RecurringWindow *RecurringWindowParameters `json:"recurringWindow,omitempty" tf:"recurring_window,omitempty"` +} + +type ManagedPrometheusInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ManagedPrometheusObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ManagedPrometheusParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type ManagementInitParameters struct { + + // Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered. + AutoRepair *bool `json:"autoRepair,omitempty" tf:"auto_repair,omitempty"` + + // Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes. + AutoUpgrade *bool `json:"autoUpgrade,omitempty" tf:"auto_upgrade,omitempty"` +} + +type ManagementObservation struct { + + // Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered. + AutoRepair *bool `json:"autoRepair,omitempty" tf:"auto_repair,omitempty"` + + // Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes. + AutoUpgrade *bool `json:"autoUpgrade,omitempty" tf:"auto_upgrade,omitempty"` + + // Specifies the Auto Upgrade knobs for the node pool. + UpgradeOptions []UpgradeOptionsObservation `json:"upgradeOptions,omitempty" tf:"upgrade_options,omitempty"` +} + +type ManagementParameters struct { + + // Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered. + // +kubebuilder:validation:Optional + AutoRepair *bool `json:"autoRepair,omitempty" tf:"auto_repair,omitempty"` + + // Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes. + // +kubebuilder:validation:Optional + AutoUpgrade *bool `json:"autoUpgrade,omitempty" tf:"auto_upgrade,omitempty"` +} + +type MasterAuthInitParameters struct { + + // Whether client certificate authorization is enabled for this cluster. For example: + ClientCertificateConfig *ClientCertificateConfigInitParameters `json:"clientCertificateConfig,omitempty" tf:"client_certificate_config,omitempty"` +} + +type MasterAuthObservation struct { + + // Base64 encoded public certificate + // used by clients to authenticate to the cluster endpoint. + ClientCertificate *string `json:"clientCertificate,omitempty" tf:"client_certificate,omitempty"` + + // Whether client certificate authorization is enabled for this cluster. For example: + ClientCertificateConfig *ClientCertificateConfigObservation `json:"clientCertificateConfig,omitempty" tf:"client_certificate_config,omitempty"` + + // Base64 encoded public certificate + // that is the root certificate of the cluster. + ClusterCACertificate *string `json:"clusterCaCertificate,omitempty" tf:"cluster_ca_certificate,omitempty"` +} + +type MasterAuthParameters struct { + + // Whether client certificate authorization is enabled for this cluster. For example: + // +kubebuilder:validation:Optional + ClientCertificateConfig *ClientCertificateConfigParameters `json:"clientCertificateConfig" tf:"client_certificate_config,omitempty"` +} + +type MasterAuthorizedNetworksConfigInitParameters struct { + + // External networks that can access the + // Kubernetes cluster master through HTTPS. + CidrBlocks []CidrBlocksInitParameters `json:"cidrBlocks,omitempty" tf:"cidr_blocks,omitempty"` + + // Whether Kubernetes master is + // accessible via Google Compute Engine Public IPs. + GCPPublicCidrsAccessEnabled *bool `json:"gcpPublicCidrsAccessEnabled,omitempty" tf:"gcp_public_cidrs_access_enabled,omitempty"` +} + +type MasterAuthorizedNetworksConfigObservation struct { + + // External networks that can access the + // Kubernetes cluster master through HTTPS. + CidrBlocks []CidrBlocksObservation `json:"cidrBlocks,omitempty" tf:"cidr_blocks,omitempty"` + + // Whether Kubernetes master is + // accessible via Google Compute Engine Public IPs. + GCPPublicCidrsAccessEnabled *bool `json:"gcpPublicCidrsAccessEnabled,omitempty" tf:"gcp_public_cidrs_access_enabled,omitempty"` +} + +type MasterAuthorizedNetworksConfigParameters struct { + + // External networks that can access the + // Kubernetes cluster master through HTTPS. + // +kubebuilder:validation:Optional + CidrBlocks []CidrBlocksParameters `json:"cidrBlocks,omitempty" tf:"cidr_blocks,omitempty"` + + // Whether Kubernetes master is + // accessible via Google Compute Engine Public IPs. + // +kubebuilder:validation:Optional + GCPPublicCidrsAccessEnabled *bool `json:"gcpPublicCidrsAccessEnabled,omitempty" tf:"gcp_public_cidrs_access_enabled,omitempty"` +} + +type MasterGlobalAccessConfigInitParameters struct { + + // Whether the cluster master is accessible globally or + // not. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type MasterGlobalAccessConfigObservation struct { + + // Whether the cluster master is accessible globally or + // not. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type MasterGlobalAccessConfigParameters struct { + + // Whether the cluster master is accessible globally or + // not. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type MeshCertificatesInitParameters struct { + + // Controls the issuance of workload mTLS certificates. It is enabled by default. Workload Identity is required, see workload_config. + EnableCertificates *bool `json:"enableCertificates,omitempty" tf:"enable_certificates,omitempty"` +} + +type MeshCertificatesObservation struct { + + // Controls the issuance of workload mTLS certificates. It is enabled by default. Workload Identity is required, see workload_config. + EnableCertificates *bool `json:"enableCertificates,omitempty" tf:"enable_certificates,omitempty"` +} + +type MeshCertificatesParameters struct { + + // Controls the issuance of workload mTLS certificates. It is enabled by default. Workload Identity is required, see workload_config. + // +kubebuilder:validation:Optional + EnableCertificates *bool `json:"enableCertificates" tf:"enable_certificates,omitempty"` +} + +type MonitoringConfigInitParameters struct { + + // Configuration for Advanced Datapath Monitoring. Structure is documented below. + AdvancedDatapathObservabilityConfig *AdvancedDatapathObservabilityConfigInitParameters `json:"advancedDatapathObservabilityConfig,omitempty" tf:"advanced_datapath_observability_config,omitempty"` + + // The GKE components exposing metrics. Supported values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, WORKLOADS is supported on top of those 12 values. (WORKLOADS is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR are only supported in GKE 1.29.3-gke.1093000 and above. + EnableComponents []*string `json:"enableComponents,omitempty" tf:"enable_components,omitempty"` + + // Configuration for Managed Service for Prometheus. Structure is documented below. + ManagedPrometheus *ManagedPrometheusInitParameters `json:"managedPrometheus,omitempty" tf:"managed_prometheus,omitempty"` +} + +type MonitoringConfigObservation struct { + + // Configuration for Advanced Datapath Monitoring. Structure is documented below. + AdvancedDatapathObservabilityConfig *AdvancedDatapathObservabilityConfigObservation `json:"advancedDatapathObservabilityConfig,omitempty" tf:"advanced_datapath_observability_config,omitempty"` + + // The GKE components exposing metrics. Supported values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, WORKLOADS is supported on top of those 12 values. (WORKLOADS is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR are only supported in GKE 1.29.3-gke.1093000 and above. + EnableComponents []*string `json:"enableComponents,omitempty" tf:"enable_components,omitempty"` + + // Configuration for Managed Service for Prometheus. Structure is documented below. + ManagedPrometheus *ManagedPrometheusObservation `json:"managedPrometheus,omitempty" tf:"managed_prometheus,omitempty"` +} + +type MonitoringConfigParameters struct { + + // Configuration for Advanced Datapath Monitoring. Structure is documented below. + // +kubebuilder:validation:Optional + AdvancedDatapathObservabilityConfig *AdvancedDatapathObservabilityConfigParameters `json:"advancedDatapathObservabilityConfig,omitempty" tf:"advanced_datapath_observability_config,omitempty"` + + // The GKE components exposing metrics. Supported values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, WORKLOADS is supported on top of those 12 values. (WORKLOADS is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR are only supported in GKE 1.29.3-gke.1093000 and above. + // +kubebuilder:validation:Optional + EnableComponents []*string `json:"enableComponents,omitempty" tf:"enable_components,omitempty"` + + // Configuration for Managed Service for Prometheus. Structure is documented below. + // +kubebuilder:validation:Optional + ManagedPrometheus *ManagedPrometheusParameters `json:"managedPrometheus,omitempty" tf:"managed_prometheus,omitempty"` +} + +type NetworkConfigInitParameters struct { +} + +type NetworkConfigObservation struct { + AdditionalNodeNetworkConfigs []AdditionalNodeNetworkConfigsObservation `json:"additionalNodeNetworkConfigs,omitempty" tf:"additional_node_network_configs,omitempty"` + + AdditionalPodNetworkConfigs []AdditionalPodNetworkConfigsObservation `json:"additionalPodNetworkConfigs,omitempty" tf:"additional_pod_network_configs,omitempty"` + + CreatePodRange *bool `json:"createPodRange,omitempty" tf:"create_pod_range,omitempty"` + + // Enables the private cluster feature, + // creating a private endpoint on the cluster. In a private cluster, nodes only + // have RFC 1918 private addresses and communicate with the master's private + // endpoint via private networking. + EnablePrivateNodes *bool `json:"enablePrivateNodes,omitempty" tf:"enable_private_nodes,omitempty"` + + NetworkPerformanceConfig *NetworkPerformanceConfigObservation `json:"networkPerformanceConfig,omitempty" tf:"network_performance_config,omitempty"` + + PodCidrOverprovisionConfig *NetworkConfigPodCidrOverprovisionConfigObservation `json:"podCidrOverprovisionConfig,omitempty" tf:"pod_cidr_overprovision_config,omitempty"` + + PodIPv4CidrBlock *string `json:"podIpv4CidrBlock,omitempty" tf:"pod_ipv4_cidr_block,omitempty"` + + PodRange *string `json:"podRange,omitempty" tf:"pod_range,omitempty"` +} + +type NetworkConfigParameters struct { +} + +type NetworkConfigPodCidrOverprovisionConfigInitParameters struct { +} + +type NetworkConfigPodCidrOverprovisionConfigObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type NetworkConfigPodCidrOverprovisionConfigParameters struct { +} + +type NetworkPerformanceConfigInitParameters struct { +} + +type NetworkPerformanceConfigObservation struct { + TotalEgressBandwidthTier *string `json:"totalEgressBandwidthTier,omitempty" tf:"total_egress_bandwidth_tier,omitempty"` +} + +type NetworkPerformanceConfigParameters struct { +} + +type NetworkPolicyConfigInitParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type NetworkPolicyConfigObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type NetworkPolicyConfigParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type NetworkPolicyInitParameters struct { + + // Whether network policy is enabled on the cluster. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED. + Provider *string `json:"provider,omitempty" tf:"provider,omitempty"` +} + +type NetworkPolicyObservation struct { + + // Whether network policy is enabled on the cluster. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED. + Provider *string `json:"provider,omitempty" tf:"provider,omitempty"` +} + +type NetworkPolicyParameters struct { + + // Whether network policy is enabled on the cluster. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` + + // The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED. + // +kubebuilder:validation:Optional + Provider *string `json:"provider,omitempty" tf:"provider,omitempty"` +} + +type NetworkTagsInitParameters struct { + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type NetworkTagsObservation struct { + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type NetworkTagsParameters struct { + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type NodeAffinityInitParameters struct { + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Specifies affinity or anti-affinity. Accepted values are "IN" or "NOT_IN" + Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + + // name" + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type NodeAffinityObservation struct { + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Specifies affinity or anti-affinity. Accepted values are "IN" or "NOT_IN" + Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + + // name" + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type NodeAffinityParameters struct { + + // Key for taint. + // +kubebuilder:validation:Optional + Key *string `json:"key" tf:"key,omitempty"` + + // Specifies affinity or anti-affinity. Accepted values are "IN" or "NOT_IN" + // +kubebuilder:validation:Optional + Operator *string `json:"operator" tf:"operator,omitempty"` + + // name" + // +kubebuilder:validation:Optional + Values []*string `json:"values" tf:"values,omitempty"` +} + +type NodeConfigAdvancedMachineFeaturesInitParameters struct { +} + +type NodeConfigAdvancedMachineFeaturesObservation struct { + + // Defines whether the instance should have nested virtualization enabled. Defaults to false. + EnableNestedVirtualization *bool `json:"enableNestedVirtualization,omitempty" tf:"enable_nested_virtualization,omitempty"` + + // The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed. + ThreadsPerCore *float64 `json:"threadsPerCore,omitempty" tf:"threads_per_core,omitempty"` +} + +type NodeConfigAdvancedMachineFeaturesParameters struct { +} + +type NodeConfigConfidentialNodesInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigConfidentialNodesObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigConfidentialNodesParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type NodeConfigContainerdConfigInitParameters struct { +} + +type NodeConfigContainerdConfigObservation struct { + + // Configuration for private container registries. There are two fields in this config: + PrivateRegistryAccessConfig *ContainerdConfigPrivateRegistryAccessConfigObservation `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type NodeConfigContainerdConfigParameters struct { +} + +type NodeConfigDefaultsContainerdConfigInitParameters struct { + + // Configuration for private container registries. There are two fields in this config: + PrivateRegistryAccessConfig *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type NodeConfigDefaultsContainerdConfigObservation struct { + + // Configuration for private container registries. There are two fields in this config: + PrivateRegistryAccessConfig *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type NodeConfigDefaultsContainerdConfigParameters struct { + + // Configuration for private container registries. There are two fields in this config: + // +kubebuilder:validation:Optional + PrivateRegistryAccessConfig *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters `json:"privateRegistryAccessConfig,omitempty" tf:"private_registry_access_config,omitempty"` +} + +type NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + CertificateAuthorityDomainConfig []ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + CertificateAuthorityDomainConfig []ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + // +kubebuilder:validation:Optional + CertificateAuthorityDomainConfig []ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsGcfsConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsGcfsConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsGcfsConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type NodeConfigDefaultsInitParameters struct { + + // Parameters to customize containerd runtime. Structure is documented below. + ContainerdConfig *NodeConfigDefaultsContainerdConfigInitParameters `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // The default Google Container Filesystem (GCFS) configuration at the cluster level. e.g. enable image streaming across all the node pools within the cluster. Structure is documented below. + GcfsConfig *NodeConfigDefaultsGcfsConfigInitParameters `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // only port is enabled for newly created node pools in the cluster. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` +} + +type NodeConfigDefaultsObservation struct { + + // Parameters to customize containerd runtime. Structure is documented below. + ContainerdConfig *NodeConfigDefaultsContainerdConfigObservation `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // The default Google Container Filesystem (GCFS) configuration at the cluster level. e.g. enable image streaming across all the node pools within the cluster. Structure is documented below. + GcfsConfig *NodeConfigDefaultsGcfsConfigObservation `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // only port is enabled for newly created node pools in the cluster. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` +} + +type NodeConfigDefaultsParameters struct { + + // Parameters to customize containerd runtime. Structure is documented below. + // +kubebuilder:validation:Optional + ContainerdConfig *NodeConfigDefaultsContainerdConfigParameters `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // The default Google Container Filesystem (GCFS) configuration at the cluster level. e.g. enable image streaming across all the node pools within the cluster. Structure is documented below. + // +kubebuilder:validation:Optional + GcfsConfig *NodeConfigDefaultsGcfsConfigParameters `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // only port is enabled for newly created node pools in the cluster. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + // +kubebuilder:validation:Optional + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + // +kubebuilder:validation:Optional + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` +} + +type NodeConfigEffectiveTaintsInitParameters struct { +} + +type NodeConfigEffectiveTaintsObservation struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Value for taint. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type NodeConfigEffectiveTaintsParameters struct { +} + +type NodeConfigEphemeralStorageConfigInitParameters struct { +} + +type NodeConfigEphemeralStorageConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type NodeConfigEphemeralStorageConfigParameters struct { +} + +type NodeConfigEphemeralStorageLocalSsdConfigInitParameters struct { +} + +type NodeConfigEphemeralStorageLocalSsdConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type NodeConfigEphemeralStorageLocalSsdConfigParameters struct { +} + +type NodeConfigFastSocketInitParameters struct { +} + +type NodeConfigFastSocketObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigFastSocketParameters struct { +} + +type NodeConfigGcfsConfigInitParameters struct { +} + +type NodeConfigGcfsConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigGcfsConfigParameters struct { +} + +type NodeConfigGuestAcceleratorInitParameters struct { +} + +type NodeConfigGuestAcceleratorObservation struct { + + // The number of the guest accelerator cards exposed to this instance. + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // Configuration for auto installation of GPU driver. Structure is documented below. + GpuDriverInstallationConfig *GuestAcceleratorGpuDriverInstallationConfigObservation `json:"gpuDriverInstallationConfig,omitempty" tf:"gpu_driver_installation_config,omitempty"` + + // Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide. + GpuPartitionSize *string `json:"gpuPartitionSize,omitempty" tf:"gpu_partition_size,omitempty"` + + // Configuration for GPU sharing. Structure is documented below. + GpuSharingConfig *GuestAcceleratorGpuSharingConfigObservation `json:"gpuSharingConfig,omitempty" tf:"gpu_sharing_config,omitempty"` + + // The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type NodeConfigGuestAcceleratorParameters struct { +} + +type NodeConfigGvnicInitParameters struct { +} + +type NodeConfigGvnicObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodeConfigGvnicParameters struct { +} + +type NodeConfigHostMaintenancePolicyInitParameters struct { +} + +type NodeConfigHostMaintenancePolicyObservation struct { + MaintenanceInterval *string `json:"maintenanceInterval,omitempty" tf:"maintenance_interval,omitempty"` +} + +type NodeConfigHostMaintenancePolicyParameters struct { +} + +type NodeConfigInitParameters struct { + + // Specifies options for controlling + // advanced machine features. Structure is documented below. + AdvancedMachineFeatures *AdvancedMachineFeaturesInitParameters `json:"advancedMachineFeatures,omitempty" tf:"advanced_machine_features,omitempty"` + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below. + ConfidentialNodes *NodeConfigConfidentialNodesInitParameters `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Parameters to customize containerd runtime. Structure is documented below. + ContainerdConfig *ContainerdConfigInitParameters `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // Size of the disk attached to each node, specified + // in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + DiskSizeGb *float64 `json:"diskSizeGb,omitempty" tf:"disk_size_gb,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default. + EnableConfidentialStorage *bool `json:"enableConfidentialStorage,omitempty" tf:"enable_confidential_storage,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageConfig *EphemeralStorageConfigInitParameters `json:"ephemeralStorageConfig,omitempty" tf:"ephemeral_storage_config,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageLocalSsdConfig *EphemeralStorageLocalSsdConfigInitParameters `json:"ephemeralStorageLocalSsdConfig,omitempty" tf:"ephemeral_storage_local_ssd_config,omitempty"` + + // Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + // Node Pool must enable gvnic. + // GKE version 1.25.2-gke.1700 or later. + // Structure is documented below. + FastSocket *FastSocketInitParameters `json:"fastSocket,omitempty" tf:"fast_socket,omitempty"` + + // Parameters for the Google Container Filesystem (GCFS). + // If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + // For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + // A machine_type that has more than 16 GiB of memory is also recommended. + // GCFS must be enabled in order to use image streaming. + // Structure is documented below. + GcfsConfig *GcfsConfigInitParameters `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // List of the type and count of accelerator cards attached to the instance. + // Structure documented below.12 this field is an + // Attribute as Block + GuestAccelerator []GuestAcceleratorInitParameters `json:"guestAccelerator,omitempty" tf:"guest_accelerator,omitempty"` + + // Google Virtual NIC (gVNIC) is a virtual network interface. + // Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + // gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + // GKE node version 1.15.11-gke.15 or later + // Structure is documented below. + Gvnic *GvnicInitParameters `json:"gvnic,omitempty" tf:"gvnic,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + HostMaintenancePolicy *HostMaintenancePolicyInitParameters `json:"hostMaintenancePolicy,omitempty" tf:"host_maintenance_policy,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // Kubelet configuration, currently supported attributes can be found here. + // Structure is documented below. + KubeletConfig *KubeletConfigInitParameters `json:"kubeletConfig,omitempty" tf:"kubelet_config,omitempty"` + + // The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + // reserved by Kubernetes Core components and cannot be specified. + // +mapType=granular + Labels map[string]*string `json:"labels,omitempty" tf:"labels,omitempty"` + + // Parameters that can be configured on Linux nodes. Structure is documented below. + LinuxNodeConfig *LinuxNodeConfigInitParameters `json:"linuxNodeConfig,omitempty" tf:"linux_node_config,omitempty"` + + // Parameters for the local NVMe SSDs. Structure is documented below. + LocalNvmeSsdBlockConfig *LocalNvmeSsdBlockConfigInitParameters `json:"localNvmeSsdBlockConfig,omitempty" tf:"local_nvme_ssd_block_config,omitempty"` + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` + + // wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` + + // The name of a Google Compute Engine machine type. + // Defaults to e2-medium. To create a custom machine type, value should be set as specified + // here. + MachineType *string `json:"machineType,omitempty" tf:"machine_type,omitempty"` + + // The metadata key/value pairs assigned to instances in + // the cluster. From GKE 1. To avoid this, set the + // value in your config. + // +mapType=granular + Metadata map[string]*string `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes. + NodeGroup *string `json:"nodeGroup,omitempty" tf:"node_group,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + // +listType=set + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // A boolean that represents whether or not the underlying node VMs + // are preemptible. See the official documentation + // for more information. Defaults to false. + Preemptible *bool `json:"preemptible,omitempty" tf:"preemptible,omitempty"` + + // The configuration of the desired reservation which instances could take capacity from. Structure is documented below. + ReservationAffinity *ReservationAffinityInitParameters `json:"reservationAffinity,omitempty" tf:"reservation_affinity,omitempty"` + + // The GCP labels (key/value pairs) to be applied to each node. Refer here + // for how these labels are applied to clusters, node pools and nodes. + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` + + // GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + // Structure is documented below. + SandboxConfig *SandboxConfigInitParameters `json:"sandboxConfig,omitempty" tf:"sandbox_config,omitempty"` + + // Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. gcfs_config must be enabled=true for this feature to work. min_master_version must also be set to use GKE 1.28.3-gke.106700 or later versions. + SecondaryBootDisks []SecondaryBootDisksInitParameters `json:"secondaryBootDisks,omitempty" tf:"secondary_boot_disks,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + ShieldedInstanceConfig *NodeConfigShieldedInstanceConfigInitParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Allows specifying multiple node affinities useful for running workloads on sole tenant nodes. node_affinity structure is documented below. + SoleTenantConfig *SoleTenantConfigInitParameters `json:"soleTenantConfig,omitempty" tf:"sole_tenant_config,omitempty"` + + // A boolean that represents whether the underlying node VMs are spot. + // See the official documentation + // for more information. Defaults to false. + Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // A list of + // Kubernetes taints + // to apply to nodes. Structure is documented below. + Taint []TaintInitParameters `json:"taint,omitempty" tf:"taint,omitempty"` + + // Metadata configuration to expose to workloads on the node pool. + // Structure is documented below. + WorkloadMetadataConfig *WorkloadMetadataConfigInitParameters `json:"workloadMetadataConfig,omitempty" tf:"workload_metadata_config,omitempty"` +} + +type NodeConfigKubeletConfigInitParameters struct { +} + +type NodeConfigKubeletConfigObservation struct { + + // If true, enables CPU CFS quota enforcement for + // containers that specify CPU limits. + CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty" tf:"cpu_cfs_quota,omitempty"` + + // The CPU CFS quota period value. Specified + // as a sequence of decimal numbers, each with optional fraction and a unit suffix, + // such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + // "h". The value must be a positive duration. + CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty" tf:"cpu_cfs_quota_period,omitempty"` + + // The CPU management policy on the node. See + // K8S CPU Management Policies. + // One of "none" or "static". Defaults to none when kubelet_config is unset. + CPUManagerPolicy *string `json:"cpuManagerPolicy,omitempty" tf:"cpu_manager_policy,omitempty"` + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` + + // Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304. + PodPidsLimit *float64 `json:"podPidsLimit,omitempty" tf:"pod_pids_limit,omitempty"` +} + +type NodeConfigKubeletConfigParameters struct { +} + +type NodeConfigLinuxNodeConfigInitParameters struct { +} + +type NodeConfigLinuxNodeConfigObservation struct { + + // Possible cgroup modes that can be used. + // Accepted values are: + CgroupMode *string `json:"cgroupMode,omitempty" tf:"cgroup_mode,omitempty"` + + // The Linux kernel parameters to be applied to the nodes + // and all pods running on the nodes. Specified as a map from the key, such as + // net.core.wmem_max, to a string value. Currently supported attributes can be found here. + // Note that validations happen all server side. All attributes are optional. + // +mapType=granular + Sysctls map[string]*string `json:"sysctls,omitempty" tf:"sysctls,omitempty"` +} + +type NodeConfigLinuxNodeConfigParameters struct { +} + +type NodeConfigLocalNvmeSsdBlockConfigInitParameters struct { +} + +type NodeConfigLocalNvmeSsdBlockConfigObservation struct { + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type NodeConfigLocalNvmeSsdBlockConfigParameters struct { +} + +type NodeConfigObservation struct { + + // Specifies options for controlling + // advanced machine features. Structure is documented below. + AdvancedMachineFeatures *AdvancedMachineFeaturesObservation `json:"advancedMachineFeatures,omitempty" tf:"advanced_machine_features,omitempty"` + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below. + ConfidentialNodes *NodeConfigConfidentialNodesObservation `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Parameters to customize containerd runtime. Structure is documented below. + ContainerdConfig *ContainerdConfigObservation `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // Size of the disk attached to each node, specified + // in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + DiskSizeGb *float64 `json:"diskSizeGb,omitempty" tf:"disk_size_gb,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // List of kubernetes taints applied to each node. Structure is documented above. + EffectiveTaints []EffectiveTaintsObservation `json:"effectiveTaints,omitempty" tf:"effective_taints,omitempty"` + + // Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default. + EnableConfidentialStorage *bool `json:"enableConfidentialStorage,omitempty" tf:"enable_confidential_storage,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageConfig *EphemeralStorageConfigObservation `json:"ephemeralStorageConfig,omitempty" tf:"ephemeral_storage_config,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageLocalSsdConfig *EphemeralStorageLocalSsdConfigObservation `json:"ephemeralStorageLocalSsdConfig,omitempty" tf:"ephemeral_storage_local_ssd_config,omitempty"` + + // Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + // Node Pool must enable gvnic. + // GKE version 1.25.2-gke.1700 or later. + // Structure is documented below. + FastSocket *FastSocketObservation `json:"fastSocket,omitempty" tf:"fast_socket,omitempty"` + + // Parameters for the Google Container Filesystem (GCFS). + // If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + // For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + // A machine_type that has more than 16 GiB of memory is also recommended. + // GCFS must be enabled in order to use image streaming. + // Structure is documented below. + GcfsConfig *GcfsConfigObservation `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // List of the type and count of accelerator cards attached to the instance. + // Structure documented below.12 this field is an + // Attribute as Block + GuestAccelerator []GuestAcceleratorObservation `json:"guestAccelerator,omitempty" tf:"guest_accelerator,omitempty"` + + // Google Virtual NIC (gVNIC) is a virtual network interface. + // Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + // gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + // GKE node version 1.15.11-gke.15 or later + // Structure is documented below. + Gvnic *GvnicObservation `json:"gvnic,omitempty" tf:"gvnic,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + HostMaintenancePolicy *HostMaintenancePolicyObservation `json:"hostMaintenancePolicy,omitempty" tf:"host_maintenance_policy,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // Kubelet configuration, currently supported attributes can be found here. + // Structure is documented below. + KubeletConfig *KubeletConfigObservation `json:"kubeletConfig,omitempty" tf:"kubelet_config,omitempty"` + + // The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + // reserved by Kubernetes Core components and cannot be specified. + // +mapType=granular + Labels map[string]*string `json:"labels,omitempty" tf:"labels,omitempty"` + + // Parameters that can be configured on Linux nodes. Structure is documented below. + LinuxNodeConfig *LinuxNodeConfigObservation `json:"linuxNodeConfig,omitempty" tf:"linux_node_config,omitempty"` + + // Parameters for the local NVMe SSDs. Structure is documented below. + LocalNvmeSsdBlockConfig *LocalNvmeSsdBlockConfigObservation `json:"localNvmeSsdBlockConfig,omitempty" tf:"local_nvme_ssd_block_config,omitempty"` + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` + + // wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` + + // The name of a Google Compute Engine machine type. + // Defaults to e2-medium. To create a custom machine type, value should be set as specified + // here. + MachineType *string `json:"machineType,omitempty" tf:"machine_type,omitempty"` + + // The metadata key/value pairs assigned to instances in + // the cluster. From GKE 1. To avoid this, set the + // value in your config. + // +mapType=granular + Metadata map[string]*string `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes. + NodeGroup *string `json:"nodeGroup,omitempty" tf:"node_group,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + // +listType=set + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // A boolean that represents whether or not the underlying node VMs + // are preemptible. See the official documentation + // for more information. Defaults to false. + Preemptible *bool `json:"preemptible,omitempty" tf:"preemptible,omitempty"` + + // The configuration of the desired reservation which instances could take capacity from. Structure is documented below. + ReservationAffinity *ReservationAffinityObservation `json:"reservationAffinity,omitempty" tf:"reservation_affinity,omitempty"` + + // The GCP labels (key/value pairs) to be applied to each node. Refer here + // for how these labels are applied to clusters, node pools and nodes. + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` + + // GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + // Structure is documented below. + SandboxConfig *SandboxConfigObservation `json:"sandboxConfig,omitempty" tf:"sandbox_config,omitempty"` + + // Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. gcfs_config must be enabled=true for this feature to work. min_master_version must also be set to use GKE 1.28.3-gke.106700 or later versions. + SecondaryBootDisks []SecondaryBootDisksObservation `json:"secondaryBootDisks,omitempty" tf:"secondary_boot_disks,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + ShieldedInstanceConfig *NodeConfigShieldedInstanceConfigObservation `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Allows specifying multiple node affinities useful for running workloads on sole tenant nodes. node_affinity structure is documented below. + SoleTenantConfig *SoleTenantConfigObservation `json:"soleTenantConfig,omitempty" tf:"sole_tenant_config,omitempty"` + + // A boolean that represents whether the underlying node VMs are spot. + // See the official documentation + // for more information. Defaults to false. + Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // A list of + // Kubernetes taints + // to apply to nodes. Structure is documented below. + Taint []TaintObservation `json:"taint,omitempty" tf:"taint,omitempty"` + + // Metadata configuration to expose to workloads on the node pool. + // Structure is documented below. + WorkloadMetadataConfig *WorkloadMetadataConfigObservation `json:"workloadMetadataConfig,omitempty" tf:"workload_metadata_config,omitempty"` +} + +type NodeConfigParameters struct { + + // Specifies options for controlling + // advanced machine features. Structure is documented below. + // +kubebuilder:validation:Optional + AdvancedMachineFeatures *AdvancedMachineFeaturesParameters `json:"advancedMachineFeatures,omitempty" tf:"advanced_machine_features,omitempty"` + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + // +kubebuilder:validation:Optional + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below. + // +kubebuilder:validation:Optional + ConfidentialNodes *NodeConfigConfidentialNodesParameters `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Parameters to customize containerd runtime. Structure is documented below. + // +kubebuilder:validation:Optional + ContainerdConfig *ContainerdConfigParameters `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // Size of the disk attached to each node, specified + // in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + // +kubebuilder:validation:Optional + DiskSizeGb *float64 `json:"diskSizeGb,omitempty" tf:"disk_size_gb,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + // +kubebuilder:validation:Optional + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default. + // +kubebuilder:validation:Optional + EnableConfidentialStorage *bool `json:"enableConfidentialStorage,omitempty" tf:"enable_confidential_storage,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + // +kubebuilder:validation:Optional + EphemeralStorageConfig *EphemeralStorageConfigParameters `json:"ephemeralStorageConfig,omitempty" tf:"ephemeral_storage_config,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + // +kubebuilder:validation:Optional + EphemeralStorageLocalSsdConfig *EphemeralStorageLocalSsdConfigParameters `json:"ephemeralStorageLocalSsdConfig,omitempty" tf:"ephemeral_storage_local_ssd_config,omitempty"` + + // Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + // Node Pool must enable gvnic. + // GKE version 1.25.2-gke.1700 or later. + // Structure is documented below. + // +kubebuilder:validation:Optional + FastSocket *FastSocketParameters `json:"fastSocket,omitempty" tf:"fast_socket,omitempty"` + + // Parameters for the Google Container Filesystem (GCFS). + // If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + // For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + // A machine_type that has more than 16 GiB of memory is also recommended. + // GCFS must be enabled in order to use image streaming. + // Structure is documented below. + // +kubebuilder:validation:Optional + GcfsConfig *GcfsConfigParameters `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // List of the type and count of accelerator cards attached to the instance. + // Structure documented below.12 this field is an + // Attribute as Block + // +kubebuilder:validation:Optional + GuestAccelerator []GuestAcceleratorParameters `json:"guestAccelerator,omitempty" tf:"guest_accelerator,omitempty"` + + // Google Virtual NIC (gVNIC) is a virtual network interface. + // Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + // gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + // GKE node version 1.15.11-gke.15 or later + // Structure is documented below. + // +kubebuilder:validation:Optional + Gvnic *GvnicParameters `json:"gvnic,omitempty" tf:"gvnic,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + // +kubebuilder:validation:Optional + HostMaintenancePolicy *HostMaintenancePolicyParameters `json:"hostMaintenancePolicy,omitempty" tf:"host_maintenance_policy,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + // +kubebuilder:validation:Optional + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // Kubelet configuration, currently supported attributes can be found here. + // Structure is documented below. + // +kubebuilder:validation:Optional + KubeletConfig *KubeletConfigParameters `json:"kubeletConfig,omitempty" tf:"kubelet_config,omitempty"` + + // The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + // reserved by Kubernetes Core components and cannot be specified. + // +kubebuilder:validation:Optional + // +mapType=granular + Labels map[string]*string `json:"labels,omitempty" tf:"labels,omitempty"` + + // Parameters that can be configured on Linux nodes. Structure is documented below. + // +kubebuilder:validation:Optional + LinuxNodeConfig *LinuxNodeConfigParameters `json:"linuxNodeConfig,omitempty" tf:"linux_node_config,omitempty"` + + // Parameters for the local NVMe SSDs. Structure is documented below. + // +kubebuilder:validation:Optional + LocalNvmeSsdBlockConfig *LocalNvmeSsdBlockConfigParameters `json:"localNvmeSsdBlockConfig,omitempty" tf:"local_nvme_ssd_block_config,omitempty"` + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + // +kubebuilder:validation:Optional + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` + + // wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + // +kubebuilder:validation:Optional + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` + + // The name of a Google Compute Engine machine type. + // Defaults to e2-medium. To create a custom machine type, value should be set as specified + // here. + // +kubebuilder:validation:Optional + MachineType *string `json:"machineType,omitempty" tf:"machine_type,omitempty"` + + // The metadata key/value pairs assigned to instances in + // the cluster. From GKE 1. To avoid this, set the + // value in your config. + // +kubebuilder:validation:Optional + // +mapType=granular + Metadata map[string]*string `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + // +kubebuilder:validation:Optional + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes. + // +kubebuilder:validation:Optional + NodeGroup *string `json:"nodeGroup,omitempty" tf:"node_group,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + // +kubebuilder:validation:Optional + // +listType=set + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // A boolean that represents whether or not the underlying node VMs + // are preemptible. See the official documentation + // for more information. Defaults to false. + // +kubebuilder:validation:Optional + Preemptible *bool `json:"preemptible,omitempty" tf:"preemptible,omitempty"` + + // The configuration of the desired reservation which instances could take capacity from. Structure is documented below. + // +kubebuilder:validation:Optional + ReservationAffinity *ReservationAffinityParameters `json:"reservationAffinity,omitempty" tf:"reservation_affinity,omitempty"` + + // The GCP labels (key/value pairs) to be applied to each node. Refer here + // for how these labels are applied to clusters, node pools and nodes. + // +kubebuilder:validation:Optional + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +kubebuilder:validation:Optional + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` + + // GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + // Structure is documented below. + // +kubebuilder:validation:Optional + SandboxConfig *SandboxConfigParameters `json:"sandboxConfig,omitempty" tf:"sandbox_config,omitempty"` + + // Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. gcfs_config must be enabled=true for this feature to work. min_master_version must also be set to use GKE 1.28.3-gke.106700 or later versions. + // +kubebuilder:validation:Optional + SecondaryBootDisks []SecondaryBootDisksParameters `json:"secondaryBootDisks,omitempty" tf:"secondary_boot_disks,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + // +kubebuilder:validation:Optional + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + // +kubebuilder:validation:Optional + ShieldedInstanceConfig *NodeConfigShieldedInstanceConfigParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Allows specifying multiple node affinities useful for running workloads on sole tenant nodes. node_affinity structure is documented below. + // +kubebuilder:validation:Optional + SoleTenantConfig *SoleTenantConfigParameters `json:"soleTenantConfig,omitempty" tf:"sole_tenant_config,omitempty"` + + // A boolean that represents whether the underlying node VMs are spot. + // See the official documentation + // for more information. Defaults to false. + // +kubebuilder:validation:Optional + Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // A list of + // Kubernetes taints + // to apply to nodes. Structure is documented below. + // +kubebuilder:validation:Optional + Taint []TaintParameters `json:"taint,omitempty" tf:"taint,omitempty"` + + // Metadata configuration to expose to workloads on the node pool. + // Structure is documented below. + // +kubebuilder:validation:Optional + WorkloadMetadataConfig *WorkloadMetadataConfigParameters `json:"workloadMetadataConfig,omitempty" tf:"workload_metadata_config,omitempty"` +} + +type NodeConfigReservationAffinityInitParameters struct { +} + +type NodeConfigReservationAffinityObservation struct { + + // The type of reservation consumption + // Accepted values are: + ConsumeReservationType *string `json:"consumeReservationType,omitempty" tf:"consume_reservation_type,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // name" + // +listType=set + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type NodeConfigReservationAffinityParameters struct { +} + +type NodeConfigSandboxConfigInitParameters struct { +} + +type NodeConfigSandboxConfigObservation struct { + + // Which sandbox to use for pods in the node pool. + // Accepted values are: + SandboxType *string `json:"sandboxType,omitempty" tf:"sandbox_type,omitempty"` +} + +type NodeConfigSandboxConfigParameters struct { +} + +type NodeConfigSecondaryBootDisksInitParameters struct { +} + +type NodeConfigSecondaryBootDisksObservation struct { + + // Path to disk image to create the secondary boot disk from. After using the gke-disk-image-builder, this argument should be global/images/DISK_IMAGE_NAME. + DiskImage *string `json:"diskImage,omitempty" tf:"disk_image,omitempty"` + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type NodeConfigSecondaryBootDisksParameters struct { +} + +type NodeConfigShieldedInstanceConfigInitParameters struct { + + // Defines if the instance has integrity monitoring enabled. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type NodeConfigShieldedInstanceConfigObservation struct { + + // Defines if the instance has integrity monitoring enabled. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type NodeConfigShieldedInstanceConfigParameters struct { + + // Defines if the instance has integrity monitoring enabled. + // +kubebuilder:validation:Optional + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + // +kubebuilder:validation:Optional + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type NodeConfigSoleTenantConfigInitParameters struct { +} + +type NodeConfigSoleTenantConfigObservation struct { + NodeAffinity []SoleTenantConfigNodeAffinityObservation `json:"nodeAffinity,omitempty" tf:"node_affinity,omitempty"` +} + +type NodeConfigSoleTenantConfigParameters struct { +} + +type NodeConfigTaintInitParameters struct { +} + +type NodeConfigTaintObservation struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Value for taint. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type NodeConfigTaintParameters struct { +} + +type NodeConfigWorkloadMetadataConfigInitParameters struct { +} + +type NodeConfigWorkloadMetadataConfigObservation struct { + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type NodeConfigWorkloadMetadataConfigParameters struct { +} + +type NodeKubeletConfigInitParameters struct { + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` +} + +type NodeKubeletConfigObservation struct { + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` +} + +type NodeKubeletConfigParameters struct { + + // Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to FALSE. Possible values: TRUE, FALSE. + // +kubebuilder:validation:Optional + InsecureKubeletReadonlyPortEnabled *string `json:"insecureKubeletReadonlyPortEnabled,omitempty" tf:"insecure_kubelet_readonly_port_enabled,omitempty"` +} + +type NodePoolAutoConfigInitParameters struct { + + // The network tag config for the cluster's automatically provisioned node pools. Structure is documented below. + NetworkTags *NetworkTagsInitParameters `json:"networkTags,omitempty" tf:"network_tags,omitempty"` + + // Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + // Structure is documented below. + NodeKubeletConfig *NodeKubeletConfigInitParameters `json:"nodeKubeletConfig,omitempty" tf:"node_kubelet_config,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` +} + +type NodePoolAutoConfigObservation struct { + + // The network tag config for the cluster's automatically provisioned node pools. Structure is documented below. + NetworkTags *NetworkTagsObservation `json:"networkTags,omitempty" tf:"network_tags,omitempty"` + + // Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + // Structure is documented below. + NodeKubeletConfig *NodeKubeletConfigObservation `json:"nodeKubeletConfig,omitempty" tf:"node_kubelet_config,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` +} + +type NodePoolAutoConfigParameters struct { + + // The network tag config for the cluster's automatically provisioned node pools. Structure is documented below. + // +kubebuilder:validation:Optional + NetworkTags *NetworkTagsParameters `json:"networkTags,omitempty" tf:"network_tags,omitempty"` + + // Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + // Structure is documented below. + // +kubebuilder:validation:Optional + NodeKubeletConfig *NodeKubeletConfigParameters `json:"nodeKubeletConfig,omitempty" tf:"node_kubelet_config,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +kubebuilder:validation:Optional + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` +} + +type NodePoolDefaultsInitParameters struct { + + // Subset of NodeConfig message that has defaults. + NodeConfigDefaults *NodeConfigDefaultsInitParameters `json:"nodeConfigDefaults,omitempty" tf:"node_config_defaults,omitempty"` +} + +type NodePoolDefaultsObservation struct { + + // Subset of NodeConfig message that has defaults. + NodeConfigDefaults *NodeConfigDefaultsObservation `json:"nodeConfigDefaults,omitempty" tf:"node_config_defaults,omitempty"` +} + +type NodePoolDefaultsParameters struct { + + // Subset of NodeConfig message that has defaults. + // +kubebuilder:validation:Optional + NodeConfigDefaults *NodeConfigDefaultsParameters `json:"nodeConfigDefaults,omitempty" tf:"node_config_defaults,omitempty"` +} + +type NodePoolInitParameters struct { +} + +type NodePoolManagementInitParameters struct { +} + +type NodePoolManagementObservation struct { + + // Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered. + AutoRepair *bool `json:"autoRepair,omitempty" tf:"auto_repair,omitempty"` + + // Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes. + AutoUpgrade *bool `json:"autoUpgrade,omitempty" tf:"auto_upgrade,omitempty"` +} + +type NodePoolManagementParameters struct { +} + +type NodePoolNodeConfigConfidentialNodesInitParameters struct { +} + +type NodePoolNodeConfigConfidentialNodesObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type NodePoolNodeConfigConfidentialNodesParameters struct { +} + +type NodePoolNodeConfigInitParameters struct { +} + +type NodePoolNodeConfigObservation struct { + + // Specifies options for controlling + // advanced machine features. Structure is documented below. + AdvancedMachineFeatures *NodeConfigAdvancedMachineFeaturesObservation `json:"advancedMachineFeatures,omitempty" tf:"advanced_machine_features,omitempty"` + + // The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption + BootDiskKMSKey *string `json:"bootDiskKmsKey,omitempty" tf:"boot_disk_kms_key,omitempty"` + + // Configuration for Confidential Nodes feature. Structure is documented below. + ConfidentialNodes *NodePoolNodeConfigConfidentialNodesObservation `json:"confidentialNodes,omitempty" tf:"confidential_nodes,omitempty"` + + // Parameters to customize containerd runtime. Structure is documented below. + ContainerdConfig *NodeConfigContainerdConfigObservation `json:"containerdConfig,omitempty" tf:"containerd_config,omitempty"` + + // Size of the disk attached to each node, specified + // in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + DiskSizeGb *float64 `json:"diskSizeGb,omitempty" tf:"disk_size_gb,omitempty"` + + // Type of the disk attached to each node + // (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + DiskType *string `json:"diskType,omitempty" tf:"disk_type,omitempty"` + + // List of kubernetes taints applied to each node. Structure is documented above. + EffectiveTaints []NodeConfigEffectiveTaintsObservation `json:"effectiveTaints,omitempty" tf:"effective_taints,omitempty"` + + // Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default. + EnableConfidentialStorage *bool `json:"enableConfidentialStorage,omitempty" tf:"enable_confidential_storage,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageConfig *NodeConfigEphemeralStorageConfigObservation `json:"ephemeralStorageConfig,omitempty" tf:"ephemeral_storage_config,omitempty"` + + // Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below. + EphemeralStorageLocalSsdConfig *NodeConfigEphemeralStorageLocalSsdConfigObservation `json:"ephemeralStorageLocalSsdConfig,omitempty" tf:"ephemeral_storage_local_ssd_config,omitempty"` + + // Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + // Node Pool must enable gvnic. + // GKE version 1.25.2-gke.1700 or later. + // Structure is documented below. + FastSocket *NodeConfigFastSocketObservation `json:"fastSocket,omitempty" tf:"fast_socket,omitempty"` + + // The default Google Container Filesystem (GCFS) configuration at the cluster level. e.g. enable image streaming across all the node pools within the cluster. Structure is documented below. + GcfsConfig *NodeConfigGcfsConfigObservation `json:"gcfsConfig,omitempty" tf:"gcfs_config,omitempty"` + + // List of the type and count of accelerator cards attached to the instance. + // Structure documented below.12 this field is an + // Attribute as Block + GuestAccelerator []NodeConfigGuestAcceleratorObservation `json:"guestAccelerator,omitempty" tf:"guest_accelerator,omitempty"` + + // Google Virtual NIC (gVNIC) is a virtual network interface. + // Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + // gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + // GKE node version 1.15.11-gke.15 or later + // Structure is documented below. + Gvnic *NodeConfigGvnicObservation `json:"gvnic,omitempty" tf:"gvnic,omitempty"` + + // The maintenance policy to use for the cluster. Structure is + // documented below. + HostMaintenancePolicy *NodeConfigHostMaintenancePolicyObservation `json:"hostMaintenancePolicy,omitempty" tf:"host_maintenance_policy,omitempty"` + + // The image type to use for this node. Note that changing the image type + // will delete and recreate all nodes in the node pool. + ImageType *string `json:"imageType,omitempty" tf:"image_type,omitempty"` + + // Kubelet configuration, currently supported attributes can be found here. + // Structure is documented below. + KubeletConfig *NodeConfigKubeletConfigObservation `json:"kubeletConfig,omitempty" tf:"kubelet_config,omitempty"` + + // The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + // reserved by Kubernetes Core components and cannot be specified. + // +mapType=granular + Labels map[string]*string `json:"labels,omitempty" tf:"labels,omitempty"` + + // Parameters that can be configured on Linux nodes. Structure is documented below. + LinuxNodeConfig *NodeConfigLinuxNodeConfigObservation `json:"linuxNodeConfig,omitempty" tf:"linux_node_config,omitempty"` + + // Parameters for the local NVMe SSDs. Structure is documented below. + LocalNvmeSsdBlockConfig *NodeConfigLocalNvmeSsdBlockConfigObservation `json:"localNvmeSsdBlockConfig,omitempty" tf:"local_nvme_ssd_block_config,omitempty"` + + // The amount of local SSD disks that will be + // attached to each cluster node. Defaults to 0. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` + + // The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. See Increasing logging agent throughput for more information. + LoggingVariant *string `json:"loggingVariant,omitempty" tf:"logging_variant,omitempty"` + + // The name of a Google Compute Engine machine type. + // Defaults to e2-medium. To create a custom machine type, value should be set as specified + // here. + MachineType *string `json:"machineType,omitempty" tf:"machine_type,omitempty"` + + // The metadata key/value pairs assigned to instances in + // the cluster. From GKE 1. To avoid this, set the + // value in your config. + // +mapType=granular + Metadata map[string]*string `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // Minimum CPU platform to be used by this instance. + // The instance may be scheduled on the specified or newer CPU platform. Applicable + // values are the friendly names of CPU platforms, such as Intel Haswell. See the + // official documentation + // for more information. + MinCPUPlatform *string `json:"minCpuPlatform,omitempty" tf:"min_cpu_platform,omitempty"` + + // Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes. + NodeGroup *string `json:"nodeGroup,omitempty" tf:"node_group,omitempty"` + + // The set of Google API scopes to be made available + // on all of the node VMs under the "default" service account. + // Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + // +listType=set + OAuthScopes []*string `json:"oauthScopes,omitempty" tf:"oauth_scopes,omitempty"` + + // A boolean that represents whether or not the underlying node VMs + // are preemptible. See the official documentation + // for more information. Defaults to false. + Preemptible *bool `json:"preemptible,omitempty" tf:"preemptible,omitempty"` + + // The configuration of the desired reservation which instances could take capacity from. Structure is documented below. + ReservationAffinity *NodeConfigReservationAffinityObservation `json:"reservationAffinity,omitempty" tf:"reservation_affinity,omitempty"` + + // The GCE resource labels (a map of key/value pairs) to be applied to the cluster. + // +mapType=granular + ResourceLabels map[string]*string `json:"resourceLabels,omitempty" tf:"resource_labels,omitempty"` + + // A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found here. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + // +mapType=granular + ResourceManagerTags map[string]*string `json:"resourceManagerTags,omitempty" tf:"resource_manager_tags,omitempty"` + + // GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + // Structure is documented below. + SandboxConfig *NodeConfigSandboxConfigObservation `json:"sandboxConfig,omitempty" tf:"sandbox_config,omitempty"` + + // Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. gcfs_config must be enabled=true for this feature to work. min_master_version must also be set to use GKE 1.28.3-gke.106700 or later versions. + SecondaryBootDisks []NodeConfigSecondaryBootDisksObservation `json:"secondaryBootDisks,omitempty" tf:"secondary_boot_disks,omitempty"` + + // The service account to be used by the Node VMs. + // If not specified, the "default" service account is used. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // Shielded Instance options. Structure is documented below. + ShieldedInstanceConfig *NodePoolNodeConfigShieldedInstanceConfigObservation `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Allows specifying multiple node affinities useful for running workloads on sole tenant nodes. node_affinity structure is documented below. + SoleTenantConfig *NodeConfigSoleTenantConfigObservation `json:"soleTenantConfig,omitempty" tf:"sole_tenant_config,omitempty"` + + // A boolean that represents whether the underlying node VMs are spot. + // See the official documentation + // for more information. Defaults to false. + Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + + // The list of instance tags applied to all nodes. Tags are used to identify + // valid sources or targets for network firewalls. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // A list of + // Kubernetes taints + // to apply to nodes. Structure is documented below. + Taint []NodeConfigTaintObservation `json:"taint,omitempty" tf:"taint,omitempty"` + + // Metadata configuration to expose to workloads on the node pool. + // Structure is documented below. + WorkloadMetadataConfig *NodeConfigWorkloadMetadataConfigObservation `json:"workloadMetadataConfig,omitempty" tf:"workload_metadata_config,omitempty"` +} + +type NodePoolNodeConfigParameters struct { +} + +type NodePoolNodeConfigShieldedInstanceConfigInitParameters struct { +} + +type NodePoolNodeConfigShieldedInstanceConfigObservation struct { + + // Defines if the instance has integrity monitoring enabled. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type NodePoolNodeConfigShieldedInstanceConfigParameters struct { +} + +type NodePoolObservation struct { + Autoscaling *AutoscalingObservation `json:"autoscaling,omitempty" tf:"autoscaling,omitempty"` + + // The number of nodes to create in this + // cluster's default node pool. In regional or multi-zonal clusters, this is the + // number of nodes per zone. Must be set if node_pool is not set. If you're using + // google_container_node_pool objects with no default node pool, you'll need to + // set this to a value of at least 1, alongside setting + // remove_default_node_pool to true. + InitialNodeCount *float64 `json:"initialNodeCount,omitempty" tf:"initial_node_count,omitempty"` + + InstanceGroupUrls []*string `json:"instanceGroupUrls,omitempty" tf:"instance_group_urls,omitempty"` + + ManagedInstanceGroupUrls []*string `json:"managedInstanceGroupUrls,omitempty" tf:"managed_instance_group_urls,omitempty"` + + // NodeManagement configuration for this NodePool. Structure is documented below. + Management *NodePoolManagementObservation `json:"management,omitempty" tf:"management,omitempty"` + + MaxPodsPerNode *float64 `json:"maxPodsPerNode,omitempty" tf:"max_pods_per_node,omitempty"` + + // The name of the cluster, unique within the project and + // location. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + NamePrefix *string `json:"namePrefix,omitempty" tf:"name_prefix,omitempty"` + + NetworkConfig *NetworkConfigObservation `json:"networkConfig,omitempty" tf:"network_config,omitempty"` + + // Parameters used in creating the default node pool. Structure is documented below. + NodeConfig *NodePoolNodeConfigObservation `json:"nodeConfig,omitempty" tf:"node_config,omitempty"` + + NodeCount *float64 `json:"nodeCount,omitempty" tf:"node_count,omitempty"` + + // The list of zones in which the cluster's nodes + // are located. Nodes must be in the region of their regional cluster or in the + // same region as their cluster's zone for zonal clusters. If this is specified for + // a zonal cluster, omit the cluster's zone. + // +listType=set + NodeLocations []*string `json:"nodeLocations,omitempty" tf:"node_locations,omitempty"` + + PlacementPolicy *PlacementPolicyObservation `json:"placementPolicy,omitempty" tf:"placement_policy,omitempty"` + + QueuedProvisioning *QueuedProvisioningObservation `json:"queuedProvisioning,omitempty" tf:"queued_provisioning,omitempty"` + + // Specifies the upgrade settings for NAP created node pools. Structure is documented below. + UpgradeSettings *NodePoolUpgradeSettingsObservation `json:"upgradeSettings,omitempty" tf:"upgrade_settings,omitempty"` + + Version *string `json:"version,omitempty" tf:"version,omitempty"` +} + +type NodePoolParameters struct { +} + +type NodePoolUpgradeSettingsInitParameters struct { +} + +type NodePoolUpgradeSettingsObservation struct { + + // Settings for blue-green upgrade strategy. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + BlueGreenSettings *UpgradeSettingsBlueGreenSettingsObservation `json:"blueGreenSettings,omitempty" tf:"blue_green_settings,omitempty"` + + // The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxSurge *float64 `json:"maxSurge,omitempty" tf:"max_surge,omitempty"` + + // The maximum number of nodes that can be simultaneously unavailable during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxUnavailable *float64 `json:"maxUnavailable,omitempty" tf:"max_unavailable,omitempty"` + + // Strategy used for node pool update. Strategy can only be one of BLUE_GREEN or SURGE. The default is value is SURGE. + Strategy *string `json:"strategy,omitempty" tf:"strategy,omitempty"` +} + +type NodePoolUpgradeSettingsParameters struct { +} + +type NotificationConfigInitParameters struct { + + // The pubsub config for the cluster's upgrade notifications. + Pubsub *PubsubInitParameters `json:"pubsub,omitempty" tf:"pubsub,omitempty"` +} + +type NotificationConfigObservation struct { + + // The pubsub config for the cluster's upgrade notifications. + Pubsub *PubsubObservation `json:"pubsub,omitempty" tf:"pubsub,omitempty"` +} + +type NotificationConfigParameters struct { + + // The pubsub config for the cluster's upgrade notifications. + // +kubebuilder:validation:Optional + Pubsub *PubsubParameters `json:"pubsub" tf:"pubsub,omitempty"` +} + +type PlacementPolicyInitParameters struct { +} + +type PlacementPolicyObservation struct { + + // The name of the cluster, unique within the project and + // location. + PolicyName *string `json:"policyName,omitempty" tf:"policy_name,omitempty"` + + TpuTopology *string `json:"tpuTopology,omitempty" tf:"tpu_topology,omitempty"` + + // The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type PlacementPolicyParameters struct { +} + +type PodCidrOverprovisionConfigInitParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type PodCidrOverprovisionConfigObservation struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` +} + +type PodCidrOverprovisionConfigParameters struct { + + // The status of the Istio addon, which makes it easy to set up Istio for services in a + // cluster. It is disabled by default. Set disabled = false to enable. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled" tf:"disabled,omitempty"` +} + +type PodSecurityPolicyConfigInitParameters struct { + + // Enable the PodSecurityPolicy controller for this cluster. + // If enabled, pods must be valid under a PodSecurityPolicy to be created. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PodSecurityPolicyConfigObservation struct { + + // Enable the PodSecurityPolicy controller for this cluster. + // If enabled, pods must be valid under a PodSecurityPolicy to be created. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PodSecurityPolicyConfigParameters struct { + + // Enable the PodSecurityPolicy controller for this cluster. + // If enabled, pods must be valid under a PodSecurityPolicy to be created. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type PrivateClusterConfigInitParameters struct { + + // When true, the cluster's private + // endpoint is used as the cluster endpoint and access through the public endpoint + // is disabled. When false, either endpoint can be used. This field only applies + // to private clusters, when enable_private_nodes is true. + EnablePrivateEndpoint *bool `json:"enablePrivateEndpoint,omitempty" tf:"enable_private_endpoint,omitempty"` + + // Enables the private cluster feature, + // creating a private endpoint on the cluster. In a private cluster, nodes only + // have RFC 1918 private addresses and communicate with the master's private + // endpoint via private networking. + EnablePrivateNodes *bool `json:"enablePrivateNodes,omitempty" tf:"enable_private_nodes,omitempty"` + + // Controls cluster master global + // access settings. Structure is documented below. + MasterGlobalAccessConfig *MasterGlobalAccessConfigInitParameters `json:"masterGlobalAccessConfig,omitempty" tf:"master_global_access_config,omitempty"` + + // The IP range in CIDR notation to use for + // the hosted master network. This range will be used for assigning private IP + // addresses to the cluster master(s) and the ILB VIP. This range must not overlap + // with any other ranges in use within the cluster's network, and it must be a /28 + // subnet. See Private Cluster Limitations + // for more details. This field only applies to private clusters, when + // enable_private_nodes is true. + MasterIPv4CidrBlock *string `json:"masterIpv4CidrBlock,omitempty" tf:"master_ipv4_cidr_block,omitempty"` + + // Subnetwork in cluster's network where master's endpoint will be provisioned. + PrivateEndpointSubnetwork *string `json:"privateEndpointSubnetwork,omitempty" tf:"private_endpoint_subnetwork,omitempty"` +} + +type PrivateClusterConfigObservation struct { + + // When true, the cluster's private + // endpoint is used as the cluster endpoint and access through the public endpoint + // is disabled. When false, either endpoint can be used. This field only applies + // to private clusters, when enable_private_nodes is true. + EnablePrivateEndpoint *bool `json:"enablePrivateEndpoint,omitempty" tf:"enable_private_endpoint,omitempty"` + + // Enables the private cluster feature, + // creating a private endpoint on the cluster. In a private cluster, nodes only + // have RFC 1918 private addresses and communicate with the master's private + // endpoint via private networking. + EnablePrivateNodes *bool `json:"enablePrivateNodes,omitempty" tf:"enable_private_nodes,omitempty"` + + // Controls cluster master global + // access settings. Structure is documented below. + MasterGlobalAccessConfig *MasterGlobalAccessConfigObservation `json:"masterGlobalAccessConfig,omitempty" tf:"master_global_access_config,omitempty"` + + // The IP range in CIDR notation to use for + // the hosted master network. This range will be used for assigning private IP + // addresses to the cluster master(s) and the ILB VIP. This range must not overlap + // with any other ranges in use within the cluster's network, and it must be a /28 + // subnet. See Private Cluster Limitations + // for more details. This field only applies to private clusters, when + // enable_private_nodes is true. + MasterIPv4CidrBlock *string `json:"masterIpv4CidrBlock,omitempty" tf:"master_ipv4_cidr_block,omitempty"` + + // The name of the peering between this cluster and the Google owned VPC. + PeeringName *string `json:"peeringName,omitempty" tf:"peering_name,omitempty"` + + // The internal IP address of this cluster's master endpoint. + PrivateEndpoint *string `json:"privateEndpoint,omitempty" tf:"private_endpoint,omitempty"` + + // Subnetwork in cluster's network where master's endpoint will be provisioned. + PrivateEndpointSubnetwork *string `json:"privateEndpointSubnetwork,omitempty" tf:"private_endpoint_subnetwork,omitempty"` + + // The external IP address of this cluster's master endpoint. + PublicEndpoint *string `json:"publicEndpoint,omitempty" tf:"public_endpoint,omitempty"` +} + +type PrivateClusterConfigParameters struct { + + // When true, the cluster's private + // endpoint is used as the cluster endpoint and access through the public endpoint + // is disabled. When false, either endpoint can be used. This field only applies + // to private clusters, when enable_private_nodes is true. + // +kubebuilder:validation:Optional + EnablePrivateEndpoint *bool `json:"enablePrivateEndpoint,omitempty" tf:"enable_private_endpoint,omitempty"` + + // Enables the private cluster feature, + // creating a private endpoint on the cluster. In a private cluster, nodes only + // have RFC 1918 private addresses and communicate with the master's private + // endpoint via private networking. + // +kubebuilder:validation:Optional + EnablePrivateNodes *bool `json:"enablePrivateNodes,omitempty" tf:"enable_private_nodes,omitempty"` + + // Controls cluster master global + // access settings. Structure is documented below. + // +kubebuilder:validation:Optional + MasterGlobalAccessConfig *MasterGlobalAccessConfigParameters `json:"masterGlobalAccessConfig,omitempty" tf:"master_global_access_config,omitempty"` + + // The IP range in CIDR notation to use for + // the hosted master network. This range will be used for assigning private IP + // addresses to the cluster master(s) and the ILB VIP. This range must not overlap + // with any other ranges in use within the cluster's network, and it must be a /28 + // subnet. See Private Cluster Limitations + // for more details. This field only applies to private clusters, when + // enable_private_nodes is true. + // +kubebuilder:validation:Optional + MasterIPv4CidrBlock *string `json:"masterIpv4CidrBlock,omitempty" tf:"master_ipv4_cidr_block,omitempty"` + + // Subnetwork in cluster's network where master's endpoint will be provisioned. + // +kubebuilder:validation:Optional + PrivateEndpointSubnetwork *string `json:"privateEndpointSubnetwork,omitempty" tf:"private_endpoint_subnetwork,omitempty"` +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters struct { + SecretURI *string `json:"secretUri,omitempty" tf:"secret_uri,omitempty"` +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation struct { + SecretURI *string `json:"secretUri,omitempty" tf:"secret_uri,omitempty"` +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters struct { + + // +kubebuilder:validation:Optional + SecretURI *string `json:"secretUri" tf:"secret_uri,omitempty"` +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters struct { +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation struct { + Fqdns []*string `json:"fqdns,omitempty" tf:"fqdns,omitempty"` + + GCPSecretManagerCertificateConfig *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation `json:"gcpSecretManagerCertificateConfig,omitempty" tf:"gcp_secret_manager_certificate_config,omitempty"` +} + +type PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters struct { +} + +type PrivateRegistryAccessConfigInitParameters struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + CertificateAuthorityDomainConfig []CertificateAuthorityDomainConfigInitParameters `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PrivateRegistryAccessConfigObservation struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + CertificateAuthorityDomainConfig []CertificateAuthorityDomainConfigObservation `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PrivateRegistryAccessConfigParameters struct { + + // List of configuration objects for CA and domains. Each object identifies a certificate and its assigned domains. See how to configure for private container registries for more detail. Example: + // +kubebuilder:validation:Optional + CertificateAuthorityDomainConfig []CertificateAuthorityDomainConfigParameters `json:"certificateAuthorityDomainConfig,omitempty" tf:"certificate_authority_domain_config,omitempty"` + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type ProtectConfigInitParameters struct { + + // WorkloadConfig defines which actions are enabled for a cluster's workload configurations. Structure is documented below + WorkloadConfig *WorkloadConfigInitParameters `json:"workloadConfig,omitempty" tf:"workload_config,omitempty"` + + // Sets which mode to use for Protect workload vulnerability scanning feature. Accepted values are DISABLED, BASIC. + WorkloadVulnerabilityMode *string `json:"workloadVulnerabilityMode,omitempty" tf:"workload_vulnerability_mode,omitempty"` +} + +type ProtectConfigObservation struct { + + // WorkloadConfig defines which actions are enabled for a cluster's workload configurations. Structure is documented below + WorkloadConfig *WorkloadConfigObservation `json:"workloadConfig,omitempty" tf:"workload_config,omitempty"` + + // Sets which mode to use for Protect workload vulnerability scanning feature. Accepted values are DISABLED, BASIC. + WorkloadVulnerabilityMode *string `json:"workloadVulnerabilityMode,omitempty" tf:"workload_vulnerability_mode,omitempty"` +} + +type ProtectConfigParameters struct { + + // WorkloadConfig defines which actions are enabled for a cluster's workload configurations. Structure is documented below + // +kubebuilder:validation:Optional + WorkloadConfig *WorkloadConfigParameters `json:"workloadConfig,omitempty" tf:"workload_config,omitempty"` + + // Sets which mode to use for Protect workload vulnerability scanning feature. Accepted values are DISABLED, BASIC. + // +kubebuilder:validation:Optional + WorkloadVulnerabilityMode *string `json:"workloadVulnerabilityMode,omitempty" tf:"workload_vulnerability_mode,omitempty"` +} + +type PubsubInitParameters struct { + + // Whether or not the notification config is enabled + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Structure is documented below. + Filter *FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // The pubsub topic to push upgrade notifications to. Must be in the same project as the cluster. Must be in the format: projects/{project}/topics/{topic}. + Topic *string `json:"topic,omitempty" tf:"topic,omitempty"` +} + +type PubsubObservation struct { + + // Whether or not the notification config is enabled + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Structure is documented below. + Filter *FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // The pubsub topic to push upgrade notifications to. Must be in the same project as the cluster. Must be in the format: projects/{project}/topics/{topic}. + Topic *string `json:"topic,omitempty" tf:"topic,omitempty"` +} + +type PubsubParameters struct { + + // Whether or not the notification config is enabled + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` + + // Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Structure is documented below. + // +kubebuilder:validation:Optional + Filter *FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // The pubsub topic to push upgrade notifications to. Must be in the same project as the cluster. Must be in the format: projects/{project}/topics/{topic}. + // +kubebuilder:validation:Optional + Topic *string `json:"topic,omitempty" tf:"topic,omitempty"` +} + +type QueuedProvisioningInitParameters struct { +} + +type QueuedProvisioningObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type QueuedProvisioningParameters struct { +} + +type RayClusterLoggingConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type RayClusterLoggingConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type RayClusterLoggingConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type RayClusterMonitoringConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type RayClusterMonitoringConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type RayClusterMonitoringConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type RayOperatorConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + RayClusterLoggingConfig *RayClusterLoggingConfigInitParameters `json:"rayClusterLoggingConfig,omitempty" tf:"ray_cluster_logging_config,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + RayClusterMonitoringConfig *RayClusterMonitoringConfigInitParameters `json:"rayClusterMonitoringConfig,omitempty" tf:"ray_cluster_monitoring_config,omitempty"` +} + +type RayOperatorConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + RayClusterLoggingConfig *RayClusterLoggingConfigObservation `json:"rayClusterLoggingConfig,omitempty" tf:"ray_cluster_logging_config,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + RayClusterMonitoringConfig *RayClusterMonitoringConfigObservation `json:"rayClusterMonitoringConfig,omitempty" tf:"ray_cluster_monitoring_config,omitempty"` +} + +type RayOperatorConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` + + // Logging configuration for the cluster. + // Structure is documented below. + // +kubebuilder:validation:Optional + RayClusterLoggingConfig *RayClusterLoggingConfigParameters `json:"rayClusterLoggingConfig,omitempty" tf:"ray_cluster_logging_config,omitempty"` + + // Monitoring configuration for the cluster. + // Structure is documented below. + // +kubebuilder:validation:Optional + RayClusterMonitoringConfig *RayClusterMonitoringConfigParameters `json:"rayClusterMonitoringConfig,omitempty" tf:"ray_cluster_monitoring_config,omitempty"` +} + +type RecurringWindowInitParameters struct { + EndTime *string `json:"endTime,omitempty" tf:"end_time,omitempty"` + + Recurrence *string `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type RecurringWindowObservation struct { + EndTime *string `json:"endTime,omitempty" tf:"end_time,omitempty"` + + Recurrence *string `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + StartTime *string `json:"startTime,omitempty" tf:"start_time,omitempty"` +} + +type RecurringWindowParameters struct { + + // +kubebuilder:validation:Optional + EndTime *string `json:"endTime" tf:"end_time,omitempty"` + + // +kubebuilder:validation:Optional + Recurrence *string `json:"recurrence" tf:"recurrence,omitempty"` + + // +kubebuilder:validation:Optional + StartTime *string `json:"startTime" tf:"start_time,omitempty"` +} + +type ReleaseChannelInitParameters struct { + + // The selected release channel. + // Accepted values are: + Channel *string `json:"channel,omitempty" tf:"channel,omitempty"` +} + +type ReleaseChannelObservation struct { + + // The selected release channel. + // Accepted values are: + Channel *string `json:"channel,omitempty" tf:"channel,omitempty"` +} + +type ReleaseChannelParameters struct { + + // The selected release channel. + // Accepted values are: + // +kubebuilder:validation:Optional + Channel *string `json:"channel" tf:"channel,omitempty"` +} + +type ReservationAffinityInitParameters struct { + + // The type of reservation consumption + // Accepted values are: + ConsumeReservationType *string `json:"consumeReservationType,omitempty" tf:"consume_reservation_type,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // name" + // +listType=set + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type ReservationAffinityObservation struct { + + // The type of reservation consumption + // Accepted values are: + ConsumeReservationType *string `json:"consumeReservationType,omitempty" tf:"consume_reservation_type,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // name" + // +listType=set + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type ReservationAffinityParameters struct { + + // The type of reservation consumption + // Accepted values are: + // +kubebuilder:validation:Optional + ConsumeReservationType *string `json:"consumeReservationType" tf:"consume_reservation_type,omitempty"` + + // Key for taint. + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // name" + // +kubebuilder:validation:Optional + // +listType=set + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type ResourceLimitsInitParameters struct { + + // Maximum amount of the resource in the cluster. + Maximum *float64 `json:"maximum,omitempty" tf:"maximum,omitempty"` + + // Minimum amount of the resource in the cluster. + Minimum *float64 `json:"minimum,omitempty" tf:"minimum,omitempty"` + + // The type of the resource. For example, cpu and + // memory. See the guide to using Node Auto-Provisioning + // for a list of types. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` +} + +type ResourceLimitsObservation struct { + + // Maximum amount of the resource in the cluster. + Maximum *float64 `json:"maximum,omitempty" tf:"maximum,omitempty"` + + // Minimum amount of the resource in the cluster. + Minimum *float64 `json:"minimum,omitempty" tf:"minimum,omitempty"` + + // The type of the resource. For example, cpu and + // memory. See the guide to using Node Auto-Provisioning + // for a list of types. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` +} + +type ResourceLimitsParameters struct { + + // Maximum amount of the resource in the cluster. + // +kubebuilder:validation:Optional + Maximum *float64 `json:"maximum,omitempty" tf:"maximum,omitempty"` + + // Minimum amount of the resource in the cluster. + // +kubebuilder:validation:Optional + Minimum *float64 `json:"minimum,omitempty" tf:"minimum,omitempty"` + + // The type of the resource. For example, cpu and + // memory. See the guide to using Node Auto-Provisioning + // for a list of types. + // +kubebuilder:validation:Optional + ResourceType *string `json:"resourceType" tf:"resource_type,omitempty"` +} + +type ResourceUsageExportConfigInitParameters struct { + + // Parameters for using BigQuery as the destination of resource usage export. + BigqueryDestination *BigqueryDestinationInitParameters `json:"bigqueryDestination,omitempty" tf:"bigquery_destination,omitempty"` + + // Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + // in the cluster to meter network egress traffic. + EnableNetworkEgressMetering *bool `json:"enableNetworkEgressMetering,omitempty" tf:"enable_network_egress_metering,omitempty"` + + // Whether to enable resource + // consumption metering on this cluster. When enabled, a table will be created in + // the resource export BigQuery dataset to store resource consumption data. The + // resulting table can be joined with the resource usage table or with BigQuery + // billing export. Defaults to true. + EnableResourceConsumptionMetering *bool `json:"enableResourceConsumptionMetering,omitempty" tf:"enable_resource_consumption_metering,omitempty"` +} + +type ResourceUsageExportConfigObservation struct { + + // Parameters for using BigQuery as the destination of resource usage export. + BigqueryDestination *BigqueryDestinationObservation `json:"bigqueryDestination,omitempty" tf:"bigquery_destination,omitempty"` + + // Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + // in the cluster to meter network egress traffic. + EnableNetworkEgressMetering *bool `json:"enableNetworkEgressMetering,omitempty" tf:"enable_network_egress_metering,omitempty"` + + // Whether to enable resource + // consumption metering on this cluster. When enabled, a table will be created in + // the resource export BigQuery dataset to store resource consumption data. The + // resulting table can be joined with the resource usage table or with BigQuery + // billing export. Defaults to true. + EnableResourceConsumptionMetering *bool `json:"enableResourceConsumptionMetering,omitempty" tf:"enable_resource_consumption_metering,omitempty"` +} + +type ResourceUsageExportConfigParameters struct { + + // Parameters for using BigQuery as the destination of resource usage export. + // +kubebuilder:validation:Optional + BigqueryDestination *BigqueryDestinationParameters `json:"bigqueryDestination" tf:"bigquery_destination,omitempty"` + + // Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + // in the cluster to meter network egress traffic. + // +kubebuilder:validation:Optional + EnableNetworkEgressMetering *bool `json:"enableNetworkEgressMetering,omitempty" tf:"enable_network_egress_metering,omitempty"` + + // Whether to enable resource + // consumption metering on this cluster. When enabled, a table will be created in + // the resource export BigQuery dataset to store resource consumption data. The + // resulting table can be joined with the resource usage table or with BigQuery + // billing export. Defaults to true. + // +kubebuilder:validation:Optional + EnableResourceConsumptionMetering *bool `json:"enableResourceConsumptionMetering,omitempty" tf:"enable_resource_consumption_metering,omitempty"` +} + +type SandboxConfigInitParameters struct { + + // Which sandbox to use for pods in the node pool. + // Accepted values are: + SandboxType *string `json:"sandboxType,omitempty" tf:"sandbox_type,omitempty"` +} + +type SandboxConfigObservation struct { + + // Which sandbox to use for pods in the node pool. + // Accepted values are: + SandboxType *string `json:"sandboxType,omitempty" tf:"sandbox_type,omitempty"` +} + +type SandboxConfigParameters struct { + + // Which sandbox to use for pods in the node pool. + // Accepted values are: + // +kubebuilder:validation:Optional + SandboxType *string `json:"sandboxType" tf:"sandbox_type,omitempty"` +} + +type SecondaryBootDisksInitParameters struct { + + // Path to disk image to create the secondary boot disk from. After using the gke-disk-image-builder, this argument should be global/images/DISK_IMAGE_NAME. + DiskImage *string `json:"diskImage,omitempty" tf:"disk_image,omitempty"` + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type SecondaryBootDisksObservation struct { + + // Path to disk image to create the secondary boot disk from. After using the gke-disk-image-builder, this argument should be global/images/DISK_IMAGE_NAME. + DiskImage *string `json:"diskImage,omitempty" tf:"disk_image,omitempty"` + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type SecondaryBootDisksParameters struct { + + // Path to disk image to create the secondary boot disk from. After using the gke-disk-image-builder, this argument should be global/images/DISK_IMAGE_NAME. + // +kubebuilder:validation:Optional + DiskImage *string `json:"diskImage" tf:"disk_image,omitempty"` + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + // +kubebuilder:validation:Optional + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type SecretManagerConfigInitParameters struct { + + // Enable the Secret Manager add-on for this cluster. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SecretManagerConfigObservation struct { + + // Enable the Secret Manager add-on for this cluster. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SecretManagerConfigParameters struct { + + // Enable the Secret Manager add-on for this cluster. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type SecurityPostureConfigInitParameters struct { + + // Sets the mode of the Kubernetes security posture API's off-cluster features. Available options include DISABLED, BASIC, and ENTERPRISE. + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` + + // Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Available options include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and VULNERABILITY_ENTERPRISE. + VulnerabilityMode *string `json:"vulnerabilityMode,omitempty" tf:"vulnerability_mode,omitempty"` +} + +type SecurityPostureConfigObservation struct { + + // Sets the mode of the Kubernetes security posture API's off-cluster features. Available options include DISABLED, BASIC, and ENTERPRISE. + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` + + // Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Available options include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and VULNERABILITY_ENTERPRISE. + VulnerabilityMode *string `json:"vulnerabilityMode,omitempty" tf:"vulnerability_mode,omitempty"` +} + +type SecurityPostureConfigParameters struct { + + // Sets the mode of the Kubernetes security posture API's off-cluster features. Available options include DISABLED, BASIC, and ENTERPRISE. + // +kubebuilder:validation:Optional + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` + + // Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Available options include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and VULNERABILITY_ENTERPRISE. + // +kubebuilder:validation:Optional + VulnerabilityMode *string `json:"vulnerabilityMode,omitempty" tf:"vulnerability_mode,omitempty"` +} + +type ServiceExternalIpsConfigInitParameters struct { + + // Controls whether external ips specified by a service will be allowed. It is enabled by default. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ServiceExternalIpsConfigObservation struct { + + // Controls whether external ips specified by a service will be allowed. It is enabled by default. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type ServiceExternalIpsConfigParameters struct { + + // Controls whether external ips specified by a service will be allowed. It is enabled by default. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type ShieldedInstanceConfigInitParameters struct { + + // Defines if the instance has integrity monitoring enabled. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigObservation struct { + + // Defines if the instance has integrity monitoring enabled. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigParameters struct { + + // Defines if the instance has integrity monitoring enabled. + // +kubebuilder:validation:Optional + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Defines if the instance has Secure Boot enabled. + // +kubebuilder:validation:Optional + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type SoleTenantConfigInitParameters struct { + NodeAffinity []NodeAffinityInitParameters `json:"nodeAffinity,omitempty" tf:"node_affinity,omitempty"` +} + +type SoleTenantConfigNodeAffinityInitParameters struct { +} + +type SoleTenantConfigNodeAffinityObservation struct { + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Specifies affinity or anti-affinity. Accepted values are "IN" or "NOT_IN" + Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + + // name" + Values []*string `json:"values,omitempty" tf:"values,omitempty"` +} + +type SoleTenantConfigNodeAffinityParameters struct { +} + +type SoleTenantConfigObservation struct { + NodeAffinity []NodeAffinityObservation `json:"nodeAffinity,omitempty" tf:"node_affinity,omitempty"` +} + +type SoleTenantConfigParameters struct { + + // +kubebuilder:validation:Optional + NodeAffinity []NodeAffinityParameters `json:"nodeAffinity" tf:"node_affinity,omitempty"` +} + +type StandardRolloutPolicyInitParameters struct { + + // Number of blue nodes to drain in a batch. Only one of the batch_percentage or batch_node_count can be specified. + BatchNodeCount *float64 `json:"batchNodeCount,omitempty" tf:"batch_node_count,omitempty"` + + // : Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0). Only one of the batch_percentage or batch_node_count can be specified. + BatchPercentage *float64 `json:"batchPercentage,omitempty" tf:"batch_percentage,omitempty"` + + // Soak time after each batch gets drained. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".`. + BatchSoakDuration *string `json:"batchSoakDuration,omitempty" tf:"batch_soak_duration,omitempty"` +} + +type StandardRolloutPolicyObservation struct { + + // Number of blue nodes to drain in a batch. Only one of the batch_percentage or batch_node_count can be specified. + BatchNodeCount *float64 `json:"batchNodeCount,omitempty" tf:"batch_node_count,omitempty"` + + // : Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0). Only one of the batch_percentage or batch_node_count can be specified. + BatchPercentage *float64 `json:"batchPercentage,omitempty" tf:"batch_percentage,omitempty"` + + // Soak time after each batch gets drained. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".`. + BatchSoakDuration *string `json:"batchSoakDuration,omitempty" tf:"batch_soak_duration,omitempty"` +} + +type StandardRolloutPolicyParameters struct { + + // Number of blue nodes to drain in a batch. Only one of the batch_percentage or batch_node_count can be specified. + // +kubebuilder:validation:Optional + BatchNodeCount *float64 `json:"batchNodeCount,omitempty" tf:"batch_node_count,omitempty"` + + // : Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0). Only one of the batch_percentage or batch_node_count can be specified. + // +kubebuilder:validation:Optional + BatchPercentage *float64 `json:"batchPercentage,omitempty" tf:"batch_percentage,omitempty"` + + // Soak time after each batch gets drained. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".`. + // +kubebuilder:validation:Optional + BatchSoakDuration *string `json:"batchSoakDuration,omitempty" tf:"batch_soak_duration,omitempty"` +} + +type StatefulHaConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type StatefulHaConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type StatefulHaConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type TaintInitParameters struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Value for taint. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TaintObservation struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // Key for taint. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Value for taint. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TaintParameters struct { + + // Effect for taint. Accepted values are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + // +kubebuilder:validation:Optional + Effect *string `json:"effect" tf:"effect,omitempty"` + + // Key for taint. + // +kubebuilder:validation:Optional + Key *string `json:"key" tf:"key,omitempty"` + + // Value for taint. + // +kubebuilder:validation:Optional + Value *string `json:"value" tf:"value,omitempty"` +} + +type TpuConfigInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + UseServiceNetworking *bool `json:"useServiceNetworking,omitempty" tf:"use_service_networking,omitempty"` +} + +type TpuConfigObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + IPv4CidrBlock *string `json:"ipv4CidrBlock,omitempty" tf:"ipv4_cidr_block,omitempty"` + + UseServiceNetworking *bool `json:"useServiceNetworking,omitempty" tf:"use_service_networking,omitempty"` +} + +type TpuConfigParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` + + // +kubebuilder:validation:Optional + UseServiceNetworking *bool `json:"useServiceNetworking,omitempty" tf:"use_service_networking,omitempty"` +} + +type UpgradeOptionsInitParameters struct { +} + +type UpgradeOptionsObservation struct { + AutoUpgradeStartTime *string `json:"autoUpgradeStartTime,omitempty" tf:"auto_upgrade_start_time,omitempty"` + + // Description of the cluster. + Description *string `json:"description,omitempty" tf:"description,omitempty"` +} + +type UpgradeOptionsParameters struct { +} + +type UpgradeSettingsBlueGreenSettingsInitParameters struct { +} + +type UpgradeSettingsBlueGreenSettingsObservation struct { + + // Time needed after draining entire blue pool. After this period, blue pool will be cleaned up. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". + NodePoolSoakDuration *string `json:"nodePoolSoakDuration,omitempty" tf:"node_pool_soak_duration,omitempty"` + + // green upgrade. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + StandardRolloutPolicy *BlueGreenSettingsStandardRolloutPolicyObservation `json:"standardRolloutPolicy,omitempty" tf:"standard_rollout_policy,omitempty"` +} + +type UpgradeSettingsBlueGreenSettingsParameters struct { +} + +type UpgradeSettingsInitParameters struct { + + // Settings for blue-green upgrade strategy. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + BlueGreenSettings *BlueGreenSettingsInitParameters `json:"blueGreenSettings,omitempty" tf:"blue_green_settings,omitempty"` + + // The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxSurge *float64 `json:"maxSurge,omitempty" tf:"max_surge,omitempty"` + + // The maximum number of nodes that can be simultaneously unavailable during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxUnavailable *float64 `json:"maxUnavailable,omitempty" tf:"max_unavailable,omitempty"` + + // Strategy used for node pool update. Strategy can only be one of BLUE_GREEN or SURGE. The default is value is SURGE. + Strategy *string `json:"strategy,omitempty" tf:"strategy,omitempty"` +} + +type UpgradeSettingsObservation struct { + + // Settings for blue-green upgrade strategy. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + BlueGreenSettings *BlueGreenSettingsObservation `json:"blueGreenSettings,omitempty" tf:"blue_green_settings,omitempty"` + + // The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxSurge *float64 `json:"maxSurge,omitempty" tf:"max_surge,omitempty"` + + // The maximum number of nodes that can be simultaneously unavailable during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + MaxUnavailable *float64 `json:"maxUnavailable,omitempty" tf:"max_unavailable,omitempty"` + + // Strategy used for node pool update. Strategy can only be one of BLUE_GREEN or SURGE. The default is value is SURGE. + Strategy *string `json:"strategy,omitempty" tf:"strategy,omitempty"` +} + +type UpgradeSettingsParameters struct { + + // Settings for blue-green upgrade strategy. To be specified when strategy is set to BLUE_GREEN. Structure is documented below. + // +kubebuilder:validation:Optional + BlueGreenSettings *BlueGreenSettingsParameters `json:"blueGreenSettings,omitempty" tf:"blue_green_settings,omitempty"` + + // The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + // +kubebuilder:validation:Optional + MaxSurge *float64 `json:"maxSurge,omitempty" tf:"max_surge,omitempty"` + + // The maximum number of nodes that can be simultaneously unavailable during the upgrade process. To be used when strategy is set to SURGE. Default is 0. + // +kubebuilder:validation:Optional + MaxUnavailable *float64 `json:"maxUnavailable,omitempty" tf:"max_unavailable,omitempty"` + + // Strategy used for node pool update. Strategy can only be one of BLUE_GREEN or SURGE. The default is value is SURGE. + // +kubebuilder:validation:Optional + Strategy *string `json:"strategy,omitempty" tf:"strategy,omitempty"` +} + +type VerticalPodAutoscalingInitParameters struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type VerticalPodAutoscalingObservation struct { + + // Enables vertical pod autoscaling + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type VerticalPodAutoscalingParameters struct { + + // Enables vertical pod autoscaling + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` +} + +type WorkloadAltsConfigInitParameters struct { + + // Whether the alts handshaker should be enabled or not for direct-path. Requires Workload Identity (workloadPool must be non-empty). + EnableAlts *bool `json:"enableAlts,omitempty" tf:"enable_alts,omitempty"` +} + +type WorkloadAltsConfigObservation struct { + + // Whether the alts handshaker should be enabled or not for direct-path. Requires Workload Identity (workloadPool must be non-empty). + EnableAlts *bool `json:"enableAlts,omitempty" tf:"enable_alts,omitempty"` +} + +type WorkloadAltsConfigParameters struct { + + // Whether the alts handshaker should be enabled or not for direct-path. Requires Workload Identity (workloadPool must be non-empty). + // +kubebuilder:validation:Optional + EnableAlts *bool `json:"enableAlts" tf:"enable_alts,omitempty"` +} + +type WorkloadConfigInitParameters struct { + + // Sets which mode of auditing should be used for the cluster's workloads. Accepted values are DISABLED, BASIC. + AuditMode *string `json:"auditMode,omitempty" tf:"audit_mode,omitempty"` +} + +type WorkloadConfigObservation struct { + + // Sets which mode of auditing should be used for the cluster's workloads. Accepted values are DISABLED, BASIC. + AuditMode *string `json:"auditMode,omitempty" tf:"audit_mode,omitempty"` +} + +type WorkloadConfigParameters struct { + + // Sets which mode of auditing should be used for the cluster's workloads. Accepted values are DISABLED, BASIC. + // +kubebuilder:validation:Optional + AuditMode *string `json:"auditMode" tf:"audit_mode,omitempty"` +} + +type WorkloadIdentityConfigInitParameters struct { + + // The workload pool to attach all Kubernetes service accounts to. + WorkloadPool *string `json:"workloadPool,omitempty" tf:"workload_pool,omitempty"` +} + +type WorkloadIdentityConfigObservation struct { + + // The workload pool to attach all Kubernetes service accounts to. + WorkloadPool *string `json:"workloadPool,omitempty" tf:"workload_pool,omitempty"` +} + +type WorkloadIdentityConfigParameters struct { + + // The workload pool to attach all Kubernetes service accounts to. + // +kubebuilder:validation:Optional + WorkloadPool *string `json:"workloadPool,omitempty" tf:"workload_pool,omitempty"` +} + +type WorkloadMetadataConfigInitParameters struct { + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type WorkloadMetadataConfigObservation struct { + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + Mode *string `json:"mode,omitempty" tf:"mode,omitempty"` +} + +type WorkloadMetadataConfigParameters struct { + + // How to expose the node metadata to the workload running on the node. + // Accepted values are: + // +kubebuilder:validation:Optional + Mode *string `json:"mode" tf:"mode,omitempty"` +} + +// ClusterSpec defines the desired state of Cluster +type ClusterSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ClusterParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ClusterInitParameters `json:"initProvider,omitempty"` +} + +// ClusterStatus defines the observed state of Cluster. +type ClusterStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ClusterObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status + +// Cluster is the Schema for the Clusters API. Creates a Google Kubernetes Engine (GKE) cluster. +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,gcp-beta} +type Cluster struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ClusterSpec `json:"spec"` + Status ClusterStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ClusterList contains a list of Clusters +type ClusterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Cluster `json:"items"` +} + +// Repository type metadata. +var ( + Cluster_Kind = "Cluster" + Cluster_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Cluster_Kind}.String() + Cluster_KindAPIVersion = Cluster_Kind + "." + CRDGroupVersion.String() + Cluster_GroupVersionKind = CRDGroupVersion.WithKind(Cluster_Kind) +) + +func init() { + SchemeBuilder.Register(&Cluster{}, &ClusterList{}) +} diff --git a/apis/container/v1beta1/zz_generated.conversion_hubs.go b/apis/container/v1beta2/zz_generated.conversion_hubs.go similarity index 93% rename from apis/container/v1beta1/zz_generated.conversion_hubs.go rename to apis/container/v1beta2/zz_generated.conversion_hubs.go index 9f962ca..5640ab6 100755 --- a/apis/container/v1beta1/zz_generated.conversion_hubs.go +++ b/apis/container/v1beta2/zz_generated.conversion_hubs.go @@ -4,7 +4,7 @@ // Code generated by upjet. DO NOT EDIT. -package v1beta1 +package v1beta2 // Hub marks this type as a conversion hub. func (tr *Cluster) Hub() {} diff --git a/apis/container/v1beta2/zz_generated.deepcopy.go b/apis/container/v1beta2/zz_generated.deepcopy.go new file mode 100644 index 0000000..1beb582 --- /dev/null +++ b/apis/container/v1beta2/zz_generated.deepcopy.go @@ -0,0 +1,13375 @@ +//go:build !ignore_autogenerated + +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta2 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalNodeNetworkConfigsInitParameters) DeepCopyInto(out *AdditionalNodeNetworkConfigsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalNodeNetworkConfigsInitParameters. +func (in *AdditionalNodeNetworkConfigsInitParameters) DeepCopy() *AdditionalNodeNetworkConfigsInitParameters { + if in == nil { + return nil + } + out := new(AdditionalNodeNetworkConfigsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalNodeNetworkConfigsObservation) DeepCopyInto(out *AdditionalNodeNetworkConfigsObservation) { + *out = *in + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalNodeNetworkConfigsObservation. +func (in *AdditionalNodeNetworkConfigsObservation) DeepCopy() *AdditionalNodeNetworkConfigsObservation { + if in == nil { + return nil + } + out := new(AdditionalNodeNetworkConfigsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalNodeNetworkConfigsParameters) DeepCopyInto(out *AdditionalNodeNetworkConfigsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalNodeNetworkConfigsParameters. +func (in *AdditionalNodeNetworkConfigsParameters) DeepCopy() *AdditionalNodeNetworkConfigsParameters { + if in == nil { + return nil + } + out := new(AdditionalNodeNetworkConfigsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodNetworkConfigsInitParameters) DeepCopyInto(out *AdditionalPodNetworkConfigsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodNetworkConfigsInitParameters. +func (in *AdditionalPodNetworkConfigsInitParameters) DeepCopy() *AdditionalPodNetworkConfigsInitParameters { + if in == nil { + return nil + } + out := new(AdditionalPodNetworkConfigsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodNetworkConfigsObservation) DeepCopyInto(out *AdditionalPodNetworkConfigsObservation) { + *out = *in + if in.MaxPodsPerNode != nil { + in, out := &in.MaxPodsPerNode, &out.MaxPodsPerNode + *out = new(float64) + **out = **in + } + if in.SecondaryPodRange != nil { + in, out := &in.SecondaryPodRange, &out.SecondaryPodRange + *out = new(string) + **out = **in + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodNetworkConfigsObservation. +func (in *AdditionalPodNetworkConfigsObservation) DeepCopy() *AdditionalPodNetworkConfigsObservation { + if in == nil { + return nil + } + out := new(AdditionalPodNetworkConfigsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodNetworkConfigsParameters) DeepCopyInto(out *AdditionalPodNetworkConfigsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodNetworkConfigsParameters. +func (in *AdditionalPodNetworkConfigsParameters) DeepCopy() *AdditionalPodNetworkConfigsParameters { + if in == nil { + return nil + } + out := new(AdditionalPodNetworkConfigsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodRangesConfigInitParameters) DeepCopyInto(out *AdditionalPodRangesConfigInitParameters) { + *out = *in + if in.PodRangeNames != nil { + in, out := &in.PodRangeNames, &out.PodRangeNames + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodRangesConfigInitParameters. +func (in *AdditionalPodRangesConfigInitParameters) DeepCopy() *AdditionalPodRangesConfigInitParameters { + if in == nil { + return nil + } + out := new(AdditionalPodRangesConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodRangesConfigObservation) DeepCopyInto(out *AdditionalPodRangesConfigObservation) { + *out = *in + if in.PodRangeNames != nil { + in, out := &in.PodRangeNames, &out.PodRangeNames + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodRangesConfigObservation. +func (in *AdditionalPodRangesConfigObservation) DeepCopy() *AdditionalPodRangesConfigObservation { + if in == nil { + return nil + } + out := new(AdditionalPodRangesConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdditionalPodRangesConfigParameters) DeepCopyInto(out *AdditionalPodRangesConfigParameters) { + *out = *in + if in.PodRangeNames != nil { + in, out := &in.PodRangeNames, &out.PodRangeNames + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalPodRangesConfigParameters. +func (in *AdditionalPodRangesConfigParameters) DeepCopy() *AdditionalPodRangesConfigParameters { + if in == nil { + return nil + } + out := new(AdditionalPodRangesConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AddonsConfigInitParameters) DeepCopyInto(out *AddonsConfigInitParameters) { + *out = *in + if in.CloudrunConfig != nil { + in, out := &in.CloudrunConfig, &out.CloudrunConfig + *out = new(CloudrunConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ConfigConnectorConfig != nil { + in, out := &in.ConfigConnectorConfig, &out.ConfigConnectorConfig + *out = new(ConfigConnectorConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DNSCacheConfig != nil { + in, out := &in.DNSCacheConfig, &out.DNSCacheConfig + *out = new(DNSCacheConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GCPFilestoreCsiDriverConfig != nil { + in, out := &in.GCPFilestoreCsiDriverConfig, &out.GCPFilestoreCsiDriverConfig + *out = new(GCPFilestoreCsiDriverConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GcePersistentDiskCsiDriverConfig != nil { + in, out := &in.GcePersistentDiskCsiDriverConfig, &out.GcePersistentDiskCsiDriverConfig + *out = new(GcePersistentDiskCsiDriverConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GcsFuseCsiDriverConfig != nil { + in, out := &in.GcsFuseCsiDriverConfig, &out.GcsFuseCsiDriverConfig + *out = new(GcsFuseCsiDriverConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GkeBackupAgentConfig != nil { + in, out := &in.GkeBackupAgentConfig, &out.GkeBackupAgentConfig + *out = new(GkeBackupAgentConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.HTTPLoadBalancing != nil { + in, out := &in.HTTPLoadBalancing, &out.HTTPLoadBalancing + *out = new(HTTPLoadBalancingInitParameters) + (*in).DeepCopyInto(*out) + } + if in.HorizontalPodAutoscaling != nil { + in, out := &in.HorizontalPodAutoscaling, &out.HorizontalPodAutoscaling + *out = new(HorizontalPodAutoscalingInitParameters) + (*in).DeepCopyInto(*out) + } + if in.IstioConfig != nil { + in, out := &in.IstioConfig, &out.IstioConfig + *out = new(IstioConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.KalmConfig != nil { + in, out := &in.KalmConfig, &out.KalmConfig + *out = new(KalmConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NetworkPolicyConfig != nil { + in, out := &in.NetworkPolicyConfig, &out.NetworkPolicyConfig + *out = new(NetworkPolicyConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RayOperatorConfig != nil { + in, out := &in.RayOperatorConfig, &out.RayOperatorConfig + *out = make([]RayOperatorConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatefulHaConfig != nil { + in, out := &in.StatefulHaConfig, &out.StatefulHaConfig + *out = new(StatefulHaConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddonsConfigInitParameters. +func (in *AddonsConfigInitParameters) DeepCopy() *AddonsConfigInitParameters { + if in == nil { + return nil + } + out := new(AddonsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AddonsConfigObservation) DeepCopyInto(out *AddonsConfigObservation) { + *out = *in + if in.CloudrunConfig != nil { + in, out := &in.CloudrunConfig, &out.CloudrunConfig + *out = new(CloudrunConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ConfigConnectorConfig != nil { + in, out := &in.ConfigConnectorConfig, &out.ConfigConnectorConfig + *out = new(ConfigConnectorConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.DNSCacheConfig != nil { + in, out := &in.DNSCacheConfig, &out.DNSCacheConfig + *out = new(DNSCacheConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GCPFilestoreCsiDriverConfig != nil { + in, out := &in.GCPFilestoreCsiDriverConfig, &out.GCPFilestoreCsiDriverConfig + *out = new(GCPFilestoreCsiDriverConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GcePersistentDiskCsiDriverConfig != nil { + in, out := &in.GcePersistentDiskCsiDriverConfig, &out.GcePersistentDiskCsiDriverConfig + *out = new(GcePersistentDiskCsiDriverConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GcsFuseCsiDriverConfig != nil { + in, out := &in.GcsFuseCsiDriverConfig, &out.GcsFuseCsiDriverConfig + *out = new(GcsFuseCsiDriverConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GkeBackupAgentConfig != nil { + in, out := &in.GkeBackupAgentConfig, &out.GkeBackupAgentConfig + *out = new(GkeBackupAgentConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.HTTPLoadBalancing != nil { + in, out := &in.HTTPLoadBalancing, &out.HTTPLoadBalancing + *out = new(HTTPLoadBalancingObservation) + (*in).DeepCopyInto(*out) + } + if in.HorizontalPodAutoscaling != nil { + in, out := &in.HorizontalPodAutoscaling, &out.HorizontalPodAutoscaling + *out = new(HorizontalPodAutoscalingObservation) + (*in).DeepCopyInto(*out) + } + if in.IstioConfig != nil { + in, out := &in.IstioConfig, &out.IstioConfig + *out = new(IstioConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.KalmConfig != nil { + in, out := &in.KalmConfig, &out.KalmConfig + *out = new(KalmConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.NetworkPolicyConfig != nil { + in, out := &in.NetworkPolicyConfig, &out.NetworkPolicyConfig + *out = new(NetworkPolicyConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.RayOperatorConfig != nil { + in, out := &in.RayOperatorConfig, &out.RayOperatorConfig + *out = make([]RayOperatorConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatefulHaConfig != nil { + in, out := &in.StatefulHaConfig, &out.StatefulHaConfig + *out = new(StatefulHaConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddonsConfigObservation. +func (in *AddonsConfigObservation) DeepCopy() *AddonsConfigObservation { + if in == nil { + return nil + } + out := new(AddonsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AddonsConfigParameters) DeepCopyInto(out *AddonsConfigParameters) { + *out = *in + if in.CloudrunConfig != nil { + in, out := &in.CloudrunConfig, &out.CloudrunConfig + *out = new(CloudrunConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ConfigConnectorConfig != nil { + in, out := &in.ConfigConnectorConfig, &out.ConfigConnectorConfig + *out = new(ConfigConnectorConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.DNSCacheConfig != nil { + in, out := &in.DNSCacheConfig, &out.DNSCacheConfig + *out = new(DNSCacheConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GCPFilestoreCsiDriverConfig != nil { + in, out := &in.GCPFilestoreCsiDriverConfig, &out.GCPFilestoreCsiDriverConfig + *out = new(GCPFilestoreCsiDriverConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GcePersistentDiskCsiDriverConfig != nil { + in, out := &in.GcePersistentDiskCsiDriverConfig, &out.GcePersistentDiskCsiDriverConfig + *out = new(GcePersistentDiskCsiDriverConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GcsFuseCsiDriverConfig != nil { + in, out := &in.GcsFuseCsiDriverConfig, &out.GcsFuseCsiDriverConfig + *out = new(GcsFuseCsiDriverConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GkeBackupAgentConfig != nil { + in, out := &in.GkeBackupAgentConfig, &out.GkeBackupAgentConfig + *out = new(GkeBackupAgentConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.HTTPLoadBalancing != nil { + in, out := &in.HTTPLoadBalancing, &out.HTTPLoadBalancing + *out = new(HTTPLoadBalancingParameters) + (*in).DeepCopyInto(*out) + } + if in.HorizontalPodAutoscaling != nil { + in, out := &in.HorizontalPodAutoscaling, &out.HorizontalPodAutoscaling + *out = new(HorizontalPodAutoscalingParameters) + (*in).DeepCopyInto(*out) + } + if in.IstioConfig != nil { + in, out := &in.IstioConfig, &out.IstioConfig + *out = new(IstioConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.KalmConfig != nil { + in, out := &in.KalmConfig, &out.KalmConfig + *out = new(KalmConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.NetworkPolicyConfig != nil { + in, out := &in.NetworkPolicyConfig, &out.NetworkPolicyConfig + *out = new(NetworkPolicyConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.RayOperatorConfig != nil { + in, out := &in.RayOperatorConfig, &out.RayOperatorConfig + *out = make([]RayOperatorConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatefulHaConfig != nil { + in, out := &in.StatefulHaConfig, &out.StatefulHaConfig + *out = new(StatefulHaConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddonsConfigParameters. +func (in *AddonsConfigParameters) DeepCopy() *AddonsConfigParameters { + if in == nil { + return nil + } + out := new(AddonsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedDatapathObservabilityConfigInitParameters) DeepCopyInto(out *AdvancedDatapathObservabilityConfigInitParameters) { + *out = *in + if in.EnableMetrics != nil { + in, out := &in.EnableMetrics, &out.EnableMetrics + *out = new(bool) + **out = **in + } + if in.EnableRelay != nil { + in, out := &in.EnableRelay, &out.EnableRelay + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedDatapathObservabilityConfigInitParameters. +func (in *AdvancedDatapathObservabilityConfigInitParameters) DeepCopy() *AdvancedDatapathObservabilityConfigInitParameters { + if in == nil { + return nil + } + out := new(AdvancedDatapathObservabilityConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedDatapathObservabilityConfigObservation) DeepCopyInto(out *AdvancedDatapathObservabilityConfigObservation) { + *out = *in + if in.EnableMetrics != nil { + in, out := &in.EnableMetrics, &out.EnableMetrics + *out = new(bool) + **out = **in + } + if in.EnableRelay != nil { + in, out := &in.EnableRelay, &out.EnableRelay + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedDatapathObservabilityConfigObservation. +func (in *AdvancedDatapathObservabilityConfigObservation) DeepCopy() *AdvancedDatapathObservabilityConfigObservation { + if in == nil { + return nil + } + out := new(AdvancedDatapathObservabilityConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedDatapathObservabilityConfigParameters) DeepCopyInto(out *AdvancedDatapathObservabilityConfigParameters) { + *out = *in + if in.EnableMetrics != nil { + in, out := &in.EnableMetrics, &out.EnableMetrics + *out = new(bool) + **out = **in + } + if in.EnableRelay != nil { + in, out := &in.EnableRelay, &out.EnableRelay + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedDatapathObservabilityConfigParameters. +func (in *AdvancedDatapathObservabilityConfigParameters) DeepCopy() *AdvancedDatapathObservabilityConfigParameters { + if in == nil { + return nil + } + out := new(AdvancedDatapathObservabilityConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedMachineFeaturesInitParameters) DeepCopyInto(out *AdvancedMachineFeaturesInitParameters) { + *out = *in + if in.EnableNestedVirtualization != nil { + in, out := &in.EnableNestedVirtualization, &out.EnableNestedVirtualization + *out = new(bool) + **out = **in + } + if in.ThreadsPerCore != nil { + in, out := &in.ThreadsPerCore, &out.ThreadsPerCore + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedMachineFeaturesInitParameters. +func (in *AdvancedMachineFeaturesInitParameters) DeepCopy() *AdvancedMachineFeaturesInitParameters { + if in == nil { + return nil + } + out := new(AdvancedMachineFeaturesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedMachineFeaturesObservation) DeepCopyInto(out *AdvancedMachineFeaturesObservation) { + *out = *in + if in.EnableNestedVirtualization != nil { + in, out := &in.EnableNestedVirtualization, &out.EnableNestedVirtualization + *out = new(bool) + **out = **in + } + if in.ThreadsPerCore != nil { + in, out := &in.ThreadsPerCore, &out.ThreadsPerCore + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedMachineFeaturesObservation. +func (in *AdvancedMachineFeaturesObservation) DeepCopy() *AdvancedMachineFeaturesObservation { + if in == nil { + return nil + } + out := new(AdvancedMachineFeaturesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdvancedMachineFeaturesParameters) DeepCopyInto(out *AdvancedMachineFeaturesParameters) { + *out = *in + if in.EnableNestedVirtualization != nil { + in, out := &in.EnableNestedVirtualization, &out.EnableNestedVirtualization + *out = new(bool) + **out = **in + } + if in.ThreadsPerCore != nil { + in, out := &in.ThreadsPerCore, &out.ThreadsPerCore + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedMachineFeaturesParameters. +func (in *AdvancedMachineFeaturesParameters) DeepCopy() *AdvancedMachineFeaturesParameters { + if in == nil { + return nil + } + out := new(AdvancedMachineFeaturesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthenticatorGroupsConfigInitParameters) DeepCopyInto(out *AuthenticatorGroupsConfigInitParameters) { + *out = *in + if in.SecurityGroup != nil { + in, out := &in.SecurityGroup, &out.SecurityGroup + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticatorGroupsConfigInitParameters. +func (in *AuthenticatorGroupsConfigInitParameters) DeepCopy() *AuthenticatorGroupsConfigInitParameters { + if in == nil { + return nil + } + out := new(AuthenticatorGroupsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthenticatorGroupsConfigObservation) DeepCopyInto(out *AuthenticatorGroupsConfigObservation) { + *out = *in + if in.SecurityGroup != nil { + in, out := &in.SecurityGroup, &out.SecurityGroup + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticatorGroupsConfigObservation. +func (in *AuthenticatorGroupsConfigObservation) DeepCopy() *AuthenticatorGroupsConfigObservation { + if in == nil { + return nil + } + out := new(AuthenticatorGroupsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthenticatorGroupsConfigParameters) DeepCopyInto(out *AuthenticatorGroupsConfigParameters) { + *out = *in + if in.SecurityGroup != nil { + in, out := &in.SecurityGroup, &out.SecurityGroup + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthenticatorGroupsConfigParameters. +func (in *AuthenticatorGroupsConfigParameters) DeepCopy() *AuthenticatorGroupsConfigParameters { + if in == nil { + return nil + } + out := new(AuthenticatorGroupsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoProvisioningDefaultsInitParameters) DeepCopyInto(out *AutoProvisioningDefaultsInitParameters) { + *out = *in + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.DiskSize != nil { + in, out := &in.DiskSize, &out.DiskSize + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(ManagementInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(ShieldedInstanceConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.UpgradeSettings != nil { + in, out := &in.UpgradeSettings, &out.UpgradeSettings + *out = new(UpgradeSettingsInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoProvisioningDefaultsInitParameters. +func (in *AutoProvisioningDefaultsInitParameters) DeepCopy() *AutoProvisioningDefaultsInitParameters { + if in == nil { + return nil + } + out := new(AutoProvisioningDefaultsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoProvisioningDefaultsObservation) DeepCopyInto(out *AutoProvisioningDefaultsObservation) { + *out = *in + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.DiskSize != nil { + in, out := &in.DiskSize, &out.DiskSize + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(ManagementObservation) + (*in).DeepCopyInto(*out) + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(ShieldedInstanceConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.UpgradeSettings != nil { + in, out := &in.UpgradeSettings, &out.UpgradeSettings + *out = new(UpgradeSettingsObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoProvisioningDefaultsObservation. +func (in *AutoProvisioningDefaultsObservation) DeepCopy() *AutoProvisioningDefaultsObservation { + if in == nil { + return nil + } + out := new(AutoProvisioningDefaultsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoProvisioningDefaultsParameters) DeepCopyInto(out *AutoProvisioningDefaultsParameters) { + *out = *in + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.DiskSize != nil { + in, out := &in.DiskSize, &out.DiskSize + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(ManagementParameters) + (*in).DeepCopyInto(*out) + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(ShieldedInstanceConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.UpgradeSettings != nil { + in, out := &in.UpgradeSettings, &out.UpgradeSettings + *out = new(UpgradeSettingsParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoProvisioningDefaultsParameters. +func (in *AutoProvisioningDefaultsParameters) DeepCopy() *AutoProvisioningDefaultsParameters { + if in == nil { + return nil + } + out := new(AutoProvisioningDefaultsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalingInitParameters) DeepCopyInto(out *AutoscalingInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalingInitParameters. +func (in *AutoscalingInitParameters) DeepCopy() *AutoscalingInitParameters { + if in == nil { + return nil + } + out := new(AutoscalingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalingObservation) DeepCopyInto(out *AutoscalingObservation) { + *out = *in + if in.LocationPolicy != nil { + in, out := &in.LocationPolicy, &out.LocationPolicy + *out = new(string) + **out = **in + } + if in.MaxNodeCount != nil { + in, out := &in.MaxNodeCount, &out.MaxNodeCount + *out = new(float64) + **out = **in + } + if in.MinNodeCount != nil { + in, out := &in.MinNodeCount, &out.MinNodeCount + *out = new(float64) + **out = **in + } + if in.TotalMaxNodeCount != nil { + in, out := &in.TotalMaxNodeCount, &out.TotalMaxNodeCount + *out = new(float64) + **out = **in + } + if in.TotalMinNodeCount != nil { + in, out := &in.TotalMinNodeCount, &out.TotalMinNodeCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalingObservation. +func (in *AutoscalingObservation) DeepCopy() *AutoscalingObservation { + if in == nil { + return nil + } + out := new(AutoscalingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalingParameters) DeepCopyInto(out *AutoscalingParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalingParameters. +func (in *AutoscalingParameters) DeepCopy() *AutoscalingParameters { + if in == nil { + return nil + } + out := new(AutoscalingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BigqueryDestinationInitParameters) DeepCopyInto(out *BigqueryDestinationInitParameters) { + *out = *in + if in.DatasetID != nil { + in, out := &in.DatasetID, &out.DatasetID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BigqueryDestinationInitParameters. +func (in *BigqueryDestinationInitParameters) DeepCopy() *BigqueryDestinationInitParameters { + if in == nil { + return nil + } + out := new(BigqueryDestinationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BigqueryDestinationObservation) DeepCopyInto(out *BigqueryDestinationObservation) { + *out = *in + if in.DatasetID != nil { + in, out := &in.DatasetID, &out.DatasetID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BigqueryDestinationObservation. +func (in *BigqueryDestinationObservation) DeepCopy() *BigqueryDestinationObservation { + if in == nil { + return nil + } + out := new(BigqueryDestinationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BigqueryDestinationParameters) DeepCopyInto(out *BigqueryDestinationParameters) { + *out = *in + if in.DatasetID != nil { + in, out := &in.DatasetID, &out.DatasetID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BigqueryDestinationParameters. +func (in *BigqueryDestinationParameters) DeepCopy() *BigqueryDestinationParameters { + if in == nil { + return nil + } + out := new(BigqueryDestinationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BinaryAuthorizationInitParameters) DeepCopyInto(out *BinaryAuthorizationInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.EvaluationMode != nil { + in, out := &in.EvaluationMode, &out.EvaluationMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BinaryAuthorizationInitParameters. +func (in *BinaryAuthorizationInitParameters) DeepCopy() *BinaryAuthorizationInitParameters { + if in == nil { + return nil + } + out := new(BinaryAuthorizationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BinaryAuthorizationObservation) DeepCopyInto(out *BinaryAuthorizationObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.EvaluationMode != nil { + in, out := &in.EvaluationMode, &out.EvaluationMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BinaryAuthorizationObservation. +func (in *BinaryAuthorizationObservation) DeepCopy() *BinaryAuthorizationObservation { + if in == nil { + return nil + } + out := new(BinaryAuthorizationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BinaryAuthorizationParameters) DeepCopyInto(out *BinaryAuthorizationParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.EvaluationMode != nil { + in, out := &in.EvaluationMode, &out.EvaluationMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BinaryAuthorizationParameters. +func (in *BinaryAuthorizationParameters) DeepCopy() *BinaryAuthorizationParameters { + if in == nil { + return nil + } + out := new(BinaryAuthorizationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsInitParameters) DeepCopyInto(out *BlueGreenSettingsInitParameters) { + *out = *in + if in.NodePoolSoakDuration != nil { + in, out := &in.NodePoolSoakDuration, &out.NodePoolSoakDuration + *out = new(string) + **out = **in + } + if in.StandardRolloutPolicy != nil { + in, out := &in.StandardRolloutPolicy, &out.StandardRolloutPolicy + *out = new(StandardRolloutPolicyInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsInitParameters. +func (in *BlueGreenSettingsInitParameters) DeepCopy() *BlueGreenSettingsInitParameters { + if in == nil { + return nil + } + out := new(BlueGreenSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsObservation) DeepCopyInto(out *BlueGreenSettingsObservation) { + *out = *in + if in.NodePoolSoakDuration != nil { + in, out := &in.NodePoolSoakDuration, &out.NodePoolSoakDuration + *out = new(string) + **out = **in + } + if in.StandardRolloutPolicy != nil { + in, out := &in.StandardRolloutPolicy, &out.StandardRolloutPolicy + *out = new(StandardRolloutPolicyObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsObservation. +func (in *BlueGreenSettingsObservation) DeepCopy() *BlueGreenSettingsObservation { + if in == nil { + return nil + } + out := new(BlueGreenSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsParameters) DeepCopyInto(out *BlueGreenSettingsParameters) { + *out = *in + if in.NodePoolSoakDuration != nil { + in, out := &in.NodePoolSoakDuration, &out.NodePoolSoakDuration + *out = new(string) + **out = **in + } + if in.StandardRolloutPolicy != nil { + in, out := &in.StandardRolloutPolicy, &out.StandardRolloutPolicy + *out = new(StandardRolloutPolicyParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsParameters. +func (in *BlueGreenSettingsParameters) DeepCopy() *BlueGreenSettingsParameters { + if in == nil { + return nil + } + out := new(BlueGreenSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsStandardRolloutPolicyInitParameters) DeepCopyInto(out *BlueGreenSettingsStandardRolloutPolicyInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsStandardRolloutPolicyInitParameters. +func (in *BlueGreenSettingsStandardRolloutPolicyInitParameters) DeepCopy() *BlueGreenSettingsStandardRolloutPolicyInitParameters { + if in == nil { + return nil + } + out := new(BlueGreenSettingsStandardRolloutPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsStandardRolloutPolicyObservation) DeepCopyInto(out *BlueGreenSettingsStandardRolloutPolicyObservation) { + *out = *in + if in.BatchNodeCount != nil { + in, out := &in.BatchNodeCount, &out.BatchNodeCount + *out = new(float64) + **out = **in + } + if in.BatchPercentage != nil { + in, out := &in.BatchPercentage, &out.BatchPercentage + *out = new(float64) + **out = **in + } + if in.BatchSoakDuration != nil { + in, out := &in.BatchSoakDuration, &out.BatchSoakDuration + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsStandardRolloutPolicyObservation. +func (in *BlueGreenSettingsStandardRolloutPolicyObservation) DeepCopy() *BlueGreenSettingsStandardRolloutPolicyObservation { + if in == nil { + return nil + } + out := new(BlueGreenSettingsStandardRolloutPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BlueGreenSettingsStandardRolloutPolicyParameters) DeepCopyInto(out *BlueGreenSettingsStandardRolloutPolicyParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueGreenSettingsStandardRolloutPolicyParameters. +func (in *BlueGreenSettingsStandardRolloutPolicyParameters) DeepCopy() *BlueGreenSettingsStandardRolloutPolicyParameters { + if in == nil { + return nil + } + out := new(BlueGreenSettingsStandardRolloutPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) DeepCopyInto(out *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) DeepCopy() *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) DeepCopyInto(out *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) DeepCopy() *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) DeepCopyInto(out *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters. +func (in *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) DeepCopy() *CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigInitParameters) DeepCopyInto(out *CertificateAuthorityDomainConfigInitParameters) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(GCPSecretManagerCertificateConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigInitParameters. +func (in *CertificateAuthorityDomainConfigInitParameters) DeepCopy() *CertificateAuthorityDomainConfigInitParameters { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigObservation) DeepCopyInto(out *CertificateAuthorityDomainConfigObservation) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(GCPSecretManagerCertificateConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigObservation. +func (in *CertificateAuthorityDomainConfigObservation) DeepCopy() *CertificateAuthorityDomainConfigObservation { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateAuthorityDomainConfigParameters) DeepCopyInto(out *CertificateAuthorityDomainConfigParameters) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(GCPSecretManagerCertificateConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateAuthorityDomainConfigParameters. +func (in *CertificateAuthorityDomainConfigParameters) DeepCopy() *CertificateAuthorityDomainConfigParameters { + if in == nil { + return nil + } + out := new(CertificateAuthorityDomainConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CidrBlocksInitParameters) DeepCopyInto(out *CidrBlocksInitParameters) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CidrBlocksInitParameters. +func (in *CidrBlocksInitParameters) DeepCopy() *CidrBlocksInitParameters { + if in == nil { + return nil + } + out := new(CidrBlocksInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CidrBlocksObservation) DeepCopyInto(out *CidrBlocksObservation) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CidrBlocksObservation. +func (in *CidrBlocksObservation) DeepCopy() *CidrBlocksObservation { + if in == nil { + return nil + } + out := new(CidrBlocksObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CidrBlocksParameters) DeepCopyInto(out *CidrBlocksParameters) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CidrBlocksParameters. +func (in *CidrBlocksParameters) DeepCopy() *CidrBlocksParameters { + if in == nil { + return nil + } + out := new(CidrBlocksParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientCertificateConfigInitParameters) DeepCopyInto(out *ClientCertificateConfigInitParameters) { + *out = *in + if in.IssueClientCertificate != nil { + in, out := &in.IssueClientCertificate, &out.IssueClientCertificate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientCertificateConfigInitParameters. +func (in *ClientCertificateConfigInitParameters) DeepCopy() *ClientCertificateConfigInitParameters { + if in == nil { + return nil + } + out := new(ClientCertificateConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientCertificateConfigObservation) DeepCopyInto(out *ClientCertificateConfigObservation) { + *out = *in + if in.IssueClientCertificate != nil { + in, out := &in.IssueClientCertificate, &out.IssueClientCertificate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientCertificateConfigObservation. +func (in *ClientCertificateConfigObservation) DeepCopy() *ClientCertificateConfigObservation { + if in == nil { + return nil + } + out := new(ClientCertificateConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientCertificateConfigParameters) DeepCopyInto(out *ClientCertificateConfigParameters) { + *out = *in + if in.IssueClientCertificate != nil { + in, out := &in.IssueClientCertificate, &out.IssueClientCertificate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientCertificateConfigParameters. +func (in *ClientCertificateConfigParameters) DeepCopy() *ClientCertificateConfigParameters { + if in == nil { + return nil + } + out := new(ClientCertificateConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudrunConfigInitParameters) DeepCopyInto(out *CloudrunConfigInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.LoadBalancerType != nil { + in, out := &in.LoadBalancerType, &out.LoadBalancerType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudrunConfigInitParameters. +func (in *CloudrunConfigInitParameters) DeepCopy() *CloudrunConfigInitParameters { + if in == nil { + return nil + } + out := new(CloudrunConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudrunConfigObservation) DeepCopyInto(out *CloudrunConfigObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.LoadBalancerType != nil { + in, out := &in.LoadBalancerType, &out.LoadBalancerType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudrunConfigObservation. +func (in *CloudrunConfigObservation) DeepCopy() *CloudrunConfigObservation { + if in == nil { + return nil + } + out := new(CloudrunConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudrunConfigParameters) DeepCopyInto(out *CloudrunConfigParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.LoadBalancerType != nil { + in, out := &in.LoadBalancerType, &out.LoadBalancerType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudrunConfigParameters. +func (in *CloudrunConfigParameters) DeepCopy() *CloudrunConfigParameters { + if in == nil { + return nil + } + out := new(CloudrunConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Cluster) DeepCopyInto(out *Cluster) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster. +func (in *Cluster) DeepCopy() *Cluster { + if in == nil { + return nil + } + out := new(Cluster) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Cluster) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterAutoscalingInitParameters) DeepCopyInto(out *ClusterAutoscalingInitParameters) { + *out = *in + if in.AutoProvisioningDefaults != nil { + in, out := &in.AutoProvisioningDefaults, &out.AutoProvisioningDefaults + *out = new(AutoProvisioningDefaultsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.AutoProvisioningLocations != nil { + in, out := &in.AutoProvisioningLocations, &out.AutoProvisioningLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.AutoscalingProfile != nil { + in, out := &in.AutoscalingProfile, &out.AutoscalingProfile + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAutoscalingInitParameters. +func (in *ClusterAutoscalingInitParameters) DeepCopy() *ClusterAutoscalingInitParameters { + if in == nil { + return nil + } + out := new(ClusterAutoscalingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterAutoscalingObservation) DeepCopyInto(out *ClusterAutoscalingObservation) { + *out = *in + if in.AutoProvisioningDefaults != nil { + in, out := &in.AutoProvisioningDefaults, &out.AutoProvisioningDefaults + *out = new(AutoProvisioningDefaultsObservation) + (*in).DeepCopyInto(*out) + } + if in.AutoProvisioningLocations != nil { + in, out := &in.AutoProvisioningLocations, &out.AutoProvisioningLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.AutoscalingProfile != nil { + in, out := &in.AutoscalingProfile, &out.AutoscalingProfile + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAutoscalingObservation. +func (in *ClusterAutoscalingObservation) DeepCopy() *ClusterAutoscalingObservation { + if in == nil { + return nil + } + out := new(ClusterAutoscalingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterAutoscalingParameters) DeepCopyInto(out *ClusterAutoscalingParameters) { + *out = *in + if in.AutoProvisioningDefaults != nil { + in, out := &in.AutoProvisioningDefaults, &out.AutoProvisioningDefaults + *out = new(AutoProvisioningDefaultsParameters) + (*in).DeepCopyInto(*out) + } + if in.AutoProvisioningLocations != nil { + in, out := &in.AutoProvisioningLocations, &out.AutoProvisioningLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.AutoscalingProfile != nil { + in, out := &in.AutoscalingProfile, &out.AutoscalingProfile + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAutoscalingParameters. +func (in *ClusterAutoscalingParameters) DeepCopy() *ClusterAutoscalingParameters { + if in == nil { + return nil + } + out := new(ClusterAutoscalingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterInitParameters) DeepCopyInto(out *ClusterInitParameters) { + *out = *in + if in.AddonsConfig != nil { + in, out := &in.AddonsConfig, &out.AddonsConfig + *out = new(AddonsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.AllowNetAdmin != nil { + in, out := &in.AllowNetAdmin, &out.AllowNetAdmin + *out = new(bool) + **out = **in + } + if in.AuthenticatorGroupsConfig != nil { + in, out := &in.AuthenticatorGroupsConfig, &out.AuthenticatorGroupsConfig + *out = new(AuthenticatorGroupsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.BinaryAuthorization != nil { + in, out := &in.BinaryAuthorization, &out.BinaryAuthorization + *out = new(BinaryAuthorizationInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterAutoscaling != nil { + in, out := &in.ClusterAutoscaling, &out.ClusterAutoscaling + *out = new(ClusterAutoscalingInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4Cidr != nil { + in, out := &in.ClusterIPv4Cidr, &out.ClusterIPv4Cidr + *out = new(string) + **out = **in + } + if in.ClusterTelemetry != nil { + in, out := &in.ClusterTelemetry, &out.ClusterTelemetry + *out = new(ClusterTelemetryInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(ConfidentialNodesInitParameters) + (*in).DeepCopyInto(*out) + } + if in.CostManagementConfig != nil { + in, out := &in.CostManagementConfig, &out.CostManagementConfig + *out = new(CostManagementConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DNSConfig != nil { + in, out := &in.DNSConfig, &out.DNSConfig + *out = new(DNSConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DatabaseEncryption != nil { + in, out := &in.DatabaseEncryption, &out.DatabaseEncryption + *out = new(DatabaseEncryptionInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DatapathProvider != nil { + in, out := &in.DatapathProvider, &out.DatapathProvider + *out = new(string) + **out = **in + } + if in.DefaultMaxPodsPerNode != nil { + in, out := &in.DefaultMaxPodsPerNode, &out.DefaultMaxPodsPerNode + *out = new(float64) + **out = **in + } + if in.DefaultSnatStatus != nil { + in, out := &in.DefaultSnatStatus, &out.DefaultSnatStatus + *out = new(DefaultSnatStatusInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DeletionProtection != nil { + in, out := &in.DeletionProtection, &out.DeletionProtection + *out = new(bool) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.EnableAutopilot != nil { + in, out := &in.EnableAutopilot, &out.EnableAutopilot + *out = new(bool) + **out = **in + } + if in.EnableCiliumClusterwideNetworkPolicy != nil { + in, out := &in.EnableCiliumClusterwideNetworkPolicy, &out.EnableCiliumClusterwideNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableFqdnNetworkPolicy != nil { + in, out := &in.EnableFqdnNetworkPolicy, &out.EnableFqdnNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableIntranodeVisibility != nil { + in, out := &in.EnableIntranodeVisibility, &out.EnableIntranodeVisibility + *out = new(bool) + **out = **in + } + if in.EnableK8SBetaApis != nil { + in, out := &in.EnableK8SBetaApis, &out.EnableK8SBetaApis + *out = new(EnableK8SBetaApisInitParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableKubernetesAlpha != nil { + in, out := &in.EnableKubernetesAlpha, &out.EnableKubernetesAlpha + *out = new(bool) + **out = **in + } + if in.EnableL4IlbSubsetting != nil { + in, out := &in.EnableL4IlbSubsetting, &out.EnableL4IlbSubsetting + *out = new(bool) + **out = **in + } + if in.EnableLegacyAbac != nil { + in, out := &in.EnableLegacyAbac, &out.EnableLegacyAbac + *out = new(bool) + **out = **in + } + if in.EnableMultiNetworking != nil { + in, out := &in.EnableMultiNetworking, &out.EnableMultiNetworking + *out = new(bool) + **out = **in + } + if in.EnableShieldedNodes != nil { + in, out := &in.EnableShieldedNodes, &out.EnableShieldedNodes + *out = new(bool) + **out = **in + } + if in.EnableTpu != nil { + in, out := &in.EnableTpu, &out.EnableTpu + *out = new(bool) + **out = **in + } + if in.Fleet != nil { + in, out := &in.Fleet, &out.Fleet + *out = new(FleetInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GatewayAPIConfig != nil { + in, out := &in.GatewayAPIConfig, &out.GatewayAPIConfig + *out = new(GatewayAPIConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.IPAllocationPolicy != nil { + in, out := &in.IPAllocationPolicy, &out.IPAllocationPolicy + *out = new(IPAllocationPolicyInitParameters) + (*in).DeepCopyInto(*out) + } + if in.IdentityServiceConfig != nil { + in, out := &in.IdentityServiceConfig, &out.IdentityServiceConfig + *out = new(IdentityServiceConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.InitialNodeCount != nil { + in, out := &in.InitialNodeCount, &out.InitialNodeCount + *out = new(float64) + **out = **in + } + if in.LoggingConfig != nil { + in, out := &in.LoggingConfig, &out.LoggingConfig + *out = new(LoggingConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.LoggingService != nil { + in, out := &in.LoggingService, &out.LoggingService + *out = new(string) + **out = **in + } + if in.MaintenancePolicy != nil { + in, out := &in.MaintenancePolicy, &out.MaintenancePolicy + *out = new(MaintenancePolicyInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterAuth != nil { + in, out := &in.MasterAuth, &out.MasterAuth + *out = new(MasterAuthInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterAuthorizedNetworksConfig != nil { + in, out := &in.MasterAuthorizedNetworksConfig, &out.MasterAuthorizedNetworksConfig + *out = new(MasterAuthorizedNetworksConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MeshCertificates != nil { + in, out := &in.MeshCertificates, &out.MeshCertificates + *out = new(MeshCertificatesInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MinMasterVersion != nil { + in, out := &in.MinMasterVersion, &out.MinMasterVersion + *out = new(string) + **out = **in + } + if in.MonitoringConfig != nil { + in, out := &in.MonitoringConfig, &out.MonitoringConfig + *out = new(MonitoringConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitoringService != nil { + in, out := &in.MonitoringService, &out.MonitoringService + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.NetworkPolicy != nil { + in, out := &in.NetworkPolicy, &out.NetworkPolicy + *out = new(NetworkPolicyInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NetworkingMode != nil { + in, out := &in.NetworkingMode, &out.NetworkingMode + *out = new(string) + **out = **in + } + if in.NodeConfig != nil { + in, out := &in.NodeConfig, &out.NodeConfig + *out = new(NodeConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeLocations != nil { + in, out := &in.NodeLocations, &out.NodeLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NodePoolAutoConfig != nil { + in, out := &in.NodePoolAutoConfig, &out.NodePoolAutoConfig + *out = new(NodePoolAutoConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NodePoolDefaults != nil { + in, out := &in.NodePoolDefaults, &out.NodePoolDefaults + *out = new(NodePoolDefaultsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeVersion != nil { + in, out := &in.NodeVersion, &out.NodeVersion + *out = new(string) + **out = **in + } + if in.NotificationConfig != nil { + in, out := &in.NotificationConfig, &out.NotificationConfig + *out = new(NotificationConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.PodSecurityPolicyConfig != nil { + in, out := &in.PodSecurityPolicyConfig, &out.PodSecurityPolicyConfig + *out = new(PodSecurityPolicyConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.PrivateClusterConfig != nil { + in, out := &in.PrivateClusterConfig, &out.PrivateClusterConfig + *out = new(PrivateClusterConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.PrivateIPv6GoogleAccess != nil { + in, out := &in.PrivateIPv6GoogleAccess, &out.PrivateIPv6GoogleAccess + *out = new(string) + **out = **in + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } + if in.ProtectConfig != nil { + in, out := &in.ProtectConfig, &out.ProtectConfig + *out = new(ProtectConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ReleaseChannel != nil { + in, out := &in.ReleaseChannel, &out.ReleaseChannel + *out = new(ReleaseChannelInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RemoveDefaultNodePool != nil { + in, out := &in.RemoveDefaultNodePool, &out.RemoveDefaultNodePool + *out = new(bool) + **out = **in + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceUsageExportConfig != nil { + in, out := &in.ResourceUsageExportConfig, &out.ResourceUsageExportConfig + *out = new(ResourceUsageExportConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SecretManagerConfig != nil { + in, out := &in.SecretManagerConfig, &out.SecretManagerConfig + *out = new(SecretManagerConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SecurityPostureConfig != nil { + in, out := &in.SecurityPostureConfig, &out.SecurityPostureConfig + *out = new(SecurityPostureConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ServiceExternalIpsConfig != nil { + in, out := &in.ServiceExternalIpsConfig, &out.ServiceExternalIpsConfig + *out = new(ServiceExternalIpsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } + if in.TpuConfig != nil { + in, out := &in.TpuConfig, &out.TpuConfig + *out = new(TpuConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.VerticalPodAutoscaling != nil { + in, out := &in.VerticalPodAutoscaling, &out.VerticalPodAutoscaling + *out = new(VerticalPodAutoscalingInitParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadAltsConfig != nil { + in, out := &in.WorkloadAltsConfig, &out.WorkloadAltsConfig + *out = new(WorkloadAltsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadIdentityConfig != nil { + in, out := &in.WorkloadIdentityConfig, &out.WorkloadIdentityConfig + *out = new(WorkloadIdentityConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInitParameters. +func (in *ClusterInitParameters) DeepCopy() *ClusterInitParameters { + if in == nil { + return nil + } + out := new(ClusterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterList) DeepCopyInto(out *ClusterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Cluster, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList. +func (in *ClusterList) DeepCopy() *ClusterList { + if in == nil { + return nil + } + out := new(ClusterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterObservation) DeepCopyInto(out *ClusterObservation) { + *out = *in + if in.AddonsConfig != nil { + in, out := &in.AddonsConfig, &out.AddonsConfig + *out = new(AddonsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.AllowNetAdmin != nil { + in, out := &in.AllowNetAdmin, &out.AllowNetAdmin + *out = new(bool) + **out = **in + } + if in.AuthenticatorGroupsConfig != nil { + in, out := &in.AuthenticatorGroupsConfig, &out.AuthenticatorGroupsConfig + *out = new(AuthenticatorGroupsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.BinaryAuthorization != nil { + in, out := &in.BinaryAuthorization, &out.BinaryAuthorization + *out = new(BinaryAuthorizationObservation) + (*in).DeepCopyInto(*out) + } + if in.ClusterAutoscaling != nil { + in, out := &in.ClusterAutoscaling, &out.ClusterAutoscaling + *out = new(ClusterAutoscalingObservation) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4Cidr != nil { + in, out := &in.ClusterIPv4Cidr, &out.ClusterIPv4Cidr + *out = new(string) + **out = **in + } + if in.ClusterTelemetry != nil { + in, out := &in.ClusterTelemetry, &out.ClusterTelemetry + *out = new(ClusterTelemetryObservation) + (*in).DeepCopyInto(*out) + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(ConfidentialNodesObservation) + (*in).DeepCopyInto(*out) + } + if in.CostManagementConfig != nil { + in, out := &in.CostManagementConfig, &out.CostManagementConfig + *out = new(CostManagementConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.DNSConfig != nil { + in, out := &in.DNSConfig, &out.DNSConfig + *out = new(DNSConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.DatabaseEncryption != nil { + in, out := &in.DatabaseEncryption, &out.DatabaseEncryption + *out = new(DatabaseEncryptionObservation) + (*in).DeepCopyInto(*out) + } + if in.DatapathProvider != nil { + in, out := &in.DatapathProvider, &out.DatapathProvider + *out = new(string) + **out = **in + } + if in.DefaultMaxPodsPerNode != nil { + in, out := &in.DefaultMaxPodsPerNode, &out.DefaultMaxPodsPerNode + *out = new(float64) + **out = **in + } + if in.DefaultSnatStatus != nil { + in, out := &in.DefaultSnatStatus, &out.DefaultSnatStatus + *out = new(DefaultSnatStatusObservation) + (*in).DeepCopyInto(*out) + } + if in.DeletionProtection != nil { + in, out := &in.DeletionProtection, &out.DeletionProtection + *out = new(bool) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.EffectiveLabels != nil { + in, out := &in.EffectiveLabels, &out.EffectiveLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.EnableAutopilot != nil { + in, out := &in.EnableAutopilot, &out.EnableAutopilot + *out = new(bool) + **out = **in + } + if in.EnableCiliumClusterwideNetworkPolicy != nil { + in, out := &in.EnableCiliumClusterwideNetworkPolicy, &out.EnableCiliumClusterwideNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableFqdnNetworkPolicy != nil { + in, out := &in.EnableFqdnNetworkPolicy, &out.EnableFqdnNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableIntranodeVisibility != nil { + in, out := &in.EnableIntranodeVisibility, &out.EnableIntranodeVisibility + *out = new(bool) + **out = **in + } + if in.EnableK8SBetaApis != nil { + in, out := &in.EnableK8SBetaApis, &out.EnableK8SBetaApis + *out = new(EnableK8SBetaApisObservation) + (*in).DeepCopyInto(*out) + } + if in.EnableKubernetesAlpha != nil { + in, out := &in.EnableKubernetesAlpha, &out.EnableKubernetesAlpha + *out = new(bool) + **out = **in + } + if in.EnableL4IlbSubsetting != nil { + in, out := &in.EnableL4IlbSubsetting, &out.EnableL4IlbSubsetting + *out = new(bool) + **out = **in + } + if in.EnableLegacyAbac != nil { + in, out := &in.EnableLegacyAbac, &out.EnableLegacyAbac + *out = new(bool) + **out = **in + } + if in.EnableMultiNetworking != nil { + in, out := &in.EnableMultiNetworking, &out.EnableMultiNetworking + *out = new(bool) + **out = **in + } + if in.EnableShieldedNodes != nil { + in, out := &in.EnableShieldedNodes, &out.EnableShieldedNodes + *out = new(bool) + **out = **in + } + if in.EnableTpu != nil { + in, out := &in.EnableTpu, &out.EnableTpu + *out = new(bool) + **out = **in + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.Fleet != nil { + in, out := &in.Fleet, &out.Fleet + *out = new(FleetObservation) + (*in).DeepCopyInto(*out) + } + if in.GatewayAPIConfig != nil { + in, out := &in.GatewayAPIConfig, &out.GatewayAPIConfig + *out = new(GatewayAPIConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IPAllocationPolicy != nil { + in, out := &in.IPAllocationPolicy, &out.IPAllocationPolicy + *out = new(IPAllocationPolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.IdentityServiceConfig != nil { + in, out := &in.IdentityServiceConfig, &out.IdentityServiceConfig + *out = new(IdentityServiceConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.InitialNodeCount != nil { + in, out := &in.InitialNodeCount, &out.InitialNodeCount + *out = new(float64) + **out = **in + } + if in.LabelFingerprint != nil { + in, out := &in.LabelFingerprint, &out.LabelFingerprint + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.LoggingConfig != nil { + in, out := &in.LoggingConfig, &out.LoggingConfig + *out = new(LoggingConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.LoggingService != nil { + in, out := &in.LoggingService, &out.LoggingService + *out = new(string) + **out = **in + } + if in.MaintenancePolicy != nil { + in, out := &in.MaintenancePolicy, &out.MaintenancePolicy + *out = new(MaintenancePolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.MasterAuth != nil { + in, out := &in.MasterAuth, &out.MasterAuth + *out = new(MasterAuthObservation) + (*in).DeepCopyInto(*out) + } + if in.MasterAuthorizedNetworksConfig != nil { + in, out := &in.MasterAuthorizedNetworksConfig, &out.MasterAuthorizedNetworksConfig + *out = new(MasterAuthorizedNetworksConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.MasterVersion != nil { + in, out := &in.MasterVersion, &out.MasterVersion + *out = new(string) + **out = **in + } + if in.MeshCertificates != nil { + in, out := &in.MeshCertificates, &out.MeshCertificates + *out = new(MeshCertificatesObservation) + (*in).DeepCopyInto(*out) + } + if in.MinMasterVersion != nil { + in, out := &in.MinMasterVersion, &out.MinMasterVersion + *out = new(string) + **out = **in + } + if in.MonitoringConfig != nil { + in, out := &in.MonitoringConfig, &out.MonitoringConfig + *out = new(MonitoringConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.MonitoringService != nil { + in, out := &in.MonitoringService, &out.MonitoringService + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.NetworkPolicy != nil { + in, out := &in.NetworkPolicy, &out.NetworkPolicy + *out = new(NetworkPolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.NetworkingMode != nil { + in, out := &in.NetworkingMode, &out.NetworkingMode + *out = new(string) + **out = **in + } + if in.NodeConfig != nil { + in, out := &in.NodeConfig, &out.NodeConfig + *out = new(NodeConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.NodeLocations != nil { + in, out := &in.NodeLocations, &out.NodeLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NodePool != nil { + in, out := &in.NodePool, &out.NodePool + *out = make([]NodePoolObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NodePoolAutoConfig != nil { + in, out := &in.NodePoolAutoConfig, &out.NodePoolAutoConfig + *out = new(NodePoolAutoConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.NodePoolDefaults != nil { + in, out := &in.NodePoolDefaults, &out.NodePoolDefaults + *out = new(NodePoolDefaultsObservation) + (*in).DeepCopyInto(*out) + } + if in.NodeVersion != nil { + in, out := &in.NodeVersion, &out.NodeVersion + *out = new(string) + **out = **in + } + if in.NotificationConfig != nil { + in, out := &in.NotificationConfig, &out.NotificationConfig + *out = new(NotificationConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Operation != nil { + in, out := &in.Operation, &out.Operation + *out = new(string) + **out = **in + } + if in.PodSecurityPolicyConfig != nil { + in, out := &in.PodSecurityPolicyConfig, &out.PodSecurityPolicyConfig + *out = new(PodSecurityPolicyConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.PrivateClusterConfig != nil { + in, out := &in.PrivateClusterConfig, &out.PrivateClusterConfig + *out = new(PrivateClusterConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.PrivateIPv6GoogleAccess != nil { + in, out := &in.PrivateIPv6GoogleAccess, &out.PrivateIPv6GoogleAccess + *out = new(string) + **out = **in + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } + if in.ProtectConfig != nil { + in, out := &in.ProtectConfig, &out.ProtectConfig + *out = new(ProtectConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ReleaseChannel != nil { + in, out := &in.ReleaseChannel, &out.ReleaseChannel + *out = new(ReleaseChannelObservation) + (*in).DeepCopyInto(*out) + } + if in.RemoveDefaultNodePool != nil { + in, out := &in.RemoveDefaultNodePool, &out.RemoveDefaultNodePool + *out = new(bool) + **out = **in + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceUsageExportConfig != nil { + in, out := &in.ResourceUsageExportConfig, &out.ResourceUsageExportConfig + *out = new(ResourceUsageExportConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SecretManagerConfig != nil { + in, out := &in.SecretManagerConfig, &out.SecretManagerConfig + *out = new(SecretManagerConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SecurityPostureConfig != nil { + in, out := &in.SecurityPostureConfig, &out.SecurityPostureConfig + *out = new(SecurityPostureConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SelfLink != nil { + in, out := &in.SelfLink, &out.SelfLink + *out = new(string) + **out = **in + } + if in.ServiceExternalIpsConfig != nil { + in, out := &in.ServiceExternalIpsConfig, &out.ServiceExternalIpsConfig + *out = new(ServiceExternalIpsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ServicesIPv4Cidr != nil { + in, out := &in.ServicesIPv4Cidr, &out.ServicesIPv4Cidr + *out = new(string) + **out = **in + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } + if in.TerraformLabels != nil { + in, out := &in.TerraformLabels, &out.TerraformLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.TpuConfig != nil { + in, out := &in.TpuConfig, &out.TpuConfig + *out = new(TpuConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.TpuIPv4CidrBlock != nil { + in, out := &in.TpuIPv4CidrBlock, &out.TpuIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.VerticalPodAutoscaling != nil { + in, out := &in.VerticalPodAutoscaling, &out.VerticalPodAutoscaling + *out = new(VerticalPodAutoscalingObservation) + (*in).DeepCopyInto(*out) + } + if in.WorkloadAltsConfig != nil { + in, out := &in.WorkloadAltsConfig, &out.WorkloadAltsConfig + *out = new(WorkloadAltsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.WorkloadIdentityConfig != nil { + in, out := &in.WorkloadIdentityConfig, &out.WorkloadIdentityConfig + *out = new(WorkloadIdentityConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterObservation. +func (in *ClusterObservation) DeepCopy() *ClusterObservation { + if in == nil { + return nil + } + out := new(ClusterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterParameters) DeepCopyInto(out *ClusterParameters) { + *out = *in + if in.AddonsConfig != nil { + in, out := &in.AddonsConfig, &out.AddonsConfig + *out = new(AddonsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.AllowNetAdmin != nil { + in, out := &in.AllowNetAdmin, &out.AllowNetAdmin + *out = new(bool) + **out = **in + } + if in.AuthenticatorGroupsConfig != nil { + in, out := &in.AuthenticatorGroupsConfig, &out.AuthenticatorGroupsConfig + *out = new(AuthenticatorGroupsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.BinaryAuthorization != nil { + in, out := &in.BinaryAuthorization, &out.BinaryAuthorization + *out = new(BinaryAuthorizationParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterAutoscaling != nil { + in, out := &in.ClusterAutoscaling, &out.ClusterAutoscaling + *out = new(ClusterAutoscalingParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4Cidr != nil { + in, out := &in.ClusterIPv4Cidr, &out.ClusterIPv4Cidr + *out = new(string) + **out = **in + } + if in.ClusterTelemetry != nil { + in, out := &in.ClusterTelemetry, &out.ClusterTelemetry + *out = new(ClusterTelemetryParameters) + (*in).DeepCopyInto(*out) + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(ConfidentialNodesParameters) + (*in).DeepCopyInto(*out) + } + if in.CostManagementConfig != nil { + in, out := &in.CostManagementConfig, &out.CostManagementConfig + *out = new(CostManagementConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.DNSConfig != nil { + in, out := &in.DNSConfig, &out.DNSConfig + *out = new(DNSConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.DatabaseEncryption != nil { + in, out := &in.DatabaseEncryption, &out.DatabaseEncryption + *out = new(DatabaseEncryptionParameters) + (*in).DeepCopyInto(*out) + } + if in.DatapathProvider != nil { + in, out := &in.DatapathProvider, &out.DatapathProvider + *out = new(string) + **out = **in + } + if in.DefaultMaxPodsPerNode != nil { + in, out := &in.DefaultMaxPodsPerNode, &out.DefaultMaxPodsPerNode + *out = new(float64) + **out = **in + } + if in.DefaultSnatStatus != nil { + in, out := &in.DefaultSnatStatus, &out.DefaultSnatStatus + *out = new(DefaultSnatStatusParameters) + (*in).DeepCopyInto(*out) + } + if in.DeletionProtection != nil { + in, out := &in.DeletionProtection, &out.DeletionProtection + *out = new(bool) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.EnableAutopilot != nil { + in, out := &in.EnableAutopilot, &out.EnableAutopilot + *out = new(bool) + **out = **in + } + if in.EnableCiliumClusterwideNetworkPolicy != nil { + in, out := &in.EnableCiliumClusterwideNetworkPolicy, &out.EnableCiliumClusterwideNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableFqdnNetworkPolicy != nil { + in, out := &in.EnableFqdnNetworkPolicy, &out.EnableFqdnNetworkPolicy + *out = new(bool) + **out = **in + } + if in.EnableIntranodeVisibility != nil { + in, out := &in.EnableIntranodeVisibility, &out.EnableIntranodeVisibility + *out = new(bool) + **out = **in + } + if in.EnableK8SBetaApis != nil { + in, out := &in.EnableK8SBetaApis, &out.EnableK8SBetaApis + *out = new(EnableK8SBetaApisParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableKubernetesAlpha != nil { + in, out := &in.EnableKubernetesAlpha, &out.EnableKubernetesAlpha + *out = new(bool) + **out = **in + } + if in.EnableL4IlbSubsetting != nil { + in, out := &in.EnableL4IlbSubsetting, &out.EnableL4IlbSubsetting + *out = new(bool) + **out = **in + } + if in.EnableLegacyAbac != nil { + in, out := &in.EnableLegacyAbac, &out.EnableLegacyAbac + *out = new(bool) + **out = **in + } + if in.EnableMultiNetworking != nil { + in, out := &in.EnableMultiNetworking, &out.EnableMultiNetworking + *out = new(bool) + **out = **in + } + if in.EnableShieldedNodes != nil { + in, out := &in.EnableShieldedNodes, &out.EnableShieldedNodes + *out = new(bool) + **out = **in + } + if in.EnableTpu != nil { + in, out := &in.EnableTpu, &out.EnableTpu + *out = new(bool) + **out = **in + } + if in.Fleet != nil { + in, out := &in.Fleet, &out.Fleet + *out = new(FleetParameters) + (*in).DeepCopyInto(*out) + } + if in.GatewayAPIConfig != nil { + in, out := &in.GatewayAPIConfig, &out.GatewayAPIConfig + *out = new(GatewayAPIConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.IPAllocationPolicy != nil { + in, out := &in.IPAllocationPolicy, &out.IPAllocationPolicy + *out = new(IPAllocationPolicyParameters) + (*in).DeepCopyInto(*out) + } + if in.IdentityServiceConfig != nil { + in, out := &in.IdentityServiceConfig, &out.IdentityServiceConfig + *out = new(IdentityServiceConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.InitialNodeCount != nil { + in, out := &in.InitialNodeCount, &out.InitialNodeCount + *out = new(float64) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.LoggingConfig != nil { + in, out := &in.LoggingConfig, &out.LoggingConfig + *out = new(LoggingConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.LoggingService != nil { + in, out := &in.LoggingService, &out.LoggingService + *out = new(string) + **out = **in + } + if in.MaintenancePolicy != nil { + in, out := &in.MaintenancePolicy, &out.MaintenancePolicy + *out = new(MaintenancePolicyParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterAuth != nil { + in, out := &in.MasterAuth, &out.MasterAuth + *out = new(MasterAuthParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterAuthorizedNetworksConfig != nil { + in, out := &in.MasterAuthorizedNetworksConfig, &out.MasterAuthorizedNetworksConfig + *out = new(MasterAuthorizedNetworksConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.MeshCertificates != nil { + in, out := &in.MeshCertificates, &out.MeshCertificates + *out = new(MeshCertificatesParameters) + (*in).DeepCopyInto(*out) + } + if in.MinMasterVersion != nil { + in, out := &in.MinMasterVersion, &out.MinMasterVersion + *out = new(string) + **out = **in + } + if in.MonitoringConfig != nil { + in, out := &in.MonitoringConfig, &out.MonitoringConfig + *out = new(MonitoringConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitoringService != nil { + in, out := &in.MonitoringService, &out.MonitoringService + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.NetworkPolicy != nil { + in, out := &in.NetworkPolicy, &out.NetworkPolicy + *out = new(NetworkPolicyParameters) + (*in).DeepCopyInto(*out) + } + if in.NetworkingMode != nil { + in, out := &in.NetworkingMode, &out.NetworkingMode + *out = new(string) + **out = **in + } + if in.NodeConfig != nil { + in, out := &in.NodeConfig, &out.NodeConfig + *out = new(NodeConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeLocations != nil { + in, out := &in.NodeLocations, &out.NodeLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NodePoolAutoConfig != nil { + in, out := &in.NodePoolAutoConfig, &out.NodePoolAutoConfig + *out = new(NodePoolAutoConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.NodePoolDefaults != nil { + in, out := &in.NodePoolDefaults, &out.NodePoolDefaults + *out = new(NodePoolDefaultsParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeVersion != nil { + in, out := &in.NodeVersion, &out.NodeVersion + *out = new(string) + **out = **in + } + if in.NotificationConfig != nil { + in, out := &in.NotificationConfig, &out.NotificationConfig + *out = new(NotificationConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.PodSecurityPolicyConfig != nil { + in, out := &in.PodSecurityPolicyConfig, &out.PodSecurityPolicyConfig + *out = new(PodSecurityPolicyConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.PrivateClusterConfig != nil { + in, out := &in.PrivateClusterConfig, &out.PrivateClusterConfig + *out = new(PrivateClusterConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.PrivateIPv6GoogleAccess != nil { + in, out := &in.PrivateIPv6GoogleAccess, &out.PrivateIPv6GoogleAccess + *out = new(string) + **out = **in + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } + if in.ProtectConfig != nil { + in, out := &in.ProtectConfig, &out.ProtectConfig + *out = new(ProtectConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ReleaseChannel != nil { + in, out := &in.ReleaseChannel, &out.ReleaseChannel + *out = new(ReleaseChannelParameters) + (*in).DeepCopyInto(*out) + } + if in.RemoveDefaultNodePool != nil { + in, out := &in.RemoveDefaultNodePool, &out.RemoveDefaultNodePool + *out = new(bool) + **out = **in + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceUsageExportConfig != nil { + in, out := &in.ResourceUsageExportConfig, &out.ResourceUsageExportConfig + *out = new(ResourceUsageExportConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.SecretManagerConfig != nil { + in, out := &in.SecretManagerConfig, &out.SecretManagerConfig + *out = new(SecretManagerConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.SecurityPostureConfig != nil { + in, out := &in.SecurityPostureConfig, &out.SecurityPostureConfig + *out = new(SecurityPostureConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ServiceExternalIpsConfig != nil { + in, out := &in.ServiceExternalIpsConfig, &out.ServiceExternalIpsConfig + *out = new(ServiceExternalIpsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } + if in.TpuConfig != nil { + in, out := &in.TpuConfig, &out.TpuConfig + *out = new(TpuConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.VerticalPodAutoscaling != nil { + in, out := &in.VerticalPodAutoscaling, &out.VerticalPodAutoscaling + *out = new(VerticalPodAutoscalingParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadAltsConfig != nil { + in, out := &in.WorkloadAltsConfig, &out.WorkloadAltsConfig + *out = new(WorkloadAltsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadIdentityConfig != nil { + in, out := &in.WorkloadIdentityConfig, &out.WorkloadIdentityConfig + *out = new(WorkloadIdentityConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterParameters. +func (in *ClusterParameters) DeepCopy() *ClusterParameters { + if in == nil { + return nil + } + out := new(ClusterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec. +func (in *ClusterSpec) DeepCopy() *ClusterSpec { + if in == nil { + return nil + } + out := new(ClusterSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus. +func (in *ClusterStatus) DeepCopy() *ClusterStatus { + if in == nil { + return nil + } + out := new(ClusterStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterTelemetryInitParameters) DeepCopyInto(out *ClusterTelemetryInitParameters) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTelemetryInitParameters. +func (in *ClusterTelemetryInitParameters) DeepCopy() *ClusterTelemetryInitParameters { + if in == nil { + return nil + } + out := new(ClusterTelemetryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterTelemetryObservation) DeepCopyInto(out *ClusterTelemetryObservation) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTelemetryObservation. +func (in *ClusterTelemetryObservation) DeepCopy() *ClusterTelemetryObservation { + if in == nil { + return nil + } + out := new(ClusterTelemetryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterTelemetryParameters) DeepCopyInto(out *ClusterTelemetryParameters) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterTelemetryParameters. +func (in *ClusterTelemetryParameters) DeepCopy() *ClusterTelemetryParameters { + if in == nil { + return nil + } + out := new(ClusterTelemetryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfidentialNodesInitParameters) DeepCopyInto(out *ConfidentialNodesInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfidentialNodesInitParameters. +func (in *ConfidentialNodesInitParameters) DeepCopy() *ConfidentialNodesInitParameters { + if in == nil { + return nil + } + out := new(ConfidentialNodesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfidentialNodesObservation) DeepCopyInto(out *ConfidentialNodesObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfidentialNodesObservation. +func (in *ConfidentialNodesObservation) DeepCopy() *ConfidentialNodesObservation { + if in == nil { + return nil + } + out := new(ConfidentialNodesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfidentialNodesParameters) DeepCopyInto(out *ConfidentialNodesParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfidentialNodesParameters. +func (in *ConfidentialNodesParameters) DeepCopy() *ConfidentialNodesParameters { + if in == nil { + return nil + } + out := new(ConfidentialNodesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigConnectorConfigInitParameters) DeepCopyInto(out *ConfigConnectorConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigConnectorConfigInitParameters. +func (in *ConfigConnectorConfigInitParameters) DeepCopy() *ConfigConnectorConfigInitParameters { + if in == nil { + return nil + } + out := new(ConfigConnectorConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigConnectorConfigObservation) DeepCopyInto(out *ConfigConnectorConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigConnectorConfigObservation. +func (in *ConfigConnectorConfigObservation) DeepCopy() *ConfigConnectorConfigObservation { + if in == nil { + return nil + } + out := new(ConfigConnectorConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigConnectorConfigParameters) DeepCopyInto(out *ConfigConnectorConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigConnectorConfigParameters. +func (in *ConfigConnectorConfigParameters) DeepCopy() *ConfigConnectorConfigParameters { + if in == nil { + return nil + } + out := new(ConfigConnectorConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigInitParameters) DeepCopyInto(out *ContainerdConfigInitParameters) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(PrivateRegistryAccessConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigInitParameters. +func (in *ContainerdConfigInitParameters) DeepCopy() *ContainerdConfigInitParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigObservation) DeepCopyInto(out *ContainerdConfigObservation) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(PrivateRegistryAccessConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigObservation. +func (in *ContainerdConfigObservation) DeepCopy() *ContainerdConfigObservation { + if in == nil { + return nil + } + out := new(ContainerdConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigParameters) DeepCopyInto(out *ContainerdConfigParameters) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(PrivateRegistryAccessConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigParameters. +func (in *ContainerdConfigParameters) DeepCopy() *ContainerdConfigParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters. +func (in *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigInitParameters) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigInitParameters. +func (in *ContainerdConfigPrivateRegistryAccessConfigInitParameters) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigInitParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigObservation) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigObservation) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigObservation. +func (in *ContainerdConfigPrivateRegistryAccessConfigObservation) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigObservation { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerdConfigPrivateRegistryAccessConfigParameters) DeepCopyInto(out *ContainerdConfigPrivateRegistryAccessConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerdConfigPrivateRegistryAccessConfigParameters. +func (in *ContainerdConfigPrivateRegistryAccessConfigParameters) DeepCopy() *ContainerdConfigPrivateRegistryAccessConfigParameters { + if in == nil { + return nil + } + out := new(ContainerdConfigPrivateRegistryAccessConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CostManagementConfigInitParameters) DeepCopyInto(out *CostManagementConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CostManagementConfigInitParameters. +func (in *CostManagementConfigInitParameters) DeepCopy() *CostManagementConfigInitParameters { + if in == nil { + return nil + } + out := new(CostManagementConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CostManagementConfigObservation) DeepCopyInto(out *CostManagementConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CostManagementConfigObservation. +func (in *CostManagementConfigObservation) DeepCopy() *CostManagementConfigObservation { + if in == nil { + return nil + } + out := new(CostManagementConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CostManagementConfigParameters) DeepCopyInto(out *CostManagementConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CostManagementConfigParameters. +func (in *CostManagementConfigParameters) DeepCopy() *CostManagementConfigParameters { + if in == nil { + return nil + } + out := new(CostManagementConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSCacheConfigInitParameters) DeepCopyInto(out *DNSCacheConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSCacheConfigInitParameters. +func (in *DNSCacheConfigInitParameters) DeepCopy() *DNSCacheConfigInitParameters { + if in == nil { + return nil + } + out := new(DNSCacheConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSCacheConfigObservation) DeepCopyInto(out *DNSCacheConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSCacheConfigObservation. +func (in *DNSCacheConfigObservation) DeepCopy() *DNSCacheConfigObservation { + if in == nil { + return nil + } + out := new(DNSCacheConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSCacheConfigParameters) DeepCopyInto(out *DNSCacheConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSCacheConfigParameters. +func (in *DNSCacheConfigParameters) DeepCopy() *DNSCacheConfigParameters { + if in == nil { + return nil + } + out := new(DNSCacheConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSConfigInitParameters) DeepCopyInto(out *DNSConfigInitParameters) { + *out = *in + if in.AdditiveVPCScopeDNSDomain != nil { + in, out := &in.AdditiveVPCScopeDNSDomain, &out.AdditiveVPCScopeDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNS != nil { + in, out := &in.ClusterDNS, &out.ClusterDNS + *out = new(string) + **out = **in + } + if in.ClusterDNSDomain != nil { + in, out := &in.ClusterDNSDomain, &out.ClusterDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNSScope != nil { + in, out := &in.ClusterDNSScope, &out.ClusterDNSScope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSConfigInitParameters. +func (in *DNSConfigInitParameters) DeepCopy() *DNSConfigInitParameters { + if in == nil { + return nil + } + out := new(DNSConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSConfigObservation) DeepCopyInto(out *DNSConfigObservation) { + *out = *in + if in.AdditiveVPCScopeDNSDomain != nil { + in, out := &in.AdditiveVPCScopeDNSDomain, &out.AdditiveVPCScopeDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNS != nil { + in, out := &in.ClusterDNS, &out.ClusterDNS + *out = new(string) + **out = **in + } + if in.ClusterDNSDomain != nil { + in, out := &in.ClusterDNSDomain, &out.ClusterDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNSScope != nil { + in, out := &in.ClusterDNSScope, &out.ClusterDNSScope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSConfigObservation. +func (in *DNSConfigObservation) DeepCopy() *DNSConfigObservation { + if in == nil { + return nil + } + out := new(DNSConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSConfigParameters) DeepCopyInto(out *DNSConfigParameters) { + *out = *in + if in.AdditiveVPCScopeDNSDomain != nil { + in, out := &in.AdditiveVPCScopeDNSDomain, &out.AdditiveVPCScopeDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNS != nil { + in, out := &in.ClusterDNS, &out.ClusterDNS + *out = new(string) + **out = **in + } + if in.ClusterDNSDomain != nil { + in, out := &in.ClusterDNSDomain, &out.ClusterDNSDomain + *out = new(string) + **out = **in + } + if in.ClusterDNSScope != nil { + in, out := &in.ClusterDNSScope, &out.ClusterDNSScope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSConfigParameters. +func (in *DNSConfigParameters) DeepCopy() *DNSConfigParameters { + if in == nil { + return nil + } + out := new(DNSConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyMaintenanceWindowInitParameters) DeepCopyInto(out *DailyMaintenanceWindowInitParameters) { + *out = *in + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyMaintenanceWindowInitParameters. +func (in *DailyMaintenanceWindowInitParameters) DeepCopy() *DailyMaintenanceWindowInitParameters { + if in == nil { + return nil + } + out := new(DailyMaintenanceWindowInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyMaintenanceWindowObservation) DeepCopyInto(out *DailyMaintenanceWindowObservation) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyMaintenanceWindowObservation. +func (in *DailyMaintenanceWindowObservation) DeepCopy() *DailyMaintenanceWindowObservation { + if in == nil { + return nil + } + out := new(DailyMaintenanceWindowObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyMaintenanceWindowParameters) DeepCopyInto(out *DailyMaintenanceWindowParameters) { + *out = *in + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyMaintenanceWindowParameters. +func (in *DailyMaintenanceWindowParameters) DeepCopy() *DailyMaintenanceWindowParameters { + if in == nil { + return nil + } + out := new(DailyMaintenanceWindowParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DatabaseEncryptionInitParameters) DeepCopyInto(out *DatabaseEncryptionInitParameters) { + *out = *in + if in.KeyName != nil { + in, out := &in.KeyName, &out.KeyName + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseEncryptionInitParameters. +func (in *DatabaseEncryptionInitParameters) DeepCopy() *DatabaseEncryptionInitParameters { + if in == nil { + return nil + } + out := new(DatabaseEncryptionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DatabaseEncryptionObservation) DeepCopyInto(out *DatabaseEncryptionObservation) { + *out = *in + if in.KeyName != nil { + in, out := &in.KeyName, &out.KeyName + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseEncryptionObservation. +func (in *DatabaseEncryptionObservation) DeepCopy() *DatabaseEncryptionObservation { + if in == nil { + return nil + } + out := new(DatabaseEncryptionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DatabaseEncryptionParameters) DeepCopyInto(out *DatabaseEncryptionParameters) { + *out = *in + if in.KeyName != nil { + in, out := &in.KeyName, &out.KeyName + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseEncryptionParameters. +func (in *DatabaseEncryptionParameters) DeepCopy() *DatabaseEncryptionParameters { + if in == nil { + return nil + } + out := new(DatabaseEncryptionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultSnatStatusInitParameters) DeepCopyInto(out *DefaultSnatStatusInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultSnatStatusInitParameters. +func (in *DefaultSnatStatusInitParameters) DeepCopy() *DefaultSnatStatusInitParameters { + if in == nil { + return nil + } + out := new(DefaultSnatStatusInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultSnatStatusObservation) DeepCopyInto(out *DefaultSnatStatusObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultSnatStatusObservation. +func (in *DefaultSnatStatusObservation) DeepCopy() *DefaultSnatStatusObservation { + if in == nil { + return nil + } + out := new(DefaultSnatStatusObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultSnatStatusParameters) DeepCopyInto(out *DefaultSnatStatusParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultSnatStatusParameters. +func (in *DefaultSnatStatusParameters) DeepCopy() *DefaultSnatStatusParameters { + if in == nil { + return nil + } + out := new(DefaultSnatStatusParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EffectiveTaintsInitParameters) DeepCopyInto(out *EffectiveTaintsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveTaintsInitParameters. +func (in *EffectiveTaintsInitParameters) DeepCopy() *EffectiveTaintsInitParameters { + if in == nil { + return nil + } + out := new(EffectiveTaintsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EffectiveTaintsObservation) DeepCopyInto(out *EffectiveTaintsObservation) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveTaintsObservation. +func (in *EffectiveTaintsObservation) DeepCopy() *EffectiveTaintsObservation { + if in == nil { + return nil + } + out := new(EffectiveTaintsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EffectiveTaintsParameters) DeepCopyInto(out *EffectiveTaintsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveTaintsParameters. +func (in *EffectiveTaintsParameters) DeepCopy() *EffectiveTaintsParameters { + if in == nil { + return nil + } + out := new(EffectiveTaintsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnableK8SBetaApisInitParameters) DeepCopyInto(out *EnableK8SBetaApisInitParameters) { + *out = *in + if in.EnabledApis != nil { + in, out := &in.EnabledApis, &out.EnabledApis + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnableK8SBetaApisInitParameters. +func (in *EnableK8SBetaApisInitParameters) DeepCopy() *EnableK8SBetaApisInitParameters { + if in == nil { + return nil + } + out := new(EnableK8SBetaApisInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnableK8SBetaApisObservation) DeepCopyInto(out *EnableK8SBetaApisObservation) { + *out = *in + if in.EnabledApis != nil { + in, out := &in.EnabledApis, &out.EnabledApis + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnableK8SBetaApisObservation. +func (in *EnableK8SBetaApisObservation) DeepCopy() *EnableK8SBetaApisObservation { + if in == nil { + return nil + } + out := new(EnableK8SBetaApisObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnableK8SBetaApisParameters) DeepCopyInto(out *EnableK8SBetaApisParameters) { + *out = *in + if in.EnabledApis != nil { + in, out := &in.EnabledApis, &out.EnabledApis + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnableK8SBetaApisParameters. +func (in *EnableK8SBetaApisParameters) DeepCopy() *EnableK8SBetaApisParameters { + if in == nil { + return nil + } + out := new(EnableK8SBetaApisParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageConfigInitParameters) DeepCopyInto(out *EphemeralStorageConfigInitParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageConfigInitParameters. +func (in *EphemeralStorageConfigInitParameters) DeepCopy() *EphemeralStorageConfigInitParameters { + if in == nil { + return nil + } + out := new(EphemeralStorageConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageConfigObservation) DeepCopyInto(out *EphemeralStorageConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageConfigObservation. +func (in *EphemeralStorageConfigObservation) DeepCopy() *EphemeralStorageConfigObservation { + if in == nil { + return nil + } + out := new(EphemeralStorageConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageConfigParameters) DeepCopyInto(out *EphemeralStorageConfigParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageConfigParameters. +func (in *EphemeralStorageConfigParameters) DeepCopy() *EphemeralStorageConfigParameters { + if in == nil { + return nil + } + out := new(EphemeralStorageConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageLocalSsdConfigInitParameters) DeepCopyInto(out *EphemeralStorageLocalSsdConfigInitParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageLocalSsdConfigInitParameters. +func (in *EphemeralStorageLocalSsdConfigInitParameters) DeepCopy() *EphemeralStorageLocalSsdConfigInitParameters { + if in == nil { + return nil + } + out := new(EphemeralStorageLocalSsdConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageLocalSsdConfigObservation) DeepCopyInto(out *EphemeralStorageLocalSsdConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageLocalSsdConfigObservation. +func (in *EphemeralStorageLocalSsdConfigObservation) DeepCopy() *EphemeralStorageLocalSsdConfigObservation { + if in == nil { + return nil + } + out := new(EphemeralStorageLocalSsdConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EphemeralStorageLocalSsdConfigParameters) DeepCopyInto(out *EphemeralStorageLocalSsdConfigParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EphemeralStorageLocalSsdConfigParameters. +func (in *EphemeralStorageLocalSsdConfigParameters) DeepCopy() *EphemeralStorageLocalSsdConfigParameters { + if in == nil { + return nil + } + out := new(EphemeralStorageLocalSsdConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionOptionsInitParameters) DeepCopyInto(out *ExclusionOptionsInitParameters) { + *out = *in + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionOptionsInitParameters. +func (in *ExclusionOptionsInitParameters) DeepCopy() *ExclusionOptionsInitParameters { + if in == nil { + return nil + } + out := new(ExclusionOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionOptionsObservation) DeepCopyInto(out *ExclusionOptionsObservation) { + *out = *in + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionOptionsObservation. +func (in *ExclusionOptionsObservation) DeepCopy() *ExclusionOptionsObservation { + if in == nil { + return nil + } + out := new(ExclusionOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionOptionsParameters) DeepCopyInto(out *ExclusionOptionsParameters) { + *out = *in + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionOptionsParameters. +func (in *ExclusionOptionsParameters) DeepCopy() *ExclusionOptionsParameters { + if in == nil { + return nil + } + out := new(ExclusionOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastSocketInitParameters) DeepCopyInto(out *FastSocketInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastSocketInitParameters. +func (in *FastSocketInitParameters) DeepCopy() *FastSocketInitParameters { + if in == nil { + return nil + } + out := new(FastSocketInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastSocketObservation) DeepCopyInto(out *FastSocketObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastSocketObservation. +func (in *FastSocketObservation) DeepCopy() *FastSocketObservation { + if in == nil { + return nil + } + out := new(FastSocketObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastSocketParameters) DeepCopyInto(out *FastSocketParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastSocketParameters. +func (in *FastSocketParameters) DeepCopy() *FastSocketParameters { + if in == nil { + return nil + } + out := new(FastSocketParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.EventType != nil { + in, out := &in.EventType, &out.EventType + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.EventType != nil { + in, out := &in.EventType, &out.EventType + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.EventType != nil { + in, out := &in.EventType, &out.EventType + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FleetInitParameters) DeepCopyInto(out *FleetInitParameters) { + *out = *in + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FleetInitParameters. +func (in *FleetInitParameters) DeepCopy() *FleetInitParameters { + if in == nil { + return nil + } + out := new(FleetInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FleetObservation) DeepCopyInto(out *FleetObservation) { + *out = *in + if in.Membership != nil { + in, out := &in.Membership, &out.Membership + *out = new(string) + **out = **in + } + if in.MembershipID != nil { + in, out := &in.MembershipID, &out.MembershipID + *out = new(string) + **out = **in + } + if in.MembershipLocation != nil { + in, out := &in.MembershipLocation, &out.MembershipLocation + *out = new(string) + **out = **in + } + if in.PreRegistered != nil { + in, out := &in.PreRegistered, &out.PreRegistered + *out = new(bool) + **out = **in + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FleetObservation. +func (in *FleetObservation) DeepCopy() *FleetObservation { + if in == nil { + return nil + } + out := new(FleetObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FleetParameters) DeepCopyInto(out *FleetParameters) { + *out = *in + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FleetParameters. +func (in *FleetParameters) DeepCopy() *FleetParameters { + if in == nil { + return nil + } + out := new(FleetParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPFilestoreCsiDriverConfigInitParameters) DeepCopyInto(out *GCPFilestoreCsiDriverConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPFilestoreCsiDriverConfigInitParameters. +func (in *GCPFilestoreCsiDriverConfigInitParameters) DeepCopy() *GCPFilestoreCsiDriverConfigInitParameters { + if in == nil { + return nil + } + out := new(GCPFilestoreCsiDriverConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPFilestoreCsiDriverConfigObservation) DeepCopyInto(out *GCPFilestoreCsiDriverConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPFilestoreCsiDriverConfigObservation. +func (in *GCPFilestoreCsiDriverConfigObservation) DeepCopy() *GCPFilestoreCsiDriverConfigObservation { + if in == nil { + return nil + } + out := new(GCPFilestoreCsiDriverConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPFilestoreCsiDriverConfigParameters) DeepCopyInto(out *GCPFilestoreCsiDriverConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPFilestoreCsiDriverConfigParameters. +func (in *GCPFilestoreCsiDriverConfigParameters) DeepCopy() *GCPFilestoreCsiDriverConfigParameters { + if in == nil { + return nil + } + out := new(GCPFilestoreCsiDriverConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSecretManagerCertificateConfigInitParameters) DeepCopyInto(out *GCPSecretManagerCertificateConfigInitParameters) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSecretManagerCertificateConfigInitParameters. +func (in *GCPSecretManagerCertificateConfigInitParameters) DeepCopy() *GCPSecretManagerCertificateConfigInitParameters { + if in == nil { + return nil + } + out := new(GCPSecretManagerCertificateConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSecretManagerCertificateConfigObservation) DeepCopyInto(out *GCPSecretManagerCertificateConfigObservation) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSecretManagerCertificateConfigObservation. +func (in *GCPSecretManagerCertificateConfigObservation) DeepCopy() *GCPSecretManagerCertificateConfigObservation { + if in == nil { + return nil + } + out := new(GCPSecretManagerCertificateConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSecretManagerCertificateConfigParameters) DeepCopyInto(out *GCPSecretManagerCertificateConfigParameters) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSecretManagerCertificateConfigParameters. +func (in *GCPSecretManagerCertificateConfigParameters) DeepCopy() *GCPSecretManagerCertificateConfigParameters { + if in == nil { + return nil + } + out := new(GCPSecretManagerCertificateConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayAPIConfigInitParameters) DeepCopyInto(out *GatewayAPIConfigInitParameters) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayAPIConfigInitParameters. +func (in *GatewayAPIConfigInitParameters) DeepCopy() *GatewayAPIConfigInitParameters { + if in == nil { + return nil + } + out := new(GatewayAPIConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayAPIConfigObservation) DeepCopyInto(out *GatewayAPIConfigObservation) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayAPIConfigObservation. +func (in *GatewayAPIConfigObservation) DeepCopy() *GatewayAPIConfigObservation { + if in == nil { + return nil + } + out := new(GatewayAPIConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayAPIConfigParameters) DeepCopyInto(out *GatewayAPIConfigParameters) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayAPIConfigParameters. +func (in *GatewayAPIConfigParameters) DeepCopy() *GatewayAPIConfigParameters { + if in == nil { + return nil + } + out := new(GatewayAPIConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcePersistentDiskCsiDriverConfigInitParameters) DeepCopyInto(out *GcePersistentDiskCsiDriverConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcePersistentDiskCsiDriverConfigInitParameters. +func (in *GcePersistentDiskCsiDriverConfigInitParameters) DeepCopy() *GcePersistentDiskCsiDriverConfigInitParameters { + if in == nil { + return nil + } + out := new(GcePersistentDiskCsiDriverConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcePersistentDiskCsiDriverConfigObservation) DeepCopyInto(out *GcePersistentDiskCsiDriverConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcePersistentDiskCsiDriverConfigObservation. +func (in *GcePersistentDiskCsiDriverConfigObservation) DeepCopy() *GcePersistentDiskCsiDriverConfigObservation { + if in == nil { + return nil + } + out := new(GcePersistentDiskCsiDriverConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcePersistentDiskCsiDriverConfigParameters) DeepCopyInto(out *GcePersistentDiskCsiDriverConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcePersistentDiskCsiDriverConfigParameters. +func (in *GcePersistentDiskCsiDriverConfigParameters) DeepCopy() *GcePersistentDiskCsiDriverConfigParameters { + if in == nil { + return nil + } + out := new(GcePersistentDiskCsiDriverConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcfsConfigInitParameters) DeepCopyInto(out *GcfsConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcfsConfigInitParameters. +func (in *GcfsConfigInitParameters) DeepCopy() *GcfsConfigInitParameters { + if in == nil { + return nil + } + out := new(GcfsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcfsConfigObservation) DeepCopyInto(out *GcfsConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcfsConfigObservation. +func (in *GcfsConfigObservation) DeepCopy() *GcfsConfigObservation { + if in == nil { + return nil + } + out := new(GcfsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcfsConfigParameters) DeepCopyInto(out *GcfsConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcfsConfigParameters. +func (in *GcfsConfigParameters) DeepCopy() *GcfsConfigParameters { + if in == nil { + return nil + } + out := new(GcfsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsFuseCsiDriverConfigInitParameters) DeepCopyInto(out *GcsFuseCsiDriverConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsFuseCsiDriverConfigInitParameters. +func (in *GcsFuseCsiDriverConfigInitParameters) DeepCopy() *GcsFuseCsiDriverConfigInitParameters { + if in == nil { + return nil + } + out := new(GcsFuseCsiDriverConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsFuseCsiDriverConfigObservation) DeepCopyInto(out *GcsFuseCsiDriverConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsFuseCsiDriverConfigObservation. +func (in *GcsFuseCsiDriverConfigObservation) DeepCopy() *GcsFuseCsiDriverConfigObservation { + if in == nil { + return nil + } + out := new(GcsFuseCsiDriverConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsFuseCsiDriverConfigParameters) DeepCopyInto(out *GcsFuseCsiDriverConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsFuseCsiDriverConfigParameters. +func (in *GcsFuseCsiDriverConfigParameters) DeepCopy() *GcsFuseCsiDriverConfigParameters { + if in == nil { + return nil + } + out := new(GcsFuseCsiDriverConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GkeBackupAgentConfigInitParameters) DeepCopyInto(out *GkeBackupAgentConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GkeBackupAgentConfigInitParameters. +func (in *GkeBackupAgentConfigInitParameters) DeepCopy() *GkeBackupAgentConfigInitParameters { + if in == nil { + return nil + } + out := new(GkeBackupAgentConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GkeBackupAgentConfigObservation) DeepCopyInto(out *GkeBackupAgentConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GkeBackupAgentConfigObservation. +func (in *GkeBackupAgentConfigObservation) DeepCopy() *GkeBackupAgentConfigObservation { + if in == nil { + return nil + } + out := new(GkeBackupAgentConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GkeBackupAgentConfigParameters) DeepCopyInto(out *GkeBackupAgentConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GkeBackupAgentConfigParameters. +func (in *GkeBackupAgentConfigParameters) DeepCopy() *GkeBackupAgentConfigParameters { + if in == nil { + return nil + } + out := new(GkeBackupAgentConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuDriverInstallationConfigInitParameters) DeepCopyInto(out *GpuDriverInstallationConfigInitParameters) { + *out = *in + if in.GpuDriverVersion != nil { + in, out := &in.GpuDriverVersion, &out.GpuDriverVersion + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuDriverInstallationConfigInitParameters. +func (in *GpuDriverInstallationConfigInitParameters) DeepCopy() *GpuDriverInstallationConfigInitParameters { + if in == nil { + return nil + } + out := new(GpuDriverInstallationConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuDriverInstallationConfigObservation) DeepCopyInto(out *GpuDriverInstallationConfigObservation) { + *out = *in + if in.GpuDriverVersion != nil { + in, out := &in.GpuDriverVersion, &out.GpuDriverVersion + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuDriverInstallationConfigObservation. +func (in *GpuDriverInstallationConfigObservation) DeepCopy() *GpuDriverInstallationConfigObservation { + if in == nil { + return nil + } + out := new(GpuDriverInstallationConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuDriverInstallationConfigParameters) DeepCopyInto(out *GpuDriverInstallationConfigParameters) { + *out = *in + if in.GpuDriverVersion != nil { + in, out := &in.GpuDriverVersion, &out.GpuDriverVersion + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuDriverInstallationConfigParameters. +func (in *GpuDriverInstallationConfigParameters) DeepCopy() *GpuDriverInstallationConfigParameters { + if in == nil { + return nil + } + out := new(GpuDriverInstallationConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuSharingConfigInitParameters) DeepCopyInto(out *GpuSharingConfigInitParameters) { + *out = *in + if in.GpuSharingStrategy != nil { + in, out := &in.GpuSharingStrategy, &out.GpuSharingStrategy + *out = new(string) + **out = **in + } + if in.MaxSharedClientsPerGpu != nil { + in, out := &in.MaxSharedClientsPerGpu, &out.MaxSharedClientsPerGpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuSharingConfigInitParameters. +func (in *GpuSharingConfigInitParameters) DeepCopy() *GpuSharingConfigInitParameters { + if in == nil { + return nil + } + out := new(GpuSharingConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuSharingConfigObservation) DeepCopyInto(out *GpuSharingConfigObservation) { + *out = *in + if in.GpuSharingStrategy != nil { + in, out := &in.GpuSharingStrategy, &out.GpuSharingStrategy + *out = new(string) + **out = **in + } + if in.MaxSharedClientsPerGpu != nil { + in, out := &in.MaxSharedClientsPerGpu, &out.MaxSharedClientsPerGpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuSharingConfigObservation. +func (in *GpuSharingConfigObservation) DeepCopy() *GpuSharingConfigObservation { + if in == nil { + return nil + } + out := new(GpuSharingConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GpuSharingConfigParameters) DeepCopyInto(out *GpuSharingConfigParameters) { + *out = *in + if in.GpuSharingStrategy != nil { + in, out := &in.GpuSharingStrategy, &out.GpuSharingStrategy + *out = new(string) + **out = **in + } + if in.MaxSharedClientsPerGpu != nil { + in, out := &in.MaxSharedClientsPerGpu, &out.MaxSharedClientsPerGpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GpuSharingConfigParameters. +func (in *GpuSharingConfigParameters) DeepCopy() *GpuSharingConfigParameters { + if in == nil { + return nil + } + out := new(GpuSharingConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuDriverInstallationConfigInitParameters) DeepCopyInto(out *GuestAcceleratorGpuDriverInstallationConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuDriverInstallationConfigInitParameters. +func (in *GuestAcceleratorGpuDriverInstallationConfigInitParameters) DeepCopy() *GuestAcceleratorGpuDriverInstallationConfigInitParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuDriverInstallationConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuDriverInstallationConfigObservation) DeepCopyInto(out *GuestAcceleratorGpuDriverInstallationConfigObservation) { + *out = *in + if in.GpuDriverVersion != nil { + in, out := &in.GpuDriverVersion, &out.GpuDriverVersion + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuDriverInstallationConfigObservation. +func (in *GuestAcceleratorGpuDriverInstallationConfigObservation) DeepCopy() *GuestAcceleratorGpuDriverInstallationConfigObservation { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuDriverInstallationConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuDriverInstallationConfigParameters) DeepCopyInto(out *GuestAcceleratorGpuDriverInstallationConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuDriverInstallationConfigParameters. +func (in *GuestAcceleratorGpuDriverInstallationConfigParameters) DeepCopy() *GuestAcceleratorGpuDriverInstallationConfigParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuDriverInstallationConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuSharingConfigInitParameters) DeepCopyInto(out *GuestAcceleratorGpuSharingConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuSharingConfigInitParameters. +func (in *GuestAcceleratorGpuSharingConfigInitParameters) DeepCopy() *GuestAcceleratorGpuSharingConfigInitParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuSharingConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuSharingConfigObservation) DeepCopyInto(out *GuestAcceleratorGpuSharingConfigObservation) { + *out = *in + if in.GpuSharingStrategy != nil { + in, out := &in.GpuSharingStrategy, &out.GpuSharingStrategy + *out = new(string) + **out = **in + } + if in.MaxSharedClientsPerGpu != nil { + in, out := &in.MaxSharedClientsPerGpu, &out.MaxSharedClientsPerGpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuSharingConfigObservation. +func (in *GuestAcceleratorGpuSharingConfigObservation) DeepCopy() *GuestAcceleratorGpuSharingConfigObservation { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuSharingConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorGpuSharingConfigParameters) DeepCopyInto(out *GuestAcceleratorGpuSharingConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorGpuSharingConfigParameters. +func (in *GuestAcceleratorGpuSharingConfigParameters) DeepCopy() *GuestAcceleratorGpuSharingConfigParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorGpuSharingConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorInitParameters) DeepCopyInto(out *GuestAcceleratorInitParameters) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.GpuDriverInstallationConfig != nil { + in, out := &in.GpuDriverInstallationConfig, &out.GpuDriverInstallationConfig + *out = new(GpuDriverInstallationConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GpuPartitionSize != nil { + in, out := &in.GpuPartitionSize, &out.GpuPartitionSize + *out = new(string) + **out = **in + } + if in.GpuSharingConfig != nil { + in, out := &in.GpuSharingConfig, &out.GpuSharingConfig + *out = new(GpuSharingConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorInitParameters. +func (in *GuestAcceleratorInitParameters) DeepCopy() *GuestAcceleratorInitParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorObservation) DeepCopyInto(out *GuestAcceleratorObservation) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.GpuDriverInstallationConfig != nil { + in, out := &in.GpuDriverInstallationConfig, &out.GpuDriverInstallationConfig + *out = new(GpuDriverInstallationConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GpuPartitionSize != nil { + in, out := &in.GpuPartitionSize, &out.GpuPartitionSize + *out = new(string) + **out = **in + } + if in.GpuSharingConfig != nil { + in, out := &in.GpuSharingConfig, &out.GpuSharingConfig + *out = new(GpuSharingConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorObservation. +func (in *GuestAcceleratorObservation) DeepCopy() *GuestAcceleratorObservation { + if in == nil { + return nil + } + out := new(GuestAcceleratorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GuestAcceleratorParameters) DeepCopyInto(out *GuestAcceleratorParameters) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.GpuDriverInstallationConfig != nil { + in, out := &in.GpuDriverInstallationConfig, &out.GpuDriverInstallationConfig + *out = new(GpuDriverInstallationConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GpuPartitionSize != nil { + in, out := &in.GpuPartitionSize, &out.GpuPartitionSize + *out = new(string) + **out = **in + } + if in.GpuSharingConfig != nil { + in, out := &in.GpuSharingConfig, &out.GpuSharingConfig + *out = new(GpuSharingConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestAcceleratorParameters. +func (in *GuestAcceleratorParameters) DeepCopy() *GuestAcceleratorParameters { + if in == nil { + return nil + } + out := new(GuestAcceleratorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GvnicInitParameters) DeepCopyInto(out *GvnicInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GvnicInitParameters. +func (in *GvnicInitParameters) DeepCopy() *GvnicInitParameters { + if in == nil { + return nil + } + out := new(GvnicInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GvnicObservation) DeepCopyInto(out *GvnicObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GvnicObservation. +func (in *GvnicObservation) DeepCopy() *GvnicObservation { + if in == nil { + return nil + } + out := new(GvnicObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GvnicParameters) DeepCopyInto(out *GvnicParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GvnicParameters. +func (in *GvnicParameters) DeepCopy() *GvnicParameters { + if in == nil { + return nil + } + out := new(GvnicParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPLoadBalancingInitParameters) DeepCopyInto(out *HTTPLoadBalancingInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLoadBalancingInitParameters. +func (in *HTTPLoadBalancingInitParameters) DeepCopy() *HTTPLoadBalancingInitParameters { + if in == nil { + return nil + } + out := new(HTTPLoadBalancingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPLoadBalancingObservation) DeepCopyInto(out *HTTPLoadBalancingObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLoadBalancingObservation. +func (in *HTTPLoadBalancingObservation) DeepCopy() *HTTPLoadBalancingObservation { + if in == nil { + return nil + } + out := new(HTTPLoadBalancingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPLoadBalancingParameters) DeepCopyInto(out *HTTPLoadBalancingParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLoadBalancingParameters. +func (in *HTTPLoadBalancingParameters) DeepCopy() *HTTPLoadBalancingParameters { + if in == nil { + return nil + } + out := new(HTTPLoadBalancingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalingInitParameters) DeepCopyInto(out *HorizontalPodAutoscalingInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalingInitParameters. +func (in *HorizontalPodAutoscalingInitParameters) DeepCopy() *HorizontalPodAutoscalingInitParameters { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalingObservation) DeepCopyInto(out *HorizontalPodAutoscalingObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalingObservation. +func (in *HorizontalPodAutoscalingObservation) DeepCopy() *HorizontalPodAutoscalingObservation { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalingParameters) DeepCopyInto(out *HorizontalPodAutoscalingParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalingParameters. +func (in *HorizontalPodAutoscalingParameters) DeepCopy() *HorizontalPodAutoscalingParameters { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostMaintenancePolicyInitParameters) DeepCopyInto(out *HostMaintenancePolicyInitParameters) { + *out = *in + if in.MaintenanceInterval != nil { + in, out := &in.MaintenanceInterval, &out.MaintenanceInterval + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostMaintenancePolicyInitParameters. +func (in *HostMaintenancePolicyInitParameters) DeepCopy() *HostMaintenancePolicyInitParameters { + if in == nil { + return nil + } + out := new(HostMaintenancePolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostMaintenancePolicyObservation) DeepCopyInto(out *HostMaintenancePolicyObservation) { + *out = *in + if in.MaintenanceInterval != nil { + in, out := &in.MaintenanceInterval, &out.MaintenanceInterval + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostMaintenancePolicyObservation. +func (in *HostMaintenancePolicyObservation) DeepCopy() *HostMaintenancePolicyObservation { + if in == nil { + return nil + } + out := new(HostMaintenancePolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostMaintenancePolicyParameters) DeepCopyInto(out *HostMaintenancePolicyParameters) { + *out = *in + if in.MaintenanceInterval != nil { + in, out := &in.MaintenanceInterval, &out.MaintenanceInterval + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostMaintenancePolicyParameters. +func (in *HostMaintenancePolicyParameters) DeepCopy() *HostMaintenancePolicyParameters { + if in == nil { + return nil + } + out := new(HostMaintenancePolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllocationPolicyInitParameters) DeepCopyInto(out *IPAllocationPolicyInitParameters) { + *out = *in + if in.AdditionalPodRangesConfig != nil { + in, out := &in.AdditionalPodRangesConfig, &out.AdditionalPodRangesConfig + *out = new(AdditionalPodRangesConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4CidrBlock != nil { + in, out := &in.ClusterIPv4CidrBlock, &out.ClusterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ClusterSecondaryRangeName != nil { + in, out := &in.ClusterSecondaryRangeName, &out.ClusterSecondaryRangeName + *out = new(string) + **out = **in + } + if in.PodCidrOverprovisionConfig != nil { + in, out := &in.PodCidrOverprovisionConfig, &out.PodCidrOverprovisionConfig + *out = new(PodCidrOverprovisionConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ServicesIPv4CidrBlock != nil { + in, out := &in.ServicesIPv4CidrBlock, &out.ServicesIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ServicesSecondaryRangeName != nil { + in, out := &in.ServicesSecondaryRangeName, &out.ServicesSecondaryRangeName + *out = new(string) + **out = **in + } + if in.StackType != nil { + in, out := &in.StackType, &out.StackType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllocationPolicyInitParameters. +func (in *IPAllocationPolicyInitParameters) DeepCopy() *IPAllocationPolicyInitParameters { + if in == nil { + return nil + } + out := new(IPAllocationPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllocationPolicyObservation) DeepCopyInto(out *IPAllocationPolicyObservation) { + *out = *in + if in.AdditionalPodRangesConfig != nil { + in, out := &in.AdditionalPodRangesConfig, &out.AdditionalPodRangesConfig + *out = new(AdditionalPodRangesConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4CidrBlock != nil { + in, out := &in.ClusterIPv4CidrBlock, &out.ClusterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ClusterSecondaryRangeName != nil { + in, out := &in.ClusterSecondaryRangeName, &out.ClusterSecondaryRangeName + *out = new(string) + **out = **in + } + if in.PodCidrOverprovisionConfig != nil { + in, out := &in.PodCidrOverprovisionConfig, &out.PodCidrOverprovisionConfig + *out = new(PodCidrOverprovisionConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ServicesIPv4CidrBlock != nil { + in, out := &in.ServicesIPv4CidrBlock, &out.ServicesIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ServicesSecondaryRangeName != nil { + in, out := &in.ServicesSecondaryRangeName, &out.ServicesSecondaryRangeName + *out = new(string) + **out = **in + } + if in.StackType != nil { + in, out := &in.StackType, &out.StackType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllocationPolicyObservation. +func (in *IPAllocationPolicyObservation) DeepCopy() *IPAllocationPolicyObservation { + if in == nil { + return nil + } + out := new(IPAllocationPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllocationPolicyParameters) DeepCopyInto(out *IPAllocationPolicyParameters) { + *out = *in + if in.AdditionalPodRangesConfig != nil { + in, out := &in.AdditionalPodRangesConfig, &out.AdditionalPodRangesConfig + *out = new(AdditionalPodRangesConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ClusterIPv4CidrBlock != nil { + in, out := &in.ClusterIPv4CidrBlock, &out.ClusterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ClusterSecondaryRangeName != nil { + in, out := &in.ClusterSecondaryRangeName, &out.ClusterSecondaryRangeName + *out = new(string) + **out = **in + } + if in.PodCidrOverprovisionConfig != nil { + in, out := &in.PodCidrOverprovisionConfig, &out.PodCidrOverprovisionConfig + *out = new(PodCidrOverprovisionConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ServicesIPv4CidrBlock != nil { + in, out := &in.ServicesIPv4CidrBlock, &out.ServicesIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.ServicesSecondaryRangeName != nil { + in, out := &in.ServicesSecondaryRangeName, &out.ServicesSecondaryRangeName + *out = new(string) + **out = **in + } + if in.StackType != nil { + in, out := &in.StackType, &out.StackType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllocationPolicyParameters. +func (in *IPAllocationPolicyParameters) DeepCopy() *IPAllocationPolicyParameters { + if in == nil { + return nil + } + out := new(IPAllocationPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityServiceConfigInitParameters) DeepCopyInto(out *IdentityServiceConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityServiceConfigInitParameters. +func (in *IdentityServiceConfigInitParameters) DeepCopy() *IdentityServiceConfigInitParameters { + if in == nil { + return nil + } + out := new(IdentityServiceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityServiceConfigObservation) DeepCopyInto(out *IdentityServiceConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityServiceConfigObservation. +func (in *IdentityServiceConfigObservation) DeepCopy() *IdentityServiceConfigObservation { + if in == nil { + return nil + } + out := new(IdentityServiceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityServiceConfigParameters) DeepCopyInto(out *IdentityServiceConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityServiceConfigParameters. +func (in *IdentityServiceConfigParameters) DeepCopy() *IdentityServiceConfigParameters { + if in == nil { + return nil + } + out := new(IdentityServiceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IstioConfigInitParameters) DeepCopyInto(out *IstioConfigInitParameters) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(string) + **out = **in + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioConfigInitParameters. +func (in *IstioConfigInitParameters) DeepCopy() *IstioConfigInitParameters { + if in == nil { + return nil + } + out := new(IstioConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IstioConfigObservation) DeepCopyInto(out *IstioConfigObservation) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(string) + **out = **in + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioConfigObservation. +func (in *IstioConfigObservation) DeepCopy() *IstioConfigObservation { + if in == nil { + return nil + } + out := new(IstioConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IstioConfigParameters) DeepCopyInto(out *IstioConfigParameters) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(string) + **out = **in + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioConfigParameters. +func (in *IstioConfigParameters) DeepCopy() *IstioConfigParameters { + if in == nil { + return nil + } + out := new(IstioConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KalmConfigInitParameters) DeepCopyInto(out *KalmConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KalmConfigInitParameters. +func (in *KalmConfigInitParameters) DeepCopy() *KalmConfigInitParameters { + if in == nil { + return nil + } + out := new(KalmConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KalmConfigObservation) DeepCopyInto(out *KalmConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KalmConfigObservation. +func (in *KalmConfigObservation) DeepCopy() *KalmConfigObservation { + if in == nil { + return nil + } + out := new(KalmConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KalmConfigParameters) DeepCopyInto(out *KalmConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KalmConfigParameters. +func (in *KalmConfigParameters) DeepCopy() *KalmConfigParameters { + if in == nil { + return nil + } + out := new(KalmConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeletConfigInitParameters) DeepCopyInto(out *KubeletConfigInitParameters) { + *out = *in + if in.CPUCfsQuota != nil { + in, out := &in.CPUCfsQuota, &out.CPUCfsQuota + *out = new(bool) + **out = **in + } + if in.CPUCfsQuotaPeriod != nil { + in, out := &in.CPUCfsQuotaPeriod, &out.CPUCfsQuotaPeriod + *out = new(string) + **out = **in + } + if in.CPUManagerPolicy != nil { + in, out := &in.CPUManagerPolicy, &out.CPUManagerPolicy + *out = new(string) + **out = **in + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.PodPidsLimit != nil { + in, out := &in.PodPidsLimit, &out.PodPidsLimit + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfigInitParameters. +func (in *KubeletConfigInitParameters) DeepCopy() *KubeletConfigInitParameters { + if in == nil { + return nil + } + out := new(KubeletConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeletConfigObservation) DeepCopyInto(out *KubeletConfigObservation) { + *out = *in + if in.CPUCfsQuota != nil { + in, out := &in.CPUCfsQuota, &out.CPUCfsQuota + *out = new(bool) + **out = **in + } + if in.CPUCfsQuotaPeriod != nil { + in, out := &in.CPUCfsQuotaPeriod, &out.CPUCfsQuotaPeriod + *out = new(string) + **out = **in + } + if in.CPUManagerPolicy != nil { + in, out := &in.CPUManagerPolicy, &out.CPUManagerPolicy + *out = new(string) + **out = **in + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.PodPidsLimit != nil { + in, out := &in.PodPidsLimit, &out.PodPidsLimit + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfigObservation. +func (in *KubeletConfigObservation) DeepCopy() *KubeletConfigObservation { + if in == nil { + return nil + } + out := new(KubeletConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeletConfigParameters) DeepCopyInto(out *KubeletConfigParameters) { + *out = *in + if in.CPUCfsQuota != nil { + in, out := &in.CPUCfsQuota, &out.CPUCfsQuota + *out = new(bool) + **out = **in + } + if in.CPUCfsQuotaPeriod != nil { + in, out := &in.CPUCfsQuotaPeriod, &out.CPUCfsQuotaPeriod + *out = new(string) + **out = **in + } + if in.CPUManagerPolicy != nil { + in, out := &in.CPUManagerPolicy, &out.CPUManagerPolicy + *out = new(string) + **out = **in + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.PodPidsLimit != nil { + in, out := &in.PodPidsLimit, &out.PodPidsLimit + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfigParameters. +func (in *KubeletConfigParameters) DeepCopy() *KubeletConfigParameters { + if in == nil { + return nil + } + out := new(KubeletConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinuxNodeConfigInitParameters) DeepCopyInto(out *LinuxNodeConfigInitParameters) { + *out = *in + if in.CgroupMode != nil { + in, out := &in.CgroupMode, &out.CgroupMode + *out = new(string) + **out = **in + } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxNodeConfigInitParameters. +func (in *LinuxNodeConfigInitParameters) DeepCopy() *LinuxNodeConfigInitParameters { + if in == nil { + return nil + } + out := new(LinuxNodeConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinuxNodeConfigObservation) DeepCopyInto(out *LinuxNodeConfigObservation) { + *out = *in + if in.CgroupMode != nil { + in, out := &in.CgroupMode, &out.CgroupMode + *out = new(string) + **out = **in + } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxNodeConfigObservation. +func (in *LinuxNodeConfigObservation) DeepCopy() *LinuxNodeConfigObservation { + if in == nil { + return nil + } + out := new(LinuxNodeConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinuxNodeConfigParameters) DeepCopyInto(out *LinuxNodeConfigParameters) { + *out = *in + if in.CgroupMode != nil { + in, out := &in.CgroupMode, &out.CgroupMode + *out = new(string) + **out = **in + } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxNodeConfigParameters. +func (in *LinuxNodeConfigParameters) DeepCopy() *LinuxNodeConfigParameters { + if in == nil { + return nil + } + out := new(LinuxNodeConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalNvmeSsdBlockConfigInitParameters) DeepCopyInto(out *LocalNvmeSsdBlockConfigInitParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalNvmeSsdBlockConfigInitParameters. +func (in *LocalNvmeSsdBlockConfigInitParameters) DeepCopy() *LocalNvmeSsdBlockConfigInitParameters { + if in == nil { + return nil + } + out := new(LocalNvmeSsdBlockConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalNvmeSsdBlockConfigObservation) DeepCopyInto(out *LocalNvmeSsdBlockConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalNvmeSsdBlockConfigObservation. +func (in *LocalNvmeSsdBlockConfigObservation) DeepCopy() *LocalNvmeSsdBlockConfigObservation { + if in == nil { + return nil + } + out := new(LocalNvmeSsdBlockConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalNvmeSsdBlockConfigParameters) DeepCopyInto(out *LocalNvmeSsdBlockConfigParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalNvmeSsdBlockConfigParameters. +func (in *LocalNvmeSsdBlockConfigParameters) DeepCopy() *LocalNvmeSsdBlockConfigParameters { + if in == nil { + return nil + } + out := new(LocalNvmeSsdBlockConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoggingConfigInitParameters) DeepCopyInto(out *LoggingConfigInitParameters) { + *out = *in + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoggingConfigInitParameters. +func (in *LoggingConfigInitParameters) DeepCopy() *LoggingConfigInitParameters { + if in == nil { + return nil + } + out := new(LoggingConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoggingConfigObservation) DeepCopyInto(out *LoggingConfigObservation) { + *out = *in + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoggingConfigObservation. +func (in *LoggingConfigObservation) DeepCopy() *LoggingConfigObservation { + if in == nil { + return nil + } + out := new(LoggingConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoggingConfigParameters) DeepCopyInto(out *LoggingConfigParameters) { + *out = *in + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoggingConfigParameters. +func (in *LoggingConfigParameters) DeepCopy() *LoggingConfigParameters { + if in == nil { + return nil + } + out := new(LoggingConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenanceExclusionInitParameters) DeepCopyInto(out *MaintenanceExclusionInitParameters) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.ExclusionName != nil { + in, out := &in.ExclusionName, &out.ExclusionName + *out = new(string) + **out = **in + } + if in.ExclusionOptions != nil { + in, out := &in.ExclusionOptions, &out.ExclusionOptions + *out = new(ExclusionOptionsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceExclusionInitParameters. +func (in *MaintenanceExclusionInitParameters) DeepCopy() *MaintenanceExclusionInitParameters { + if in == nil { + return nil + } + out := new(MaintenanceExclusionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenanceExclusionObservation) DeepCopyInto(out *MaintenanceExclusionObservation) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.ExclusionName != nil { + in, out := &in.ExclusionName, &out.ExclusionName + *out = new(string) + **out = **in + } + if in.ExclusionOptions != nil { + in, out := &in.ExclusionOptions, &out.ExclusionOptions + *out = new(ExclusionOptionsObservation) + (*in).DeepCopyInto(*out) + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceExclusionObservation. +func (in *MaintenanceExclusionObservation) DeepCopy() *MaintenanceExclusionObservation { + if in == nil { + return nil + } + out := new(MaintenanceExclusionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenanceExclusionParameters) DeepCopyInto(out *MaintenanceExclusionParameters) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.ExclusionName != nil { + in, out := &in.ExclusionName, &out.ExclusionName + *out = new(string) + **out = **in + } + if in.ExclusionOptions != nil { + in, out := &in.ExclusionOptions, &out.ExclusionOptions + *out = new(ExclusionOptionsParameters) + (*in).DeepCopyInto(*out) + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceExclusionParameters. +func (in *MaintenanceExclusionParameters) DeepCopy() *MaintenanceExclusionParameters { + if in == nil { + return nil + } + out := new(MaintenanceExclusionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenancePolicyInitParameters) DeepCopyInto(out *MaintenancePolicyInitParameters) { + *out = *in + if in.DailyMaintenanceWindow != nil { + in, out := &in.DailyMaintenanceWindow, &out.DailyMaintenanceWindow + *out = new(DailyMaintenanceWindowInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MaintenanceExclusion != nil { + in, out := &in.MaintenanceExclusion, &out.MaintenanceExclusion + *out = make([]MaintenanceExclusionInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RecurringWindow != nil { + in, out := &in.RecurringWindow, &out.RecurringWindow + *out = new(RecurringWindowInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenancePolicyInitParameters. +func (in *MaintenancePolicyInitParameters) DeepCopy() *MaintenancePolicyInitParameters { + if in == nil { + return nil + } + out := new(MaintenancePolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenancePolicyObservation) DeepCopyInto(out *MaintenancePolicyObservation) { + *out = *in + if in.DailyMaintenanceWindow != nil { + in, out := &in.DailyMaintenanceWindow, &out.DailyMaintenanceWindow + *out = new(DailyMaintenanceWindowObservation) + (*in).DeepCopyInto(*out) + } + if in.MaintenanceExclusion != nil { + in, out := &in.MaintenanceExclusion, &out.MaintenanceExclusion + *out = make([]MaintenanceExclusionObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RecurringWindow != nil { + in, out := &in.RecurringWindow, &out.RecurringWindow + *out = new(RecurringWindowObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenancePolicyObservation. +func (in *MaintenancePolicyObservation) DeepCopy() *MaintenancePolicyObservation { + if in == nil { + return nil + } + out := new(MaintenancePolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenancePolicyParameters) DeepCopyInto(out *MaintenancePolicyParameters) { + *out = *in + if in.DailyMaintenanceWindow != nil { + in, out := &in.DailyMaintenanceWindow, &out.DailyMaintenanceWindow + *out = new(DailyMaintenanceWindowParameters) + (*in).DeepCopyInto(*out) + } + if in.MaintenanceExclusion != nil { + in, out := &in.MaintenanceExclusion, &out.MaintenanceExclusion + *out = make([]MaintenanceExclusionParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RecurringWindow != nil { + in, out := &in.RecurringWindow, &out.RecurringWindow + *out = new(RecurringWindowParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenancePolicyParameters. +func (in *MaintenancePolicyParameters) DeepCopy() *MaintenancePolicyParameters { + if in == nil { + return nil + } + out := new(MaintenancePolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedPrometheusInitParameters) DeepCopyInto(out *ManagedPrometheusInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedPrometheusInitParameters. +func (in *ManagedPrometheusInitParameters) DeepCopy() *ManagedPrometheusInitParameters { + if in == nil { + return nil + } + out := new(ManagedPrometheusInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedPrometheusObservation) DeepCopyInto(out *ManagedPrometheusObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedPrometheusObservation. +func (in *ManagedPrometheusObservation) DeepCopy() *ManagedPrometheusObservation { + if in == nil { + return nil + } + out := new(ManagedPrometheusObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedPrometheusParameters) DeepCopyInto(out *ManagedPrometheusParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedPrometheusParameters. +func (in *ManagedPrometheusParameters) DeepCopy() *ManagedPrometheusParameters { + if in == nil { + return nil + } + out := new(ManagedPrometheusParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagementInitParameters) DeepCopyInto(out *ManagementInitParameters) { + *out = *in + if in.AutoRepair != nil { + in, out := &in.AutoRepair, &out.AutoRepair + *out = new(bool) + **out = **in + } + if in.AutoUpgrade != nil { + in, out := &in.AutoUpgrade, &out.AutoUpgrade + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementInitParameters. +func (in *ManagementInitParameters) DeepCopy() *ManagementInitParameters { + if in == nil { + return nil + } + out := new(ManagementInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagementObservation) DeepCopyInto(out *ManagementObservation) { + *out = *in + if in.AutoRepair != nil { + in, out := &in.AutoRepair, &out.AutoRepair + *out = new(bool) + **out = **in + } + if in.AutoUpgrade != nil { + in, out := &in.AutoUpgrade, &out.AutoUpgrade + *out = new(bool) + **out = **in + } + if in.UpgradeOptions != nil { + in, out := &in.UpgradeOptions, &out.UpgradeOptions + *out = make([]UpgradeOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementObservation. +func (in *ManagementObservation) DeepCopy() *ManagementObservation { + if in == nil { + return nil + } + out := new(ManagementObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagementParameters) DeepCopyInto(out *ManagementParameters) { + *out = *in + if in.AutoRepair != nil { + in, out := &in.AutoRepair, &out.AutoRepair + *out = new(bool) + **out = **in + } + if in.AutoUpgrade != nil { + in, out := &in.AutoUpgrade, &out.AutoUpgrade + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementParameters. +func (in *ManagementParameters) DeepCopy() *ManagementParameters { + if in == nil { + return nil + } + out := new(ManagementParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthInitParameters) DeepCopyInto(out *MasterAuthInitParameters) { + *out = *in + if in.ClientCertificateConfig != nil { + in, out := &in.ClientCertificateConfig, &out.ClientCertificateConfig + *out = new(ClientCertificateConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthInitParameters. +func (in *MasterAuthInitParameters) DeepCopy() *MasterAuthInitParameters { + if in == nil { + return nil + } + out := new(MasterAuthInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthObservation) DeepCopyInto(out *MasterAuthObservation) { + *out = *in + if in.ClientCertificate != nil { + in, out := &in.ClientCertificate, &out.ClientCertificate + *out = new(string) + **out = **in + } + if in.ClientCertificateConfig != nil { + in, out := &in.ClientCertificateConfig, &out.ClientCertificateConfig + *out = new(ClientCertificateConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ClusterCACertificate != nil { + in, out := &in.ClusterCACertificate, &out.ClusterCACertificate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthObservation. +func (in *MasterAuthObservation) DeepCopy() *MasterAuthObservation { + if in == nil { + return nil + } + out := new(MasterAuthObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthParameters) DeepCopyInto(out *MasterAuthParameters) { + *out = *in + if in.ClientCertificateConfig != nil { + in, out := &in.ClientCertificateConfig, &out.ClientCertificateConfig + *out = new(ClientCertificateConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthParameters. +func (in *MasterAuthParameters) DeepCopy() *MasterAuthParameters { + if in == nil { + return nil + } + out := new(MasterAuthParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthorizedNetworksConfigInitParameters) DeepCopyInto(out *MasterAuthorizedNetworksConfigInitParameters) { + *out = *in + if in.CidrBlocks != nil { + in, out := &in.CidrBlocks, &out.CidrBlocks + *out = make([]CidrBlocksInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GCPPublicCidrsAccessEnabled != nil { + in, out := &in.GCPPublicCidrsAccessEnabled, &out.GCPPublicCidrsAccessEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthorizedNetworksConfigInitParameters. +func (in *MasterAuthorizedNetworksConfigInitParameters) DeepCopy() *MasterAuthorizedNetworksConfigInitParameters { + if in == nil { + return nil + } + out := new(MasterAuthorizedNetworksConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthorizedNetworksConfigObservation) DeepCopyInto(out *MasterAuthorizedNetworksConfigObservation) { + *out = *in + if in.CidrBlocks != nil { + in, out := &in.CidrBlocks, &out.CidrBlocks + *out = make([]CidrBlocksObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GCPPublicCidrsAccessEnabled != nil { + in, out := &in.GCPPublicCidrsAccessEnabled, &out.GCPPublicCidrsAccessEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthorizedNetworksConfigObservation. +func (in *MasterAuthorizedNetworksConfigObservation) DeepCopy() *MasterAuthorizedNetworksConfigObservation { + if in == nil { + return nil + } + out := new(MasterAuthorizedNetworksConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterAuthorizedNetworksConfigParameters) DeepCopyInto(out *MasterAuthorizedNetworksConfigParameters) { + *out = *in + if in.CidrBlocks != nil { + in, out := &in.CidrBlocks, &out.CidrBlocks + *out = make([]CidrBlocksParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GCPPublicCidrsAccessEnabled != nil { + in, out := &in.GCPPublicCidrsAccessEnabled, &out.GCPPublicCidrsAccessEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterAuthorizedNetworksConfigParameters. +func (in *MasterAuthorizedNetworksConfigParameters) DeepCopy() *MasterAuthorizedNetworksConfigParameters { + if in == nil { + return nil + } + out := new(MasterAuthorizedNetworksConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterGlobalAccessConfigInitParameters) DeepCopyInto(out *MasterGlobalAccessConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterGlobalAccessConfigInitParameters. +func (in *MasterGlobalAccessConfigInitParameters) DeepCopy() *MasterGlobalAccessConfigInitParameters { + if in == nil { + return nil + } + out := new(MasterGlobalAccessConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterGlobalAccessConfigObservation) DeepCopyInto(out *MasterGlobalAccessConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterGlobalAccessConfigObservation. +func (in *MasterGlobalAccessConfigObservation) DeepCopy() *MasterGlobalAccessConfigObservation { + if in == nil { + return nil + } + out := new(MasterGlobalAccessConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MasterGlobalAccessConfigParameters) DeepCopyInto(out *MasterGlobalAccessConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterGlobalAccessConfigParameters. +func (in *MasterGlobalAccessConfigParameters) DeepCopy() *MasterGlobalAccessConfigParameters { + if in == nil { + return nil + } + out := new(MasterGlobalAccessConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MeshCertificatesInitParameters) DeepCopyInto(out *MeshCertificatesInitParameters) { + *out = *in + if in.EnableCertificates != nil { + in, out := &in.EnableCertificates, &out.EnableCertificates + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MeshCertificatesInitParameters. +func (in *MeshCertificatesInitParameters) DeepCopy() *MeshCertificatesInitParameters { + if in == nil { + return nil + } + out := new(MeshCertificatesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MeshCertificatesObservation) DeepCopyInto(out *MeshCertificatesObservation) { + *out = *in + if in.EnableCertificates != nil { + in, out := &in.EnableCertificates, &out.EnableCertificates + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MeshCertificatesObservation. +func (in *MeshCertificatesObservation) DeepCopy() *MeshCertificatesObservation { + if in == nil { + return nil + } + out := new(MeshCertificatesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MeshCertificatesParameters) DeepCopyInto(out *MeshCertificatesParameters) { + *out = *in + if in.EnableCertificates != nil { + in, out := &in.EnableCertificates, &out.EnableCertificates + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MeshCertificatesParameters. +func (in *MeshCertificatesParameters) DeepCopy() *MeshCertificatesParameters { + if in == nil { + return nil + } + out := new(MeshCertificatesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitoringConfigInitParameters) DeepCopyInto(out *MonitoringConfigInitParameters) { + *out = *in + if in.AdvancedDatapathObservabilityConfig != nil { + in, out := &in.AdvancedDatapathObservabilityConfig, &out.AdvancedDatapathObservabilityConfig + *out = new(AdvancedDatapathObservabilityConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ManagedPrometheus != nil { + in, out := &in.ManagedPrometheus, &out.ManagedPrometheus + *out = new(ManagedPrometheusInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitoringConfigInitParameters. +func (in *MonitoringConfigInitParameters) DeepCopy() *MonitoringConfigInitParameters { + if in == nil { + return nil + } + out := new(MonitoringConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitoringConfigObservation) DeepCopyInto(out *MonitoringConfigObservation) { + *out = *in + if in.AdvancedDatapathObservabilityConfig != nil { + in, out := &in.AdvancedDatapathObservabilityConfig, &out.AdvancedDatapathObservabilityConfig + *out = new(AdvancedDatapathObservabilityConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ManagedPrometheus != nil { + in, out := &in.ManagedPrometheus, &out.ManagedPrometheus + *out = new(ManagedPrometheusObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitoringConfigObservation. +func (in *MonitoringConfigObservation) DeepCopy() *MonitoringConfigObservation { + if in == nil { + return nil + } + out := new(MonitoringConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitoringConfigParameters) DeepCopyInto(out *MonitoringConfigParameters) { + *out = *in + if in.AdvancedDatapathObservabilityConfig != nil { + in, out := &in.AdvancedDatapathObservabilityConfig, &out.AdvancedDatapathObservabilityConfig + *out = new(AdvancedDatapathObservabilityConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableComponents != nil { + in, out := &in.EnableComponents, &out.EnableComponents + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ManagedPrometheus != nil { + in, out := &in.ManagedPrometheus, &out.ManagedPrometheus + *out = new(ManagedPrometheusParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitoringConfigParameters. +func (in *MonitoringConfigParameters) DeepCopy() *MonitoringConfigParameters { + if in == nil { + return nil + } + out := new(MonitoringConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigInitParameters) DeepCopyInto(out *NetworkConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigInitParameters. +func (in *NetworkConfigInitParameters) DeepCopy() *NetworkConfigInitParameters { + if in == nil { + return nil + } + out := new(NetworkConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigObservation) DeepCopyInto(out *NetworkConfigObservation) { + *out = *in + if in.AdditionalNodeNetworkConfigs != nil { + in, out := &in.AdditionalNodeNetworkConfigs, &out.AdditionalNodeNetworkConfigs + *out = make([]AdditionalNodeNetworkConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AdditionalPodNetworkConfigs != nil { + in, out := &in.AdditionalPodNetworkConfigs, &out.AdditionalPodNetworkConfigs + *out = make([]AdditionalPodNetworkConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CreatePodRange != nil { + in, out := &in.CreatePodRange, &out.CreatePodRange + *out = new(bool) + **out = **in + } + if in.EnablePrivateNodes != nil { + in, out := &in.EnablePrivateNodes, &out.EnablePrivateNodes + *out = new(bool) + **out = **in + } + if in.NetworkPerformanceConfig != nil { + in, out := &in.NetworkPerformanceConfig, &out.NetworkPerformanceConfig + *out = new(NetworkPerformanceConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.PodCidrOverprovisionConfig != nil { + in, out := &in.PodCidrOverprovisionConfig, &out.PodCidrOverprovisionConfig + *out = new(NetworkConfigPodCidrOverprovisionConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.PodIPv4CidrBlock != nil { + in, out := &in.PodIPv4CidrBlock, &out.PodIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.PodRange != nil { + in, out := &in.PodRange, &out.PodRange + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigObservation. +func (in *NetworkConfigObservation) DeepCopy() *NetworkConfigObservation { + if in == nil { + return nil + } + out := new(NetworkConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigParameters) DeepCopyInto(out *NetworkConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigParameters. +func (in *NetworkConfigParameters) DeepCopy() *NetworkConfigParameters { + if in == nil { + return nil + } + out := new(NetworkConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigPodCidrOverprovisionConfigInitParameters) DeepCopyInto(out *NetworkConfigPodCidrOverprovisionConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigPodCidrOverprovisionConfigInitParameters. +func (in *NetworkConfigPodCidrOverprovisionConfigInitParameters) DeepCopy() *NetworkConfigPodCidrOverprovisionConfigInitParameters { + if in == nil { + return nil + } + out := new(NetworkConfigPodCidrOverprovisionConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigPodCidrOverprovisionConfigObservation) DeepCopyInto(out *NetworkConfigPodCidrOverprovisionConfigObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigPodCidrOverprovisionConfigObservation. +func (in *NetworkConfigPodCidrOverprovisionConfigObservation) DeepCopy() *NetworkConfigPodCidrOverprovisionConfigObservation { + if in == nil { + return nil + } + out := new(NetworkConfigPodCidrOverprovisionConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkConfigPodCidrOverprovisionConfigParameters) DeepCopyInto(out *NetworkConfigPodCidrOverprovisionConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfigPodCidrOverprovisionConfigParameters. +func (in *NetworkConfigPodCidrOverprovisionConfigParameters) DeepCopy() *NetworkConfigPodCidrOverprovisionConfigParameters { + if in == nil { + return nil + } + out := new(NetworkConfigPodCidrOverprovisionConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPerformanceConfigInitParameters) DeepCopyInto(out *NetworkPerformanceConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPerformanceConfigInitParameters. +func (in *NetworkPerformanceConfigInitParameters) DeepCopy() *NetworkPerformanceConfigInitParameters { + if in == nil { + return nil + } + out := new(NetworkPerformanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPerformanceConfigObservation) DeepCopyInto(out *NetworkPerformanceConfigObservation) { + *out = *in + if in.TotalEgressBandwidthTier != nil { + in, out := &in.TotalEgressBandwidthTier, &out.TotalEgressBandwidthTier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPerformanceConfigObservation. +func (in *NetworkPerformanceConfigObservation) DeepCopy() *NetworkPerformanceConfigObservation { + if in == nil { + return nil + } + out := new(NetworkPerformanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPerformanceConfigParameters) DeepCopyInto(out *NetworkPerformanceConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPerformanceConfigParameters. +func (in *NetworkPerformanceConfigParameters) DeepCopy() *NetworkPerformanceConfigParameters { + if in == nil { + return nil + } + out := new(NetworkPerformanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyConfigInitParameters) DeepCopyInto(out *NetworkPolicyConfigInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyConfigInitParameters. +func (in *NetworkPolicyConfigInitParameters) DeepCopy() *NetworkPolicyConfigInitParameters { + if in == nil { + return nil + } + out := new(NetworkPolicyConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyConfigObservation) DeepCopyInto(out *NetworkPolicyConfigObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyConfigObservation. +func (in *NetworkPolicyConfigObservation) DeepCopy() *NetworkPolicyConfigObservation { + if in == nil { + return nil + } + out := new(NetworkPolicyConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyConfigParameters) DeepCopyInto(out *NetworkPolicyConfigParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyConfigParameters. +func (in *NetworkPolicyConfigParameters) DeepCopy() *NetworkPolicyConfigParameters { + if in == nil { + return nil + } + out := new(NetworkPolicyConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyInitParameters) DeepCopyInto(out *NetworkPolicyInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Provider != nil { + in, out := &in.Provider, &out.Provider + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyInitParameters. +func (in *NetworkPolicyInitParameters) DeepCopy() *NetworkPolicyInitParameters { + if in == nil { + return nil + } + out := new(NetworkPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyObservation) DeepCopyInto(out *NetworkPolicyObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Provider != nil { + in, out := &in.Provider, &out.Provider + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyObservation. +func (in *NetworkPolicyObservation) DeepCopy() *NetworkPolicyObservation { + if in == nil { + return nil + } + out := new(NetworkPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyParameters) DeepCopyInto(out *NetworkPolicyParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Provider != nil { + in, out := &in.Provider, &out.Provider + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyParameters. +func (in *NetworkPolicyParameters) DeepCopy() *NetworkPolicyParameters { + if in == nil { + return nil + } + out := new(NetworkPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkTagsInitParameters) DeepCopyInto(out *NetworkTagsInitParameters) { + *out = *in + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkTagsInitParameters. +func (in *NetworkTagsInitParameters) DeepCopy() *NetworkTagsInitParameters { + if in == nil { + return nil + } + out := new(NetworkTagsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkTagsObservation) DeepCopyInto(out *NetworkTagsObservation) { + *out = *in + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkTagsObservation. +func (in *NetworkTagsObservation) DeepCopy() *NetworkTagsObservation { + if in == nil { + return nil + } + out := new(NetworkTagsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkTagsParameters) DeepCopyInto(out *NetworkTagsParameters) { + *out = *in + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkTagsParameters. +func (in *NetworkTagsParameters) DeepCopy() *NetworkTagsParameters { + if in == nil { + return nil + } + out := new(NetworkTagsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAffinityInitParameters) DeepCopyInto(out *NodeAffinityInitParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Operator != nil { + in, out := &in.Operator, &out.Operator + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinityInitParameters. +func (in *NodeAffinityInitParameters) DeepCopy() *NodeAffinityInitParameters { + if in == nil { + return nil + } + out := new(NodeAffinityInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAffinityObservation) DeepCopyInto(out *NodeAffinityObservation) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Operator != nil { + in, out := &in.Operator, &out.Operator + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinityObservation. +func (in *NodeAffinityObservation) DeepCopy() *NodeAffinityObservation { + if in == nil { + return nil + } + out := new(NodeAffinityObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAffinityParameters) DeepCopyInto(out *NodeAffinityParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Operator != nil { + in, out := &in.Operator, &out.Operator + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinityParameters. +func (in *NodeAffinityParameters) DeepCopy() *NodeAffinityParameters { + if in == nil { + return nil + } + out := new(NodeAffinityParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigAdvancedMachineFeaturesInitParameters) DeepCopyInto(out *NodeConfigAdvancedMachineFeaturesInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigAdvancedMachineFeaturesInitParameters. +func (in *NodeConfigAdvancedMachineFeaturesInitParameters) DeepCopy() *NodeConfigAdvancedMachineFeaturesInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigAdvancedMachineFeaturesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigAdvancedMachineFeaturesObservation) DeepCopyInto(out *NodeConfigAdvancedMachineFeaturesObservation) { + *out = *in + if in.EnableNestedVirtualization != nil { + in, out := &in.EnableNestedVirtualization, &out.EnableNestedVirtualization + *out = new(bool) + **out = **in + } + if in.ThreadsPerCore != nil { + in, out := &in.ThreadsPerCore, &out.ThreadsPerCore + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigAdvancedMachineFeaturesObservation. +func (in *NodeConfigAdvancedMachineFeaturesObservation) DeepCopy() *NodeConfigAdvancedMachineFeaturesObservation { + if in == nil { + return nil + } + out := new(NodeConfigAdvancedMachineFeaturesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigAdvancedMachineFeaturesParameters) DeepCopyInto(out *NodeConfigAdvancedMachineFeaturesParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigAdvancedMachineFeaturesParameters. +func (in *NodeConfigAdvancedMachineFeaturesParameters) DeepCopy() *NodeConfigAdvancedMachineFeaturesParameters { + if in == nil { + return nil + } + out := new(NodeConfigAdvancedMachineFeaturesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigConfidentialNodesInitParameters) DeepCopyInto(out *NodeConfigConfidentialNodesInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigConfidentialNodesInitParameters. +func (in *NodeConfigConfidentialNodesInitParameters) DeepCopy() *NodeConfigConfidentialNodesInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigConfidentialNodesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigConfidentialNodesObservation) DeepCopyInto(out *NodeConfigConfidentialNodesObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigConfidentialNodesObservation. +func (in *NodeConfigConfidentialNodesObservation) DeepCopy() *NodeConfigConfidentialNodesObservation { + if in == nil { + return nil + } + out := new(NodeConfigConfidentialNodesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigConfidentialNodesParameters) DeepCopyInto(out *NodeConfigConfidentialNodesParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigConfidentialNodesParameters. +func (in *NodeConfigConfidentialNodesParameters) DeepCopy() *NodeConfigConfidentialNodesParameters { + if in == nil { + return nil + } + out := new(NodeConfigConfidentialNodesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigContainerdConfigInitParameters) DeepCopyInto(out *NodeConfigContainerdConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigContainerdConfigInitParameters. +func (in *NodeConfigContainerdConfigInitParameters) DeepCopy() *NodeConfigContainerdConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigContainerdConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigContainerdConfigObservation) DeepCopyInto(out *NodeConfigContainerdConfigObservation) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(ContainerdConfigPrivateRegistryAccessConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigContainerdConfigObservation. +func (in *NodeConfigContainerdConfigObservation) DeepCopy() *NodeConfigContainerdConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigContainerdConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigContainerdConfigParameters) DeepCopyInto(out *NodeConfigContainerdConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigContainerdConfigParameters. +func (in *NodeConfigContainerdConfigParameters) DeepCopy() *NodeConfigContainerdConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigContainerdConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigInitParameters) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigInitParameters) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigInitParameters. +func (in *NodeConfigDefaultsContainerdConfigInitParameters) DeepCopy() *NodeConfigDefaultsContainerdConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigObservation) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigObservation) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigObservation. +func (in *NodeConfigDefaultsContainerdConfigObservation) DeepCopy() *NodeConfigDefaultsContainerdConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigParameters) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigParameters) { + *out = *in + if in.PrivateRegistryAccessConfig != nil { + in, out := &in.PrivateRegistryAccessConfig, &out.PrivateRegistryAccessConfig + *out = new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigParameters. +func (in *NodeConfigDefaultsContainerdConfigParameters) DeepCopy() *NodeConfigDefaultsContainerdConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters) DeepCopy() *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation) DeepCopy() *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters) DeepCopyInto(out *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]ContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters. +func (in *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters) DeepCopy() *NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsGcfsConfigInitParameters) DeepCopyInto(out *NodeConfigDefaultsGcfsConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsGcfsConfigInitParameters. +func (in *NodeConfigDefaultsGcfsConfigInitParameters) DeepCopy() *NodeConfigDefaultsGcfsConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsGcfsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsGcfsConfigObservation) DeepCopyInto(out *NodeConfigDefaultsGcfsConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsGcfsConfigObservation. +func (in *NodeConfigDefaultsGcfsConfigObservation) DeepCopy() *NodeConfigDefaultsGcfsConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsGcfsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsGcfsConfigParameters) DeepCopyInto(out *NodeConfigDefaultsGcfsConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsGcfsConfigParameters. +func (in *NodeConfigDefaultsGcfsConfigParameters) DeepCopy() *NodeConfigDefaultsGcfsConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsGcfsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsInitParameters) DeepCopyInto(out *NodeConfigDefaultsInitParameters) { + *out = *in + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(NodeConfigDefaultsContainerdConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(NodeConfigDefaultsGcfsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsInitParameters. +func (in *NodeConfigDefaultsInitParameters) DeepCopy() *NodeConfigDefaultsInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsObservation) DeepCopyInto(out *NodeConfigDefaultsObservation) { + *out = *in + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(NodeConfigDefaultsContainerdConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(NodeConfigDefaultsGcfsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsObservation. +func (in *NodeConfigDefaultsObservation) DeepCopy() *NodeConfigDefaultsObservation { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigDefaultsParameters) DeepCopyInto(out *NodeConfigDefaultsParameters) { + *out = *in + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(NodeConfigDefaultsContainerdConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(NodeConfigDefaultsGcfsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigDefaultsParameters. +func (in *NodeConfigDefaultsParameters) DeepCopy() *NodeConfigDefaultsParameters { + if in == nil { + return nil + } + out := new(NodeConfigDefaultsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEffectiveTaintsInitParameters) DeepCopyInto(out *NodeConfigEffectiveTaintsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEffectiveTaintsInitParameters. +func (in *NodeConfigEffectiveTaintsInitParameters) DeepCopy() *NodeConfigEffectiveTaintsInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigEffectiveTaintsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEffectiveTaintsObservation) DeepCopyInto(out *NodeConfigEffectiveTaintsObservation) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEffectiveTaintsObservation. +func (in *NodeConfigEffectiveTaintsObservation) DeepCopy() *NodeConfigEffectiveTaintsObservation { + if in == nil { + return nil + } + out := new(NodeConfigEffectiveTaintsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEffectiveTaintsParameters) DeepCopyInto(out *NodeConfigEffectiveTaintsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEffectiveTaintsParameters. +func (in *NodeConfigEffectiveTaintsParameters) DeepCopy() *NodeConfigEffectiveTaintsParameters { + if in == nil { + return nil + } + out := new(NodeConfigEffectiveTaintsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageConfigInitParameters) DeepCopyInto(out *NodeConfigEphemeralStorageConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageConfigInitParameters. +func (in *NodeConfigEphemeralStorageConfigInitParameters) DeepCopy() *NodeConfigEphemeralStorageConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageConfigObservation) DeepCopyInto(out *NodeConfigEphemeralStorageConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageConfigObservation. +func (in *NodeConfigEphemeralStorageConfigObservation) DeepCopy() *NodeConfigEphemeralStorageConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageConfigParameters) DeepCopyInto(out *NodeConfigEphemeralStorageConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageConfigParameters. +func (in *NodeConfigEphemeralStorageConfigParameters) DeepCopy() *NodeConfigEphemeralStorageConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageLocalSsdConfigInitParameters) DeepCopyInto(out *NodeConfigEphemeralStorageLocalSsdConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageLocalSsdConfigInitParameters. +func (in *NodeConfigEphemeralStorageLocalSsdConfigInitParameters) DeepCopy() *NodeConfigEphemeralStorageLocalSsdConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageLocalSsdConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageLocalSsdConfigObservation) DeepCopyInto(out *NodeConfigEphemeralStorageLocalSsdConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageLocalSsdConfigObservation. +func (in *NodeConfigEphemeralStorageLocalSsdConfigObservation) DeepCopy() *NodeConfigEphemeralStorageLocalSsdConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageLocalSsdConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigEphemeralStorageLocalSsdConfigParameters) DeepCopyInto(out *NodeConfigEphemeralStorageLocalSsdConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigEphemeralStorageLocalSsdConfigParameters. +func (in *NodeConfigEphemeralStorageLocalSsdConfigParameters) DeepCopy() *NodeConfigEphemeralStorageLocalSsdConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigEphemeralStorageLocalSsdConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigFastSocketInitParameters) DeepCopyInto(out *NodeConfigFastSocketInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigFastSocketInitParameters. +func (in *NodeConfigFastSocketInitParameters) DeepCopy() *NodeConfigFastSocketInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigFastSocketInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigFastSocketObservation) DeepCopyInto(out *NodeConfigFastSocketObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigFastSocketObservation. +func (in *NodeConfigFastSocketObservation) DeepCopy() *NodeConfigFastSocketObservation { + if in == nil { + return nil + } + out := new(NodeConfigFastSocketObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigFastSocketParameters) DeepCopyInto(out *NodeConfigFastSocketParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigFastSocketParameters. +func (in *NodeConfigFastSocketParameters) DeepCopy() *NodeConfigFastSocketParameters { + if in == nil { + return nil + } + out := new(NodeConfigFastSocketParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGcfsConfigInitParameters) DeepCopyInto(out *NodeConfigGcfsConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGcfsConfigInitParameters. +func (in *NodeConfigGcfsConfigInitParameters) DeepCopy() *NodeConfigGcfsConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigGcfsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGcfsConfigObservation) DeepCopyInto(out *NodeConfigGcfsConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGcfsConfigObservation. +func (in *NodeConfigGcfsConfigObservation) DeepCopy() *NodeConfigGcfsConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigGcfsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGcfsConfigParameters) DeepCopyInto(out *NodeConfigGcfsConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGcfsConfigParameters. +func (in *NodeConfigGcfsConfigParameters) DeepCopy() *NodeConfigGcfsConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigGcfsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGuestAcceleratorInitParameters) DeepCopyInto(out *NodeConfigGuestAcceleratorInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGuestAcceleratorInitParameters. +func (in *NodeConfigGuestAcceleratorInitParameters) DeepCopy() *NodeConfigGuestAcceleratorInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigGuestAcceleratorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGuestAcceleratorObservation) DeepCopyInto(out *NodeConfigGuestAcceleratorObservation) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.GpuDriverInstallationConfig != nil { + in, out := &in.GpuDriverInstallationConfig, &out.GpuDriverInstallationConfig + *out = new(GuestAcceleratorGpuDriverInstallationConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GpuPartitionSize != nil { + in, out := &in.GpuPartitionSize, &out.GpuPartitionSize + *out = new(string) + **out = **in + } + if in.GpuSharingConfig != nil { + in, out := &in.GpuSharingConfig, &out.GpuSharingConfig + *out = new(GuestAcceleratorGpuSharingConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGuestAcceleratorObservation. +func (in *NodeConfigGuestAcceleratorObservation) DeepCopy() *NodeConfigGuestAcceleratorObservation { + if in == nil { + return nil + } + out := new(NodeConfigGuestAcceleratorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGuestAcceleratorParameters) DeepCopyInto(out *NodeConfigGuestAcceleratorParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGuestAcceleratorParameters. +func (in *NodeConfigGuestAcceleratorParameters) DeepCopy() *NodeConfigGuestAcceleratorParameters { + if in == nil { + return nil + } + out := new(NodeConfigGuestAcceleratorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGvnicInitParameters) DeepCopyInto(out *NodeConfigGvnicInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGvnicInitParameters. +func (in *NodeConfigGvnicInitParameters) DeepCopy() *NodeConfigGvnicInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigGvnicInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGvnicObservation) DeepCopyInto(out *NodeConfigGvnicObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGvnicObservation. +func (in *NodeConfigGvnicObservation) DeepCopy() *NodeConfigGvnicObservation { + if in == nil { + return nil + } + out := new(NodeConfigGvnicObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigGvnicParameters) DeepCopyInto(out *NodeConfigGvnicParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigGvnicParameters. +func (in *NodeConfigGvnicParameters) DeepCopy() *NodeConfigGvnicParameters { + if in == nil { + return nil + } + out := new(NodeConfigGvnicParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigHostMaintenancePolicyInitParameters) DeepCopyInto(out *NodeConfigHostMaintenancePolicyInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigHostMaintenancePolicyInitParameters. +func (in *NodeConfigHostMaintenancePolicyInitParameters) DeepCopy() *NodeConfigHostMaintenancePolicyInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigHostMaintenancePolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigHostMaintenancePolicyObservation) DeepCopyInto(out *NodeConfigHostMaintenancePolicyObservation) { + *out = *in + if in.MaintenanceInterval != nil { + in, out := &in.MaintenanceInterval, &out.MaintenanceInterval + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigHostMaintenancePolicyObservation. +func (in *NodeConfigHostMaintenancePolicyObservation) DeepCopy() *NodeConfigHostMaintenancePolicyObservation { + if in == nil { + return nil + } + out := new(NodeConfigHostMaintenancePolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigHostMaintenancePolicyParameters) DeepCopyInto(out *NodeConfigHostMaintenancePolicyParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigHostMaintenancePolicyParameters. +func (in *NodeConfigHostMaintenancePolicyParameters) DeepCopy() *NodeConfigHostMaintenancePolicyParameters { + if in == nil { + return nil + } + out := new(NodeConfigHostMaintenancePolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigInitParameters) DeepCopyInto(out *NodeConfigInitParameters) { + *out = *in + if in.AdvancedMachineFeatures != nil { + in, out := &in.AdvancedMachineFeatures, &out.AdvancedMachineFeatures + *out = new(AdvancedMachineFeaturesInitParameters) + (*in).DeepCopyInto(*out) + } + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(NodeConfigConfidentialNodesInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(ContainerdConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DiskSizeGb != nil { + in, out := &in.DiskSizeGb, &out.DiskSizeGb + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.EnableConfidentialStorage != nil { + in, out := &in.EnableConfidentialStorage, &out.EnableConfidentialStorage + *out = new(bool) + **out = **in + } + if in.EphemeralStorageConfig != nil { + in, out := &in.EphemeralStorageConfig, &out.EphemeralStorageConfig + *out = new(EphemeralStorageConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.EphemeralStorageLocalSsdConfig != nil { + in, out := &in.EphemeralStorageLocalSsdConfig, &out.EphemeralStorageLocalSsdConfig + *out = new(EphemeralStorageLocalSsdConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.FastSocket != nil { + in, out := &in.FastSocket, &out.FastSocket + *out = new(FastSocketInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(GcfsConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GuestAccelerator != nil { + in, out := &in.GuestAccelerator, &out.GuestAccelerator + *out = make([]GuestAcceleratorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Gvnic != nil { + in, out := &in.Gvnic, &out.Gvnic + *out = new(GvnicInitParameters) + (*in).DeepCopyInto(*out) + } + if in.HostMaintenancePolicy != nil { + in, out := &in.HostMaintenancePolicy, &out.HostMaintenancePolicy + *out = new(HostMaintenancePolicyInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.KubeletConfig != nil { + in, out := &in.KubeletConfig, &out.KubeletConfig + *out = new(KubeletConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.LinuxNodeConfig != nil { + in, out := &in.LinuxNodeConfig, &out.LinuxNodeConfig + *out = new(LinuxNodeConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.LocalNvmeSsdBlockConfig != nil { + in, out := &in.LocalNvmeSsdBlockConfig, &out.LocalNvmeSsdBlockConfig + *out = new(LocalNvmeSsdBlockConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.NodeGroup != nil { + in, out := &in.NodeGroup, &out.NodeGroup + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Preemptible != nil { + in, out := &in.Preemptible, &out.Preemptible + *out = new(bool) + **out = **in + } + if in.ReservationAffinity != nil { + in, out := &in.ReservationAffinity, &out.ReservationAffinity + *out = new(ReservationAffinityInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.SandboxConfig != nil { + in, out := &in.SandboxConfig, &out.SandboxConfig + *out = new(SandboxConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SecondaryBootDisks != nil { + in, out := &in.SecondaryBootDisks, &out.SecondaryBootDisks + *out = make([]SecondaryBootDisksInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(NodeConfigShieldedInstanceConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SoleTenantConfig != nil { + in, out := &in.SoleTenantConfig, &out.SoleTenantConfig + *out = new(SoleTenantConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Spot != nil { + in, out := &in.Spot, &out.Spot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Taint != nil { + in, out := &in.Taint, &out.Taint + *out = make([]TaintInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.WorkloadMetadataConfig != nil { + in, out := &in.WorkloadMetadataConfig, &out.WorkloadMetadataConfig + *out = new(WorkloadMetadataConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigInitParameters. +func (in *NodeConfigInitParameters) DeepCopy() *NodeConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigKubeletConfigInitParameters) DeepCopyInto(out *NodeConfigKubeletConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigKubeletConfigInitParameters. +func (in *NodeConfigKubeletConfigInitParameters) DeepCopy() *NodeConfigKubeletConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigKubeletConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigKubeletConfigObservation) DeepCopyInto(out *NodeConfigKubeletConfigObservation) { + *out = *in + if in.CPUCfsQuota != nil { + in, out := &in.CPUCfsQuota, &out.CPUCfsQuota + *out = new(bool) + **out = **in + } + if in.CPUCfsQuotaPeriod != nil { + in, out := &in.CPUCfsQuotaPeriod, &out.CPUCfsQuotaPeriod + *out = new(string) + **out = **in + } + if in.CPUManagerPolicy != nil { + in, out := &in.CPUManagerPolicy, &out.CPUManagerPolicy + *out = new(string) + **out = **in + } + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } + if in.PodPidsLimit != nil { + in, out := &in.PodPidsLimit, &out.PodPidsLimit + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigKubeletConfigObservation. +func (in *NodeConfigKubeletConfigObservation) DeepCopy() *NodeConfigKubeletConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigKubeletConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigKubeletConfigParameters) DeepCopyInto(out *NodeConfigKubeletConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigKubeletConfigParameters. +func (in *NodeConfigKubeletConfigParameters) DeepCopy() *NodeConfigKubeletConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigKubeletConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLinuxNodeConfigInitParameters) DeepCopyInto(out *NodeConfigLinuxNodeConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLinuxNodeConfigInitParameters. +func (in *NodeConfigLinuxNodeConfigInitParameters) DeepCopy() *NodeConfigLinuxNodeConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigLinuxNodeConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLinuxNodeConfigObservation) DeepCopyInto(out *NodeConfigLinuxNodeConfigObservation) { + *out = *in + if in.CgroupMode != nil { + in, out := &in.CgroupMode, &out.CgroupMode + *out = new(string) + **out = **in + } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLinuxNodeConfigObservation. +func (in *NodeConfigLinuxNodeConfigObservation) DeepCopy() *NodeConfigLinuxNodeConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigLinuxNodeConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLinuxNodeConfigParameters) DeepCopyInto(out *NodeConfigLinuxNodeConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLinuxNodeConfigParameters. +func (in *NodeConfigLinuxNodeConfigParameters) DeepCopy() *NodeConfigLinuxNodeConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigLinuxNodeConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLocalNvmeSsdBlockConfigInitParameters) DeepCopyInto(out *NodeConfigLocalNvmeSsdBlockConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLocalNvmeSsdBlockConfigInitParameters. +func (in *NodeConfigLocalNvmeSsdBlockConfigInitParameters) DeepCopy() *NodeConfigLocalNvmeSsdBlockConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigLocalNvmeSsdBlockConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLocalNvmeSsdBlockConfigObservation) DeepCopyInto(out *NodeConfigLocalNvmeSsdBlockConfigObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLocalNvmeSsdBlockConfigObservation. +func (in *NodeConfigLocalNvmeSsdBlockConfigObservation) DeepCopy() *NodeConfigLocalNvmeSsdBlockConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigLocalNvmeSsdBlockConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigLocalNvmeSsdBlockConfigParameters) DeepCopyInto(out *NodeConfigLocalNvmeSsdBlockConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigLocalNvmeSsdBlockConfigParameters. +func (in *NodeConfigLocalNvmeSsdBlockConfigParameters) DeepCopy() *NodeConfigLocalNvmeSsdBlockConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigLocalNvmeSsdBlockConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigObservation) DeepCopyInto(out *NodeConfigObservation) { + *out = *in + if in.AdvancedMachineFeatures != nil { + in, out := &in.AdvancedMachineFeatures, &out.AdvancedMachineFeatures + *out = new(AdvancedMachineFeaturesObservation) + (*in).DeepCopyInto(*out) + } + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(NodeConfigConfidentialNodesObservation) + (*in).DeepCopyInto(*out) + } + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(ContainerdConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.DiskSizeGb != nil { + in, out := &in.DiskSizeGb, &out.DiskSizeGb + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.EffectiveTaints != nil { + in, out := &in.EffectiveTaints, &out.EffectiveTaints + *out = make([]EffectiveTaintsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnableConfidentialStorage != nil { + in, out := &in.EnableConfidentialStorage, &out.EnableConfidentialStorage + *out = new(bool) + **out = **in + } + if in.EphemeralStorageConfig != nil { + in, out := &in.EphemeralStorageConfig, &out.EphemeralStorageConfig + *out = new(EphemeralStorageConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.EphemeralStorageLocalSsdConfig != nil { + in, out := &in.EphemeralStorageLocalSsdConfig, &out.EphemeralStorageLocalSsdConfig + *out = new(EphemeralStorageLocalSsdConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.FastSocket != nil { + in, out := &in.FastSocket, &out.FastSocket + *out = new(FastSocketObservation) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(GcfsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GuestAccelerator != nil { + in, out := &in.GuestAccelerator, &out.GuestAccelerator + *out = make([]GuestAcceleratorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Gvnic != nil { + in, out := &in.Gvnic, &out.Gvnic + *out = new(GvnicObservation) + (*in).DeepCopyInto(*out) + } + if in.HostMaintenancePolicy != nil { + in, out := &in.HostMaintenancePolicy, &out.HostMaintenancePolicy + *out = new(HostMaintenancePolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.KubeletConfig != nil { + in, out := &in.KubeletConfig, &out.KubeletConfig + *out = new(KubeletConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.LinuxNodeConfig != nil { + in, out := &in.LinuxNodeConfig, &out.LinuxNodeConfig + *out = new(LinuxNodeConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.LocalNvmeSsdBlockConfig != nil { + in, out := &in.LocalNvmeSsdBlockConfig, &out.LocalNvmeSsdBlockConfig + *out = new(LocalNvmeSsdBlockConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.NodeGroup != nil { + in, out := &in.NodeGroup, &out.NodeGroup + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Preemptible != nil { + in, out := &in.Preemptible, &out.Preemptible + *out = new(bool) + **out = **in + } + if in.ReservationAffinity != nil { + in, out := &in.ReservationAffinity, &out.ReservationAffinity + *out = new(ReservationAffinityObservation) + (*in).DeepCopyInto(*out) + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.SandboxConfig != nil { + in, out := &in.SandboxConfig, &out.SandboxConfig + *out = new(SandboxConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SecondaryBootDisks != nil { + in, out := &in.SecondaryBootDisks, &out.SecondaryBootDisks + *out = make([]SecondaryBootDisksObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(NodeConfigShieldedInstanceConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SoleTenantConfig != nil { + in, out := &in.SoleTenantConfig, &out.SoleTenantConfig + *out = new(SoleTenantConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Spot != nil { + in, out := &in.Spot, &out.Spot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Taint != nil { + in, out := &in.Taint, &out.Taint + *out = make([]TaintObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.WorkloadMetadataConfig != nil { + in, out := &in.WorkloadMetadataConfig, &out.WorkloadMetadataConfig + *out = new(WorkloadMetadataConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigObservation. +func (in *NodeConfigObservation) DeepCopy() *NodeConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigParameters) DeepCopyInto(out *NodeConfigParameters) { + *out = *in + if in.AdvancedMachineFeatures != nil { + in, out := &in.AdvancedMachineFeatures, &out.AdvancedMachineFeatures + *out = new(AdvancedMachineFeaturesParameters) + (*in).DeepCopyInto(*out) + } + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(NodeConfigConfidentialNodesParameters) + (*in).DeepCopyInto(*out) + } + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(ContainerdConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.DiskSizeGb != nil { + in, out := &in.DiskSizeGb, &out.DiskSizeGb + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.EnableConfidentialStorage != nil { + in, out := &in.EnableConfidentialStorage, &out.EnableConfidentialStorage + *out = new(bool) + **out = **in + } + if in.EphemeralStorageConfig != nil { + in, out := &in.EphemeralStorageConfig, &out.EphemeralStorageConfig + *out = new(EphemeralStorageConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.EphemeralStorageLocalSsdConfig != nil { + in, out := &in.EphemeralStorageLocalSsdConfig, &out.EphemeralStorageLocalSsdConfig + *out = new(EphemeralStorageLocalSsdConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.FastSocket != nil { + in, out := &in.FastSocket, &out.FastSocket + *out = new(FastSocketParameters) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(GcfsConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.GuestAccelerator != nil { + in, out := &in.GuestAccelerator, &out.GuestAccelerator + *out = make([]GuestAcceleratorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Gvnic != nil { + in, out := &in.Gvnic, &out.Gvnic + *out = new(GvnicParameters) + (*in).DeepCopyInto(*out) + } + if in.HostMaintenancePolicy != nil { + in, out := &in.HostMaintenancePolicy, &out.HostMaintenancePolicy + *out = new(HostMaintenancePolicyParameters) + (*in).DeepCopyInto(*out) + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.KubeletConfig != nil { + in, out := &in.KubeletConfig, &out.KubeletConfig + *out = new(KubeletConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.LinuxNodeConfig != nil { + in, out := &in.LinuxNodeConfig, &out.LinuxNodeConfig + *out = new(LinuxNodeConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.LocalNvmeSsdBlockConfig != nil { + in, out := &in.LocalNvmeSsdBlockConfig, &out.LocalNvmeSsdBlockConfig + *out = new(LocalNvmeSsdBlockConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.NodeGroup != nil { + in, out := &in.NodeGroup, &out.NodeGroup + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Preemptible != nil { + in, out := &in.Preemptible, &out.Preemptible + *out = new(bool) + **out = **in + } + if in.ReservationAffinity != nil { + in, out := &in.ReservationAffinity, &out.ReservationAffinity + *out = new(ReservationAffinityParameters) + (*in).DeepCopyInto(*out) + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.SandboxConfig != nil { + in, out := &in.SandboxConfig, &out.SandboxConfig + *out = new(SandboxConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.SecondaryBootDisks != nil { + in, out := &in.SecondaryBootDisks, &out.SecondaryBootDisks + *out = make([]SecondaryBootDisksParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(NodeConfigShieldedInstanceConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.SoleTenantConfig != nil { + in, out := &in.SoleTenantConfig, &out.SoleTenantConfig + *out = new(SoleTenantConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.Spot != nil { + in, out := &in.Spot, &out.Spot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Taint != nil { + in, out := &in.Taint, &out.Taint + *out = make([]TaintParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.WorkloadMetadataConfig != nil { + in, out := &in.WorkloadMetadataConfig, &out.WorkloadMetadataConfig + *out = new(WorkloadMetadataConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigParameters. +func (in *NodeConfigParameters) DeepCopy() *NodeConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigReservationAffinityInitParameters) DeepCopyInto(out *NodeConfigReservationAffinityInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigReservationAffinityInitParameters. +func (in *NodeConfigReservationAffinityInitParameters) DeepCopy() *NodeConfigReservationAffinityInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigReservationAffinityInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigReservationAffinityObservation) DeepCopyInto(out *NodeConfigReservationAffinityObservation) { + *out = *in + if in.ConsumeReservationType != nil { + in, out := &in.ConsumeReservationType, &out.ConsumeReservationType + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigReservationAffinityObservation. +func (in *NodeConfigReservationAffinityObservation) DeepCopy() *NodeConfigReservationAffinityObservation { + if in == nil { + return nil + } + out := new(NodeConfigReservationAffinityObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigReservationAffinityParameters) DeepCopyInto(out *NodeConfigReservationAffinityParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigReservationAffinityParameters. +func (in *NodeConfigReservationAffinityParameters) DeepCopy() *NodeConfigReservationAffinityParameters { + if in == nil { + return nil + } + out := new(NodeConfigReservationAffinityParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSandboxConfigInitParameters) DeepCopyInto(out *NodeConfigSandboxConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSandboxConfigInitParameters. +func (in *NodeConfigSandboxConfigInitParameters) DeepCopy() *NodeConfigSandboxConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigSandboxConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSandboxConfigObservation) DeepCopyInto(out *NodeConfigSandboxConfigObservation) { + *out = *in + if in.SandboxType != nil { + in, out := &in.SandboxType, &out.SandboxType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSandboxConfigObservation. +func (in *NodeConfigSandboxConfigObservation) DeepCopy() *NodeConfigSandboxConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigSandboxConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSandboxConfigParameters) DeepCopyInto(out *NodeConfigSandboxConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSandboxConfigParameters. +func (in *NodeConfigSandboxConfigParameters) DeepCopy() *NodeConfigSandboxConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigSandboxConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSecondaryBootDisksInitParameters) DeepCopyInto(out *NodeConfigSecondaryBootDisksInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSecondaryBootDisksInitParameters. +func (in *NodeConfigSecondaryBootDisksInitParameters) DeepCopy() *NodeConfigSecondaryBootDisksInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigSecondaryBootDisksInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSecondaryBootDisksObservation) DeepCopyInto(out *NodeConfigSecondaryBootDisksObservation) { + *out = *in + if in.DiskImage != nil { + in, out := &in.DiskImage, &out.DiskImage + *out = new(string) + **out = **in + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSecondaryBootDisksObservation. +func (in *NodeConfigSecondaryBootDisksObservation) DeepCopy() *NodeConfigSecondaryBootDisksObservation { + if in == nil { + return nil + } + out := new(NodeConfigSecondaryBootDisksObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSecondaryBootDisksParameters) DeepCopyInto(out *NodeConfigSecondaryBootDisksParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSecondaryBootDisksParameters. +func (in *NodeConfigSecondaryBootDisksParameters) DeepCopy() *NodeConfigSecondaryBootDisksParameters { + if in == nil { + return nil + } + out := new(NodeConfigSecondaryBootDisksParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigShieldedInstanceConfigInitParameters) DeepCopyInto(out *NodeConfigShieldedInstanceConfigInitParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigShieldedInstanceConfigInitParameters. +func (in *NodeConfigShieldedInstanceConfigInitParameters) DeepCopy() *NodeConfigShieldedInstanceConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigShieldedInstanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigShieldedInstanceConfigObservation) DeepCopyInto(out *NodeConfigShieldedInstanceConfigObservation) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigShieldedInstanceConfigObservation. +func (in *NodeConfigShieldedInstanceConfigObservation) DeepCopy() *NodeConfigShieldedInstanceConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigShieldedInstanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigShieldedInstanceConfigParameters) DeepCopyInto(out *NodeConfigShieldedInstanceConfigParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigShieldedInstanceConfigParameters. +func (in *NodeConfigShieldedInstanceConfigParameters) DeepCopy() *NodeConfigShieldedInstanceConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigShieldedInstanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSoleTenantConfigInitParameters) DeepCopyInto(out *NodeConfigSoleTenantConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSoleTenantConfigInitParameters. +func (in *NodeConfigSoleTenantConfigInitParameters) DeepCopy() *NodeConfigSoleTenantConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigSoleTenantConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSoleTenantConfigObservation) DeepCopyInto(out *NodeConfigSoleTenantConfigObservation) { + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = make([]SoleTenantConfigNodeAffinityObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSoleTenantConfigObservation. +func (in *NodeConfigSoleTenantConfigObservation) DeepCopy() *NodeConfigSoleTenantConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigSoleTenantConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSoleTenantConfigParameters) DeepCopyInto(out *NodeConfigSoleTenantConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSoleTenantConfigParameters. +func (in *NodeConfigSoleTenantConfigParameters) DeepCopy() *NodeConfigSoleTenantConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigSoleTenantConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigTaintInitParameters) DeepCopyInto(out *NodeConfigTaintInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigTaintInitParameters. +func (in *NodeConfigTaintInitParameters) DeepCopy() *NodeConfigTaintInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigTaintInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigTaintObservation) DeepCopyInto(out *NodeConfigTaintObservation) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigTaintObservation. +func (in *NodeConfigTaintObservation) DeepCopy() *NodeConfigTaintObservation { + if in == nil { + return nil + } + out := new(NodeConfigTaintObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigTaintParameters) DeepCopyInto(out *NodeConfigTaintParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigTaintParameters. +func (in *NodeConfigTaintParameters) DeepCopy() *NodeConfigTaintParameters { + if in == nil { + return nil + } + out := new(NodeConfigTaintParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigWorkloadMetadataConfigInitParameters) DeepCopyInto(out *NodeConfigWorkloadMetadataConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigWorkloadMetadataConfigInitParameters. +func (in *NodeConfigWorkloadMetadataConfigInitParameters) DeepCopy() *NodeConfigWorkloadMetadataConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeConfigWorkloadMetadataConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigWorkloadMetadataConfigObservation) DeepCopyInto(out *NodeConfigWorkloadMetadataConfigObservation) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigWorkloadMetadataConfigObservation. +func (in *NodeConfigWorkloadMetadataConfigObservation) DeepCopy() *NodeConfigWorkloadMetadataConfigObservation { + if in == nil { + return nil + } + out := new(NodeConfigWorkloadMetadataConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigWorkloadMetadataConfigParameters) DeepCopyInto(out *NodeConfigWorkloadMetadataConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigWorkloadMetadataConfigParameters. +func (in *NodeConfigWorkloadMetadataConfigParameters) DeepCopy() *NodeConfigWorkloadMetadataConfigParameters { + if in == nil { + return nil + } + out := new(NodeConfigWorkloadMetadataConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeKubeletConfigInitParameters) DeepCopyInto(out *NodeKubeletConfigInitParameters) { + *out = *in + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeKubeletConfigInitParameters. +func (in *NodeKubeletConfigInitParameters) DeepCopy() *NodeKubeletConfigInitParameters { + if in == nil { + return nil + } + out := new(NodeKubeletConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeKubeletConfigObservation) DeepCopyInto(out *NodeKubeletConfigObservation) { + *out = *in + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeKubeletConfigObservation. +func (in *NodeKubeletConfigObservation) DeepCopy() *NodeKubeletConfigObservation { + if in == nil { + return nil + } + out := new(NodeKubeletConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeKubeletConfigParameters) DeepCopyInto(out *NodeKubeletConfigParameters) { + *out = *in + if in.InsecureKubeletReadonlyPortEnabled != nil { + in, out := &in.InsecureKubeletReadonlyPortEnabled, &out.InsecureKubeletReadonlyPortEnabled + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeKubeletConfigParameters. +func (in *NodeKubeletConfigParameters) DeepCopy() *NodeKubeletConfigParameters { + if in == nil { + return nil + } + out := new(NodeKubeletConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolAutoConfigInitParameters) DeepCopyInto(out *NodePoolAutoConfigInitParameters) { + *out = *in + if in.NetworkTags != nil { + in, out := &in.NetworkTags, &out.NetworkTags + *out = new(NetworkTagsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeKubeletConfig != nil { + in, out := &in.NodeKubeletConfig, &out.NodeKubeletConfig + *out = new(NodeKubeletConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolAutoConfigInitParameters. +func (in *NodePoolAutoConfigInitParameters) DeepCopy() *NodePoolAutoConfigInitParameters { + if in == nil { + return nil + } + out := new(NodePoolAutoConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolAutoConfigObservation) DeepCopyInto(out *NodePoolAutoConfigObservation) { + *out = *in + if in.NetworkTags != nil { + in, out := &in.NetworkTags, &out.NetworkTags + *out = new(NetworkTagsObservation) + (*in).DeepCopyInto(*out) + } + if in.NodeKubeletConfig != nil { + in, out := &in.NodeKubeletConfig, &out.NodeKubeletConfig + *out = new(NodeKubeletConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolAutoConfigObservation. +func (in *NodePoolAutoConfigObservation) DeepCopy() *NodePoolAutoConfigObservation { + if in == nil { + return nil + } + out := new(NodePoolAutoConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolAutoConfigParameters) DeepCopyInto(out *NodePoolAutoConfigParameters) { + *out = *in + if in.NetworkTags != nil { + in, out := &in.NetworkTags, &out.NetworkTags + *out = new(NetworkTagsParameters) + (*in).DeepCopyInto(*out) + } + if in.NodeKubeletConfig != nil { + in, out := &in.NodeKubeletConfig, &out.NodeKubeletConfig + *out = new(NodeKubeletConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolAutoConfigParameters. +func (in *NodePoolAutoConfigParameters) DeepCopy() *NodePoolAutoConfigParameters { + if in == nil { + return nil + } + out := new(NodePoolAutoConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolDefaultsInitParameters) DeepCopyInto(out *NodePoolDefaultsInitParameters) { + *out = *in + if in.NodeConfigDefaults != nil { + in, out := &in.NodeConfigDefaults, &out.NodeConfigDefaults + *out = new(NodeConfigDefaultsInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolDefaultsInitParameters. +func (in *NodePoolDefaultsInitParameters) DeepCopy() *NodePoolDefaultsInitParameters { + if in == nil { + return nil + } + out := new(NodePoolDefaultsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolDefaultsObservation) DeepCopyInto(out *NodePoolDefaultsObservation) { + *out = *in + if in.NodeConfigDefaults != nil { + in, out := &in.NodeConfigDefaults, &out.NodeConfigDefaults + *out = new(NodeConfigDefaultsObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolDefaultsObservation. +func (in *NodePoolDefaultsObservation) DeepCopy() *NodePoolDefaultsObservation { + if in == nil { + return nil + } + out := new(NodePoolDefaultsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolDefaultsParameters) DeepCopyInto(out *NodePoolDefaultsParameters) { + *out = *in + if in.NodeConfigDefaults != nil { + in, out := &in.NodeConfigDefaults, &out.NodeConfigDefaults + *out = new(NodeConfigDefaultsParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolDefaultsParameters. +func (in *NodePoolDefaultsParameters) DeepCopy() *NodePoolDefaultsParameters { + if in == nil { + return nil + } + out := new(NodePoolDefaultsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolInitParameters) DeepCopyInto(out *NodePoolInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolInitParameters. +func (in *NodePoolInitParameters) DeepCopy() *NodePoolInitParameters { + if in == nil { + return nil + } + out := new(NodePoolInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolManagementInitParameters) DeepCopyInto(out *NodePoolManagementInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolManagementInitParameters. +func (in *NodePoolManagementInitParameters) DeepCopy() *NodePoolManagementInitParameters { + if in == nil { + return nil + } + out := new(NodePoolManagementInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolManagementObservation) DeepCopyInto(out *NodePoolManagementObservation) { + *out = *in + if in.AutoRepair != nil { + in, out := &in.AutoRepair, &out.AutoRepair + *out = new(bool) + **out = **in + } + if in.AutoUpgrade != nil { + in, out := &in.AutoUpgrade, &out.AutoUpgrade + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolManagementObservation. +func (in *NodePoolManagementObservation) DeepCopy() *NodePoolManagementObservation { + if in == nil { + return nil + } + out := new(NodePoolManagementObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolManagementParameters) DeepCopyInto(out *NodePoolManagementParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolManagementParameters. +func (in *NodePoolManagementParameters) DeepCopy() *NodePoolManagementParameters { + if in == nil { + return nil + } + out := new(NodePoolManagementParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigConfidentialNodesInitParameters) DeepCopyInto(out *NodePoolNodeConfigConfidentialNodesInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigConfidentialNodesInitParameters. +func (in *NodePoolNodeConfigConfidentialNodesInitParameters) DeepCopy() *NodePoolNodeConfigConfidentialNodesInitParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigConfidentialNodesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigConfidentialNodesObservation) DeepCopyInto(out *NodePoolNodeConfigConfidentialNodesObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigConfidentialNodesObservation. +func (in *NodePoolNodeConfigConfidentialNodesObservation) DeepCopy() *NodePoolNodeConfigConfidentialNodesObservation { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigConfidentialNodesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigConfidentialNodesParameters) DeepCopyInto(out *NodePoolNodeConfigConfidentialNodesParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigConfidentialNodesParameters. +func (in *NodePoolNodeConfigConfidentialNodesParameters) DeepCopy() *NodePoolNodeConfigConfidentialNodesParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigConfidentialNodesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigInitParameters) DeepCopyInto(out *NodePoolNodeConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigInitParameters. +func (in *NodePoolNodeConfigInitParameters) DeepCopy() *NodePoolNodeConfigInitParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigObservation) DeepCopyInto(out *NodePoolNodeConfigObservation) { + *out = *in + if in.AdvancedMachineFeatures != nil { + in, out := &in.AdvancedMachineFeatures, &out.AdvancedMachineFeatures + *out = new(NodeConfigAdvancedMachineFeaturesObservation) + (*in).DeepCopyInto(*out) + } + if in.BootDiskKMSKey != nil { + in, out := &in.BootDiskKMSKey, &out.BootDiskKMSKey + *out = new(string) + **out = **in + } + if in.ConfidentialNodes != nil { + in, out := &in.ConfidentialNodes, &out.ConfidentialNodes + *out = new(NodePoolNodeConfigConfidentialNodesObservation) + (*in).DeepCopyInto(*out) + } + if in.ContainerdConfig != nil { + in, out := &in.ContainerdConfig, &out.ContainerdConfig + *out = new(NodeConfigContainerdConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.DiskSizeGb != nil { + in, out := &in.DiskSizeGb, &out.DiskSizeGb + *out = new(float64) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.EffectiveTaints != nil { + in, out := &in.EffectiveTaints, &out.EffectiveTaints + *out = make([]NodeConfigEffectiveTaintsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnableConfidentialStorage != nil { + in, out := &in.EnableConfidentialStorage, &out.EnableConfidentialStorage + *out = new(bool) + **out = **in + } + if in.EphemeralStorageConfig != nil { + in, out := &in.EphemeralStorageConfig, &out.EphemeralStorageConfig + *out = new(NodeConfigEphemeralStorageConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.EphemeralStorageLocalSsdConfig != nil { + in, out := &in.EphemeralStorageLocalSsdConfig, &out.EphemeralStorageLocalSsdConfig + *out = new(NodeConfigEphemeralStorageLocalSsdConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.FastSocket != nil { + in, out := &in.FastSocket, &out.FastSocket + *out = new(NodeConfigFastSocketObservation) + (*in).DeepCopyInto(*out) + } + if in.GcfsConfig != nil { + in, out := &in.GcfsConfig, &out.GcfsConfig + *out = new(NodeConfigGcfsConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.GuestAccelerator != nil { + in, out := &in.GuestAccelerator, &out.GuestAccelerator + *out = make([]NodeConfigGuestAcceleratorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Gvnic != nil { + in, out := &in.Gvnic, &out.Gvnic + *out = new(NodeConfigGvnicObservation) + (*in).DeepCopyInto(*out) + } + if in.HostMaintenancePolicy != nil { + in, out := &in.HostMaintenancePolicy, &out.HostMaintenancePolicy + *out = new(NodeConfigHostMaintenancePolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.ImageType != nil { + in, out := &in.ImageType, &out.ImageType + *out = new(string) + **out = **in + } + if in.KubeletConfig != nil { + in, out := &in.KubeletConfig, &out.KubeletConfig + *out = new(NodeConfigKubeletConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.LinuxNodeConfig != nil { + in, out := &in.LinuxNodeConfig, &out.LinuxNodeConfig + *out = new(NodeConfigLinuxNodeConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.LocalNvmeSsdBlockConfig != nil { + in, out := &in.LocalNvmeSsdBlockConfig, &out.LocalNvmeSsdBlockConfig + *out = new(NodeConfigLocalNvmeSsdBlockConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } + if in.LoggingVariant != nil { + in, out := &in.LoggingVariant, &out.LoggingVariant + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.MinCPUPlatform != nil { + in, out := &in.MinCPUPlatform, &out.MinCPUPlatform + *out = new(string) + **out = **in + } + if in.NodeGroup != nil { + in, out := &in.NodeGroup, &out.NodeGroup + *out = new(string) + **out = **in + } + if in.OAuthScopes != nil { + in, out := &in.OAuthScopes, &out.OAuthScopes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Preemptible != nil { + in, out := &in.Preemptible, &out.Preemptible + *out = new(bool) + **out = **in + } + if in.ReservationAffinity != nil { + in, out := &in.ReservationAffinity, &out.ReservationAffinity + *out = new(NodeConfigReservationAffinityObservation) + (*in).DeepCopyInto(*out) + } + if in.ResourceLabels != nil { + in, out := &in.ResourceLabels, &out.ResourceLabels + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.ResourceManagerTags != nil { + in, out := &in.ResourceManagerTags, &out.ResourceManagerTags + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.SandboxConfig != nil { + in, out := &in.SandboxConfig, &out.SandboxConfig + *out = new(NodeConfigSandboxConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SecondaryBootDisks != nil { + in, out := &in.SecondaryBootDisks, &out.SecondaryBootDisks + *out = make([]NodeConfigSecondaryBootDisksObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = new(NodePoolNodeConfigShieldedInstanceConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.SoleTenantConfig != nil { + in, out := &in.SoleTenantConfig, &out.SoleTenantConfig + *out = new(NodeConfigSoleTenantConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.Spot != nil { + in, out := &in.Spot, &out.Spot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Taint != nil { + in, out := &in.Taint, &out.Taint + *out = make([]NodeConfigTaintObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.WorkloadMetadataConfig != nil { + in, out := &in.WorkloadMetadataConfig, &out.WorkloadMetadataConfig + *out = new(NodeConfigWorkloadMetadataConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigObservation. +func (in *NodePoolNodeConfigObservation) DeepCopy() *NodePoolNodeConfigObservation { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigParameters) DeepCopyInto(out *NodePoolNodeConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigParameters. +func (in *NodePoolNodeConfigParameters) DeepCopy() *NodePoolNodeConfigParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigShieldedInstanceConfigInitParameters) DeepCopyInto(out *NodePoolNodeConfigShieldedInstanceConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigShieldedInstanceConfigInitParameters. +func (in *NodePoolNodeConfigShieldedInstanceConfigInitParameters) DeepCopy() *NodePoolNodeConfigShieldedInstanceConfigInitParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigShieldedInstanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigShieldedInstanceConfigObservation) DeepCopyInto(out *NodePoolNodeConfigShieldedInstanceConfigObservation) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigShieldedInstanceConfigObservation. +func (in *NodePoolNodeConfigShieldedInstanceConfigObservation) DeepCopy() *NodePoolNodeConfigShieldedInstanceConfigObservation { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigShieldedInstanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolNodeConfigShieldedInstanceConfigParameters) DeepCopyInto(out *NodePoolNodeConfigShieldedInstanceConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolNodeConfigShieldedInstanceConfigParameters. +func (in *NodePoolNodeConfigShieldedInstanceConfigParameters) DeepCopy() *NodePoolNodeConfigShieldedInstanceConfigParameters { + if in == nil { + return nil + } + out := new(NodePoolNodeConfigShieldedInstanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolObservation) DeepCopyInto(out *NodePoolObservation) { + *out = *in + if in.Autoscaling != nil { + in, out := &in.Autoscaling, &out.Autoscaling + *out = new(AutoscalingObservation) + (*in).DeepCopyInto(*out) + } + if in.InitialNodeCount != nil { + in, out := &in.InitialNodeCount, &out.InitialNodeCount + *out = new(float64) + **out = **in + } + if in.InstanceGroupUrls != nil { + in, out := &in.InstanceGroupUrls, &out.InstanceGroupUrls + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ManagedInstanceGroupUrls != nil { + in, out := &in.ManagedInstanceGroupUrls, &out.ManagedInstanceGroupUrls + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Management != nil { + in, out := &in.Management, &out.Management + *out = new(NodePoolManagementObservation) + (*in).DeepCopyInto(*out) + } + if in.MaxPodsPerNode != nil { + in, out := &in.MaxPodsPerNode, &out.MaxPodsPerNode + *out = new(float64) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NamePrefix != nil { + in, out := &in.NamePrefix, &out.NamePrefix + *out = new(string) + **out = **in + } + if in.NetworkConfig != nil { + in, out := &in.NetworkConfig, &out.NetworkConfig + *out = new(NetworkConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.NodeConfig != nil { + in, out := &in.NodeConfig, &out.NodeConfig + *out = new(NodePoolNodeConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.NodeCount != nil { + in, out := &in.NodeCount, &out.NodeCount + *out = new(float64) + **out = **in + } + if in.NodeLocations != nil { + in, out := &in.NodeLocations, &out.NodeLocations + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.PlacementPolicy != nil { + in, out := &in.PlacementPolicy, &out.PlacementPolicy + *out = new(PlacementPolicyObservation) + (*in).DeepCopyInto(*out) + } + if in.QueuedProvisioning != nil { + in, out := &in.QueuedProvisioning, &out.QueuedProvisioning + *out = new(QueuedProvisioningObservation) + (*in).DeepCopyInto(*out) + } + if in.UpgradeSettings != nil { + in, out := &in.UpgradeSettings, &out.UpgradeSettings + *out = new(NodePoolUpgradeSettingsObservation) + (*in).DeepCopyInto(*out) + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolObservation. +func (in *NodePoolObservation) DeepCopy() *NodePoolObservation { + if in == nil { + return nil + } + out := new(NodePoolObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolParameters) DeepCopyInto(out *NodePoolParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolParameters. +func (in *NodePoolParameters) DeepCopy() *NodePoolParameters { + if in == nil { + return nil + } + out := new(NodePoolParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolUpgradeSettingsInitParameters) DeepCopyInto(out *NodePoolUpgradeSettingsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolUpgradeSettingsInitParameters. +func (in *NodePoolUpgradeSettingsInitParameters) DeepCopy() *NodePoolUpgradeSettingsInitParameters { + if in == nil { + return nil + } + out := new(NodePoolUpgradeSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolUpgradeSettingsObservation) DeepCopyInto(out *NodePoolUpgradeSettingsObservation) { + *out = *in + if in.BlueGreenSettings != nil { + in, out := &in.BlueGreenSettings, &out.BlueGreenSettings + *out = new(UpgradeSettingsBlueGreenSettingsObservation) + (*in).DeepCopyInto(*out) + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(float64) + **out = **in + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(float64) + **out = **in + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolUpgradeSettingsObservation. +func (in *NodePoolUpgradeSettingsObservation) DeepCopy() *NodePoolUpgradeSettingsObservation { + if in == nil { + return nil + } + out := new(NodePoolUpgradeSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodePoolUpgradeSettingsParameters) DeepCopyInto(out *NodePoolUpgradeSettingsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodePoolUpgradeSettingsParameters. +func (in *NodePoolUpgradeSettingsParameters) DeepCopy() *NodePoolUpgradeSettingsParameters { + if in == nil { + return nil + } + out := new(NodePoolUpgradeSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NotificationConfigInitParameters) DeepCopyInto(out *NotificationConfigInitParameters) { + *out = *in + if in.Pubsub != nil { + in, out := &in.Pubsub, &out.Pubsub + *out = new(PubsubInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationConfigInitParameters. +func (in *NotificationConfigInitParameters) DeepCopy() *NotificationConfigInitParameters { + if in == nil { + return nil + } + out := new(NotificationConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NotificationConfigObservation) DeepCopyInto(out *NotificationConfigObservation) { + *out = *in + if in.Pubsub != nil { + in, out := &in.Pubsub, &out.Pubsub + *out = new(PubsubObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationConfigObservation. +func (in *NotificationConfigObservation) DeepCopy() *NotificationConfigObservation { + if in == nil { + return nil + } + out := new(NotificationConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NotificationConfigParameters) DeepCopyInto(out *NotificationConfigParameters) { + *out = *in + if in.Pubsub != nil { + in, out := &in.Pubsub, &out.Pubsub + *out = new(PubsubParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationConfigParameters. +func (in *NotificationConfigParameters) DeepCopy() *NotificationConfigParameters { + if in == nil { + return nil + } + out := new(NotificationConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PlacementPolicyInitParameters) DeepCopyInto(out *PlacementPolicyInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlacementPolicyInitParameters. +func (in *PlacementPolicyInitParameters) DeepCopy() *PlacementPolicyInitParameters { + if in == nil { + return nil + } + out := new(PlacementPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PlacementPolicyObservation) DeepCopyInto(out *PlacementPolicyObservation) { + *out = *in + if in.PolicyName != nil { + in, out := &in.PolicyName, &out.PolicyName + *out = new(string) + **out = **in + } + if in.TpuTopology != nil { + in, out := &in.TpuTopology, &out.TpuTopology + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlacementPolicyObservation. +func (in *PlacementPolicyObservation) DeepCopy() *PlacementPolicyObservation { + if in == nil { + return nil + } + out := new(PlacementPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PlacementPolicyParameters) DeepCopyInto(out *PlacementPolicyParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlacementPolicyParameters. +func (in *PlacementPolicyParameters) DeepCopy() *PlacementPolicyParameters { + if in == nil { + return nil + } + out := new(PlacementPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodCidrOverprovisionConfigInitParameters) DeepCopyInto(out *PodCidrOverprovisionConfigInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCidrOverprovisionConfigInitParameters. +func (in *PodCidrOverprovisionConfigInitParameters) DeepCopy() *PodCidrOverprovisionConfigInitParameters { + if in == nil { + return nil + } + out := new(PodCidrOverprovisionConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodCidrOverprovisionConfigObservation) DeepCopyInto(out *PodCidrOverprovisionConfigObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCidrOverprovisionConfigObservation. +func (in *PodCidrOverprovisionConfigObservation) DeepCopy() *PodCidrOverprovisionConfigObservation { + if in == nil { + return nil + } + out := new(PodCidrOverprovisionConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodCidrOverprovisionConfigParameters) DeepCopyInto(out *PodCidrOverprovisionConfigParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCidrOverprovisionConfigParameters. +func (in *PodCidrOverprovisionConfigParameters) DeepCopy() *PodCidrOverprovisionConfigParameters { + if in == nil { + return nil + } + out := new(PodCidrOverprovisionConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicyConfigInitParameters) DeepCopyInto(out *PodSecurityPolicyConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicyConfigInitParameters. +func (in *PodSecurityPolicyConfigInitParameters) DeepCopy() *PodSecurityPolicyConfigInitParameters { + if in == nil { + return nil + } + out := new(PodSecurityPolicyConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicyConfigObservation) DeepCopyInto(out *PodSecurityPolicyConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicyConfigObservation. +func (in *PodSecurityPolicyConfigObservation) DeepCopy() *PodSecurityPolicyConfigObservation { + if in == nil { + return nil + } + out := new(PodSecurityPolicyConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicyConfigParameters) DeepCopyInto(out *PodSecurityPolicyConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicyConfigParameters. +func (in *PodSecurityPolicyConfigParameters) DeepCopy() *PodSecurityPolicyConfigParameters { + if in == nil { + return nil + } + out := new(PodSecurityPolicyConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateClusterConfigInitParameters) DeepCopyInto(out *PrivateClusterConfigInitParameters) { + *out = *in + if in.EnablePrivateEndpoint != nil { + in, out := &in.EnablePrivateEndpoint, &out.EnablePrivateEndpoint + *out = new(bool) + **out = **in + } + if in.EnablePrivateNodes != nil { + in, out := &in.EnablePrivateNodes, &out.EnablePrivateNodes + *out = new(bool) + **out = **in + } + if in.MasterGlobalAccessConfig != nil { + in, out := &in.MasterGlobalAccessConfig, &out.MasterGlobalAccessConfig + *out = new(MasterGlobalAccessConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterIPv4CidrBlock != nil { + in, out := &in.MasterIPv4CidrBlock, &out.MasterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.PrivateEndpointSubnetwork != nil { + in, out := &in.PrivateEndpointSubnetwork, &out.PrivateEndpointSubnetwork + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateClusterConfigInitParameters. +func (in *PrivateClusterConfigInitParameters) DeepCopy() *PrivateClusterConfigInitParameters { + if in == nil { + return nil + } + out := new(PrivateClusterConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateClusterConfigObservation) DeepCopyInto(out *PrivateClusterConfigObservation) { + *out = *in + if in.EnablePrivateEndpoint != nil { + in, out := &in.EnablePrivateEndpoint, &out.EnablePrivateEndpoint + *out = new(bool) + **out = **in + } + if in.EnablePrivateNodes != nil { + in, out := &in.EnablePrivateNodes, &out.EnablePrivateNodes + *out = new(bool) + **out = **in + } + if in.MasterGlobalAccessConfig != nil { + in, out := &in.MasterGlobalAccessConfig, &out.MasterGlobalAccessConfig + *out = new(MasterGlobalAccessConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.MasterIPv4CidrBlock != nil { + in, out := &in.MasterIPv4CidrBlock, &out.MasterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.PeeringName != nil { + in, out := &in.PeeringName, &out.PeeringName + *out = new(string) + **out = **in + } + if in.PrivateEndpoint != nil { + in, out := &in.PrivateEndpoint, &out.PrivateEndpoint + *out = new(string) + **out = **in + } + if in.PrivateEndpointSubnetwork != nil { + in, out := &in.PrivateEndpointSubnetwork, &out.PrivateEndpointSubnetwork + *out = new(string) + **out = **in + } + if in.PublicEndpoint != nil { + in, out := &in.PublicEndpoint, &out.PublicEndpoint + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateClusterConfigObservation. +func (in *PrivateClusterConfigObservation) DeepCopy() *PrivateClusterConfigObservation { + if in == nil { + return nil + } + out := new(PrivateClusterConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateClusterConfigParameters) DeepCopyInto(out *PrivateClusterConfigParameters) { + *out = *in + if in.EnablePrivateEndpoint != nil { + in, out := &in.EnablePrivateEndpoint, &out.EnablePrivateEndpoint + *out = new(bool) + **out = **in + } + if in.EnablePrivateNodes != nil { + in, out := &in.EnablePrivateNodes, &out.EnablePrivateNodes + *out = new(bool) + **out = **in + } + if in.MasterGlobalAccessConfig != nil { + in, out := &in.MasterGlobalAccessConfig, &out.MasterGlobalAccessConfig + *out = new(MasterGlobalAccessConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.MasterIPv4CidrBlock != nil { + in, out := &in.MasterIPv4CidrBlock, &out.MasterIPv4CidrBlock + *out = new(string) + **out = **in + } + if in.PrivateEndpointSubnetwork != nil { + in, out := &in.PrivateEndpointSubnetwork, &out.PrivateEndpointSubnetwork + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateClusterConfigParameters. +func (in *PrivateClusterConfigParameters) DeepCopy() *PrivateClusterConfigParameters { + if in == nil { + return nil + } + out := new(PrivateClusterConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) { + *out = *in + if in.SecretURI != nil { + in, out := &in.SecretURI, &out.SecretURI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) { + *out = *in + if in.Fqdns != nil { + in, out := &in.Fqdns, &out.Fqdns + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GCPSecretManagerCertificateConfig != nil { + in, out := &in.GCPSecretManagerCertificateConfig, &out.GCPSecretManagerCertificateConfig + *out = new(CertificateAuthorityDomainConfigGCPSecretManagerCertificateConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) DeepCopyInto(out *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters. +func (in *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) DeepCopy() *PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigCertificateAuthorityDomainConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigInitParameters) DeepCopyInto(out *PrivateRegistryAccessConfigInitParameters) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]CertificateAuthorityDomainConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigInitParameters. +func (in *PrivateRegistryAccessConfigInitParameters) DeepCopy() *PrivateRegistryAccessConfigInitParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigObservation) DeepCopyInto(out *PrivateRegistryAccessConfigObservation) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]CertificateAuthorityDomainConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigObservation. +func (in *PrivateRegistryAccessConfigObservation) DeepCopy() *PrivateRegistryAccessConfigObservation { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateRegistryAccessConfigParameters) DeepCopyInto(out *PrivateRegistryAccessConfigParameters) { + *out = *in + if in.CertificateAuthorityDomainConfig != nil { + in, out := &in.CertificateAuthorityDomainConfig, &out.CertificateAuthorityDomainConfig + *out = make([]CertificateAuthorityDomainConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateRegistryAccessConfigParameters. +func (in *PrivateRegistryAccessConfigParameters) DeepCopy() *PrivateRegistryAccessConfigParameters { + if in == nil { + return nil + } + out := new(PrivateRegistryAccessConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProtectConfigInitParameters) DeepCopyInto(out *ProtectConfigInitParameters) { + *out = *in + if in.WorkloadConfig != nil { + in, out := &in.WorkloadConfig, &out.WorkloadConfig + *out = new(WorkloadConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadVulnerabilityMode != nil { + in, out := &in.WorkloadVulnerabilityMode, &out.WorkloadVulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProtectConfigInitParameters. +func (in *ProtectConfigInitParameters) DeepCopy() *ProtectConfigInitParameters { + if in == nil { + return nil + } + out := new(ProtectConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProtectConfigObservation) DeepCopyInto(out *ProtectConfigObservation) { + *out = *in + if in.WorkloadConfig != nil { + in, out := &in.WorkloadConfig, &out.WorkloadConfig + *out = new(WorkloadConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.WorkloadVulnerabilityMode != nil { + in, out := &in.WorkloadVulnerabilityMode, &out.WorkloadVulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProtectConfigObservation. +func (in *ProtectConfigObservation) DeepCopy() *ProtectConfigObservation { + if in == nil { + return nil + } + out := new(ProtectConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProtectConfigParameters) DeepCopyInto(out *ProtectConfigParameters) { + *out = *in + if in.WorkloadConfig != nil { + in, out := &in.WorkloadConfig, &out.WorkloadConfig + *out = new(WorkloadConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.WorkloadVulnerabilityMode != nil { + in, out := &in.WorkloadVulnerabilityMode, &out.WorkloadVulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProtectConfigParameters. +func (in *ProtectConfigParameters) DeepCopy() *ProtectConfigParameters { + if in == nil { + return nil + } + out := new(ProtectConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubsubInitParameters) DeepCopyInto(out *PubsubInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Topic != nil { + in, out := &in.Topic, &out.Topic + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubsubInitParameters. +func (in *PubsubInitParameters) DeepCopy() *PubsubInitParameters { + if in == nil { + return nil + } + out := new(PubsubInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubsubObservation) DeepCopyInto(out *PubsubObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterObservation) + (*in).DeepCopyInto(*out) + } + if in.Topic != nil { + in, out := &in.Topic, &out.Topic + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubsubObservation. +func (in *PubsubObservation) DeepCopy() *PubsubObservation { + if in == nil { + return nil + } + out := new(PubsubObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubsubParameters) DeepCopyInto(out *PubsubParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterParameters) + (*in).DeepCopyInto(*out) + } + if in.Topic != nil { + in, out := &in.Topic, &out.Topic + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubsubParameters. +func (in *PubsubParameters) DeepCopy() *PubsubParameters { + if in == nil { + return nil + } + out := new(PubsubParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueuedProvisioningInitParameters) DeepCopyInto(out *QueuedProvisioningInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueuedProvisioningInitParameters. +func (in *QueuedProvisioningInitParameters) DeepCopy() *QueuedProvisioningInitParameters { + if in == nil { + return nil + } + out := new(QueuedProvisioningInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueuedProvisioningObservation) DeepCopyInto(out *QueuedProvisioningObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueuedProvisioningObservation. +func (in *QueuedProvisioningObservation) DeepCopy() *QueuedProvisioningObservation { + if in == nil { + return nil + } + out := new(QueuedProvisioningObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueuedProvisioningParameters) DeepCopyInto(out *QueuedProvisioningParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueuedProvisioningParameters. +func (in *QueuedProvisioningParameters) DeepCopy() *QueuedProvisioningParameters { + if in == nil { + return nil + } + out := new(QueuedProvisioningParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterLoggingConfigInitParameters) DeepCopyInto(out *RayClusterLoggingConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterLoggingConfigInitParameters. +func (in *RayClusterLoggingConfigInitParameters) DeepCopy() *RayClusterLoggingConfigInitParameters { + if in == nil { + return nil + } + out := new(RayClusterLoggingConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterLoggingConfigObservation) DeepCopyInto(out *RayClusterLoggingConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterLoggingConfigObservation. +func (in *RayClusterLoggingConfigObservation) DeepCopy() *RayClusterLoggingConfigObservation { + if in == nil { + return nil + } + out := new(RayClusterLoggingConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterLoggingConfigParameters) DeepCopyInto(out *RayClusterLoggingConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterLoggingConfigParameters. +func (in *RayClusterLoggingConfigParameters) DeepCopy() *RayClusterLoggingConfigParameters { + if in == nil { + return nil + } + out := new(RayClusterLoggingConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterMonitoringConfigInitParameters) DeepCopyInto(out *RayClusterMonitoringConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterMonitoringConfigInitParameters. +func (in *RayClusterMonitoringConfigInitParameters) DeepCopy() *RayClusterMonitoringConfigInitParameters { + if in == nil { + return nil + } + out := new(RayClusterMonitoringConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterMonitoringConfigObservation) DeepCopyInto(out *RayClusterMonitoringConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterMonitoringConfigObservation. +func (in *RayClusterMonitoringConfigObservation) DeepCopy() *RayClusterMonitoringConfigObservation { + if in == nil { + return nil + } + out := new(RayClusterMonitoringConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayClusterMonitoringConfigParameters) DeepCopyInto(out *RayClusterMonitoringConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterMonitoringConfigParameters. +func (in *RayClusterMonitoringConfigParameters) DeepCopy() *RayClusterMonitoringConfigParameters { + if in == nil { + return nil + } + out := new(RayClusterMonitoringConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayOperatorConfigInitParameters) DeepCopyInto(out *RayOperatorConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.RayClusterLoggingConfig != nil { + in, out := &in.RayClusterLoggingConfig, &out.RayClusterLoggingConfig + *out = new(RayClusterLoggingConfigInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RayClusterMonitoringConfig != nil { + in, out := &in.RayClusterMonitoringConfig, &out.RayClusterMonitoringConfig + *out = new(RayClusterMonitoringConfigInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayOperatorConfigInitParameters. +func (in *RayOperatorConfigInitParameters) DeepCopy() *RayOperatorConfigInitParameters { + if in == nil { + return nil + } + out := new(RayOperatorConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayOperatorConfigObservation) DeepCopyInto(out *RayOperatorConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.RayClusterLoggingConfig != nil { + in, out := &in.RayClusterLoggingConfig, &out.RayClusterLoggingConfig + *out = new(RayClusterLoggingConfigObservation) + (*in).DeepCopyInto(*out) + } + if in.RayClusterMonitoringConfig != nil { + in, out := &in.RayClusterMonitoringConfig, &out.RayClusterMonitoringConfig + *out = new(RayClusterMonitoringConfigObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayOperatorConfigObservation. +func (in *RayOperatorConfigObservation) DeepCopy() *RayOperatorConfigObservation { + if in == nil { + return nil + } + out := new(RayOperatorConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RayOperatorConfigParameters) DeepCopyInto(out *RayOperatorConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.RayClusterLoggingConfig != nil { + in, out := &in.RayClusterLoggingConfig, &out.RayClusterLoggingConfig + *out = new(RayClusterLoggingConfigParameters) + (*in).DeepCopyInto(*out) + } + if in.RayClusterMonitoringConfig != nil { + in, out := &in.RayClusterMonitoringConfig, &out.RayClusterMonitoringConfig + *out = new(RayClusterMonitoringConfigParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayOperatorConfigParameters. +func (in *RayOperatorConfigParameters) DeepCopy() *RayOperatorConfigParameters { + if in == nil { + return nil + } + out := new(RayOperatorConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringWindowInitParameters) DeepCopyInto(out *RecurringWindowInitParameters) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringWindowInitParameters. +func (in *RecurringWindowInitParameters) DeepCopy() *RecurringWindowInitParameters { + if in == nil { + return nil + } + out := new(RecurringWindowInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringWindowObservation) DeepCopyInto(out *RecurringWindowObservation) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringWindowObservation. +func (in *RecurringWindowObservation) DeepCopy() *RecurringWindowObservation { + if in == nil { + return nil + } + out := new(RecurringWindowObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringWindowParameters) DeepCopyInto(out *RecurringWindowParameters) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringWindowParameters. +func (in *RecurringWindowParameters) DeepCopy() *RecurringWindowParameters { + if in == nil { + return nil + } + out := new(RecurringWindowParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReleaseChannelInitParameters) DeepCopyInto(out *ReleaseChannelInitParameters) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseChannelInitParameters. +func (in *ReleaseChannelInitParameters) DeepCopy() *ReleaseChannelInitParameters { + if in == nil { + return nil + } + out := new(ReleaseChannelInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReleaseChannelObservation) DeepCopyInto(out *ReleaseChannelObservation) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseChannelObservation. +func (in *ReleaseChannelObservation) DeepCopy() *ReleaseChannelObservation { + if in == nil { + return nil + } + out := new(ReleaseChannelObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReleaseChannelParameters) DeepCopyInto(out *ReleaseChannelParameters) { + *out = *in + if in.Channel != nil { + in, out := &in.Channel, &out.Channel + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseChannelParameters. +func (in *ReleaseChannelParameters) DeepCopy() *ReleaseChannelParameters { + if in == nil { + return nil + } + out := new(ReleaseChannelParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservationAffinityInitParameters) DeepCopyInto(out *ReservationAffinityInitParameters) { + *out = *in + if in.ConsumeReservationType != nil { + in, out := &in.ConsumeReservationType, &out.ConsumeReservationType + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservationAffinityInitParameters. +func (in *ReservationAffinityInitParameters) DeepCopy() *ReservationAffinityInitParameters { + if in == nil { + return nil + } + out := new(ReservationAffinityInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservationAffinityObservation) DeepCopyInto(out *ReservationAffinityObservation) { + *out = *in + if in.ConsumeReservationType != nil { + in, out := &in.ConsumeReservationType, &out.ConsumeReservationType + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservationAffinityObservation. +func (in *ReservationAffinityObservation) DeepCopy() *ReservationAffinityObservation { + if in == nil { + return nil + } + out := new(ReservationAffinityObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservationAffinityParameters) DeepCopyInto(out *ReservationAffinityParameters) { + *out = *in + if in.ConsumeReservationType != nil { + in, out := &in.ConsumeReservationType, &out.ConsumeReservationType + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservationAffinityParameters. +func (in *ReservationAffinityParameters) DeepCopy() *ReservationAffinityParameters { + if in == nil { + return nil + } + out := new(ReservationAffinityParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsInitParameters) DeepCopyInto(out *ResourceLimitsInitParameters) { + *out = *in + if in.Maximum != nil { + in, out := &in.Maximum, &out.Maximum + *out = new(float64) + **out = **in + } + if in.Minimum != nil { + in, out := &in.Minimum, &out.Minimum + *out = new(float64) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsInitParameters. +func (in *ResourceLimitsInitParameters) DeepCopy() *ResourceLimitsInitParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsObservation) DeepCopyInto(out *ResourceLimitsObservation) { + *out = *in + if in.Maximum != nil { + in, out := &in.Maximum, &out.Maximum + *out = new(float64) + **out = **in + } + if in.Minimum != nil { + in, out := &in.Minimum, &out.Minimum + *out = new(float64) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsObservation. +func (in *ResourceLimitsObservation) DeepCopy() *ResourceLimitsObservation { + if in == nil { + return nil + } + out := new(ResourceLimitsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsParameters) DeepCopyInto(out *ResourceLimitsParameters) { + *out = *in + if in.Maximum != nil { + in, out := &in.Maximum, &out.Maximum + *out = new(float64) + **out = **in + } + if in.Minimum != nil { + in, out := &in.Minimum, &out.Minimum + *out = new(float64) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsParameters. +func (in *ResourceLimitsParameters) DeepCopy() *ResourceLimitsParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceUsageExportConfigInitParameters) DeepCopyInto(out *ResourceUsageExportConfigInitParameters) { + *out = *in + if in.BigqueryDestination != nil { + in, out := &in.BigqueryDestination, &out.BigqueryDestination + *out = new(BigqueryDestinationInitParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableNetworkEgressMetering != nil { + in, out := &in.EnableNetworkEgressMetering, &out.EnableNetworkEgressMetering + *out = new(bool) + **out = **in + } + if in.EnableResourceConsumptionMetering != nil { + in, out := &in.EnableResourceConsumptionMetering, &out.EnableResourceConsumptionMetering + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsageExportConfigInitParameters. +func (in *ResourceUsageExportConfigInitParameters) DeepCopy() *ResourceUsageExportConfigInitParameters { + if in == nil { + return nil + } + out := new(ResourceUsageExportConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceUsageExportConfigObservation) DeepCopyInto(out *ResourceUsageExportConfigObservation) { + *out = *in + if in.BigqueryDestination != nil { + in, out := &in.BigqueryDestination, &out.BigqueryDestination + *out = new(BigqueryDestinationObservation) + (*in).DeepCopyInto(*out) + } + if in.EnableNetworkEgressMetering != nil { + in, out := &in.EnableNetworkEgressMetering, &out.EnableNetworkEgressMetering + *out = new(bool) + **out = **in + } + if in.EnableResourceConsumptionMetering != nil { + in, out := &in.EnableResourceConsumptionMetering, &out.EnableResourceConsumptionMetering + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsageExportConfigObservation. +func (in *ResourceUsageExportConfigObservation) DeepCopy() *ResourceUsageExportConfigObservation { + if in == nil { + return nil + } + out := new(ResourceUsageExportConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceUsageExportConfigParameters) DeepCopyInto(out *ResourceUsageExportConfigParameters) { + *out = *in + if in.BigqueryDestination != nil { + in, out := &in.BigqueryDestination, &out.BigqueryDestination + *out = new(BigqueryDestinationParameters) + (*in).DeepCopyInto(*out) + } + if in.EnableNetworkEgressMetering != nil { + in, out := &in.EnableNetworkEgressMetering, &out.EnableNetworkEgressMetering + *out = new(bool) + **out = **in + } + if in.EnableResourceConsumptionMetering != nil { + in, out := &in.EnableResourceConsumptionMetering, &out.EnableResourceConsumptionMetering + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsageExportConfigParameters. +func (in *ResourceUsageExportConfigParameters) DeepCopy() *ResourceUsageExportConfigParameters { + if in == nil { + return nil + } + out := new(ResourceUsageExportConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SandboxConfigInitParameters) DeepCopyInto(out *SandboxConfigInitParameters) { + *out = *in + if in.SandboxType != nil { + in, out := &in.SandboxType, &out.SandboxType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SandboxConfigInitParameters. +func (in *SandboxConfigInitParameters) DeepCopy() *SandboxConfigInitParameters { + if in == nil { + return nil + } + out := new(SandboxConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SandboxConfigObservation) DeepCopyInto(out *SandboxConfigObservation) { + *out = *in + if in.SandboxType != nil { + in, out := &in.SandboxType, &out.SandboxType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SandboxConfigObservation. +func (in *SandboxConfigObservation) DeepCopy() *SandboxConfigObservation { + if in == nil { + return nil + } + out := new(SandboxConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SandboxConfigParameters) DeepCopyInto(out *SandboxConfigParameters) { + *out = *in + if in.SandboxType != nil { + in, out := &in.SandboxType, &out.SandboxType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SandboxConfigParameters. +func (in *SandboxConfigParameters) DeepCopy() *SandboxConfigParameters { + if in == nil { + return nil + } + out := new(SandboxConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryBootDisksInitParameters) DeepCopyInto(out *SecondaryBootDisksInitParameters) { + *out = *in + if in.DiskImage != nil { + in, out := &in.DiskImage, &out.DiskImage + *out = new(string) + **out = **in + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryBootDisksInitParameters. +func (in *SecondaryBootDisksInitParameters) DeepCopy() *SecondaryBootDisksInitParameters { + if in == nil { + return nil + } + out := new(SecondaryBootDisksInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryBootDisksObservation) DeepCopyInto(out *SecondaryBootDisksObservation) { + *out = *in + if in.DiskImage != nil { + in, out := &in.DiskImage, &out.DiskImage + *out = new(string) + **out = **in + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryBootDisksObservation. +func (in *SecondaryBootDisksObservation) DeepCopy() *SecondaryBootDisksObservation { + if in == nil { + return nil + } + out := new(SecondaryBootDisksObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecondaryBootDisksParameters) DeepCopyInto(out *SecondaryBootDisksParameters) { + *out = *in + if in.DiskImage != nil { + in, out := &in.DiskImage, &out.DiskImage + *out = new(string) + **out = **in + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecondaryBootDisksParameters. +func (in *SecondaryBootDisksParameters) DeepCopy() *SecondaryBootDisksParameters { + if in == nil { + return nil + } + out := new(SecondaryBootDisksParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretManagerConfigInitParameters) DeepCopyInto(out *SecretManagerConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretManagerConfigInitParameters. +func (in *SecretManagerConfigInitParameters) DeepCopy() *SecretManagerConfigInitParameters { + if in == nil { + return nil + } + out := new(SecretManagerConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretManagerConfigObservation) DeepCopyInto(out *SecretManagerConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretManagerConfigObservation. +func (in *SecretManagerConfigObservation) DeepCopy() *SecretManagerConfigObservation { + if in == nil { + return nil + } + out := new(SecretManagerConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretManagerConfigParameters) DeepCopyInto(out *SecretManagerConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretManagerConfigParameters. +func (in *SecretManagerConfigParameters) DeepCopy() *SecretManagerConfigParameters { + if in == nil { + return nil + } + out := new(SecretManagerConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecurityPostureConfigInitParameters) DeepCopyInto(out *SecurityPostureConfigInitParameters) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } + if in.VulnerabilityMode != nil { + in, out := &in.VulnerabilityMode, &out.VulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityPostureConfigInitParameters. +func (in *SecurityPostureConfigInitParameters) DeepCopy() *SecurityPostureConfigInitParameters { + if in == nil { + return nil + } + out := new(SecurityPostureConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecurityPostureConfigObservation) DeepCopyInto(out *SecurityPostureConfigObservation) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } + if in.VulnerabilityMode != nil { + in, out := &in.VulnerabilityMode, &out.VulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityPostureConfigObservation. +func (in *SecurityPostureConfigObservation) DeepCopy() *SecurityPostureConfigObservation { + if in == nil { + return nil + } + out := new(SecurityPostureConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecurityPostureConfigParameters) DeepCopyInto(out *SecurityPostureConfigParameters) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } + if in.VulnerabilityMode != nil { + in, out := &in.VulnerabilityMode, &out.VulnerabilityMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityPostureConfigParameters. +func (in *SecurityPostureConfigParameters) DeepCopy() *SecurityPostureConfigParameters { + if in == nil { + return nil + } + out := new(SecurityPostureConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceExternalIpsConfigInitParameters) DeepCopyInto(out *ServiceExternalIpsConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceExternalIpsConfigInitParameters. +func (in *ServiceExternalIpsConfigInitParameters) DeepCopy() *ServiceExternalIpsConfigInitParameters { + if in == nil { + return nil + } + out := new(ServiceExternalIpsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceExternalIpsConfigObservation) DeepCopyInto(out *ServiceExternalIpsConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceExternalIpsConfigObservation. +func (in *ServiceExternalIpsConfigObservation) DeepCopy() *ServiceExternalIpsConfigObservation { + if in == nil { + return nil + } + out := new(ServiceExternalIpsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceExternalIpsConfigParameters) DeepCopyInto(out *ServiceExternalIpsConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceExternalIpsConfigParameters. +func (in *ServiceExternalIpsConfigParameters) DeepCopy() *ServiceExternalIpsConfigParameters { + if in == nil { + return nil + } + out := new(ServiceExternalIpsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigInitParameters) DeepCopyInto(out *ShieldedInstanceConfigInitParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigInitParameters. +func (in *ShieldedInstanceConfigInitParameters) DeepCopy() *ShieldedInstanceConfigInitParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigObservation) DeepCopyInto(out *ShieldedInstanceConfigObservation) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigObservation. +func (in *ShieldedInstanceConfigObservation) DeepCopy() *ShieldedInstanceConfigObservation { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigParameters) DeepCopyInto(out *ShieldedInstanceConfigParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigParameters. +func (in *ShieldedInstanceConfigParameters) DeepCopy() *ShieldedInstanceConfigParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigInitParameters) DeepCopyInto(out *SoleTenantConfigInitParameters) { + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = make([]NodeAffinityInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigInitParameters. +func (in *SoleTenantConfigInitParameters) DeepCopy() *SoleTenantConfigInitParameters { + if in == nil { + return nil + } + out := new(SoleTenantConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigNodeAffinityInitParameters) DeepCopyInto(out *SoleTenantConfigNodeAffinityInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigNodeAffinityInitParameters. +func (in *SoleTenantConfigNodeAffinityInitParameters) DeepCopy() *SoleTenantConfigNodeAffinityInitParameters { + if in == nil { + return nil + } + out := new(SoleTenantConfigNodeAffinityInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigNodeAffinityObservation) DeepCopyInto(out *SoleTenantConfigNodeAffinityObservation) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Operator != nil { + in, out := &in.Operator, &out.Operator + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigNodeAffinityObservation. +func (in *SoleTenantConfigNodeAffinityObservation) DeepCopy() *SoleTenantConfigNodeAffinityObservation { + if in == nil { + return nil + } + out := new(SoleTenantConfigNodeAffinityObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigNodeAffinityParameters) DeepCopyInto(out *SoleTenantConfigNodeAffinityParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigNodeAffinityParameters. +func (in *SoleTenantConfigNodeAffinityParameters) DeepCopy() *SoleTenantConfigNodeAffinityParameters { + if in == nil { + return nil + } + out := new(SoleTenantConfigNodeAffinityParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigObservation) DeepCopyInto(out *SoleTenantConfigObservation) { + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = make([]NodeAffinityObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigObservation. +func (in *SoleTenantConfigObservation) DeepCopy() *SoleTenantConfigObservation { + if in == nil { + return nil + } + out := new(SoleTenantConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SoleTenantConfigParameters) DeepCopyInto(out *SoleTenantConfigParameters) { + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = make([]NodeAffinityParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SoleTenantConfigParameters. +func (in *SoleTenantConfigParameters) DeepCopy() *SoleTenantConfigParameters { + if in == nil { + return nil + } + out := new(SoleTenantConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StandardRolloutPolicyInitParameters) DeepCopyInto(out *StandardRolloutPolicyInitParameters) { + *out = *in + if in.BatchNodeCount != nil { + in, out := &in.BatchNodeCount, &out.BatchNodeCount + *out = new(float64) + **out = **in + } + if in.BatchPercentage != nil { + in, out := &in.BatchPercentage, &out.BatchPercentage + *out = new(float64) + **out = **in + } + if in.BatchSoakDuration != nil { + in, out := &in.BatchSoakDuration, &out.BatchSoakDuration + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StandardRolloutPolicyInitParameters. +func (in *StandardRolloutPolicyInitParameters) DeepCopy() *StandardRolloutPolicyInitParameters { + if in == nil { + return nil + } + out := new(StandardRolloutPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StandardRolloutPolicyObservation) DeepCopyInto(out *StandardRolloutPolicyObservation) { + *out = *in + if in.BatchNodeCount != nil { + in, out := &in.BatchNodeCount, &out.BatchNodeCount + *out = new(float64) + **out = **in + } + if in.BatchPercentage != nil { + in, out := &in.BatchPercentage, &out.BatchPercentage + *out = new(float64) + **out = **in + } + if in.BatchSoakDuration != nil { + in, out := &in.BatchSoakDuration, &out.BatchSoakDuration + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StandardRolloutPolicyObservation. +func (in *StandardRolloutPolicyObservation) DeepCopy() *StandardRolloutPolicyObservation { + if in == nil { + return nil + } + out := new(StandardRolloutPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StandardRolloutPolicyParameters) DeepCopyInto(out *StandardRolloutPolicyParameters) { + *out = *in + if in.BatchNodeCount != nil { + in, out := &in.BatchNodeCount, &out.BatchNodeCount + *out = new(float64) + **out = **in + } + if in.BatchPercentage != nil { + in, out := &in.BatchPercentage, &out.BatchPercentage + *out = new(float64) + **out = **in + } + if in.BatchSoakDuration != nil { + in, out := &in.BatchSoakDuration, &out.BatchSoakDuration + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StandardRolloutPolicyParameters. +func (in *StandardRolloutPolicyParameters) DeepCopy() *StandardRolloutPolicyParameters { + if in == nil { + return nil + } + out := new(StandardRolloutPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulHaConfigInitParameters) DeepCopyInto(out *StatefulHaConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulHaConfigInitParameters. +func (in *StatefulHaConfigInitParameters) DeepCopy() *StatefulHaConfigInitParameters { + if in == nil { + return nil + } + out := new(StatefulHaConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulHaConfigObservation) DeepCopyInto(out *StatefulHaConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulHaConfigObservation. +func (in *StatefulHaConfigObservation) DeepCopy() *StatefulHaConfigObservation { + if in == nil { + return nil + } + out := new(StatefulHaConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulHaConfigParameters) DeepCopyInto(out *StatefulHaConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulHaConfigParameters. +func (in *StatefulHaConfigParameters) DeepCopy() *StatefulHaConfigParameters { + if in == nil { + return nil + } + out := new(StatefulHaConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintInitParameters) DeepCopyInto(out *TaintInitParameters) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintInitParameters. +func (in *TaintInitParameters) DeepCopy() *TaintInitParameters { + if in == nil { + return nil + } + out := new(TaintInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintObservation) DeepCopyInto(out *TaintObservation) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintObservation. +func (in *TaintObservation) DeepCopy() *TaintObservation { + if in == nil { + return nil + } + out := new(TaintObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintParameters) DeepCopyInto(out *TaintParameters) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintParameters. +func (in *TaintParameters) DeepCopy() *TaintParameters { + if in == nil { + return nil + } + out := new(TaintParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TpuConfigInitParameters) DeepCopyInto(out *TpuConfigInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.UseServiceNetworking != nil { + in, out := &in.UseServiceNetworking, &out.UseServiceNetworking + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TpuConfigInitParameters. +func (in *TpuConfigInitParameters) DeepCopy() *TpuConfigInitParameters { + if in == nil { + return nil + } + out := new(TpuConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TpuConfigObservation) DeepCopyInto(out *TpuConfigObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.IPv4CidrBlock != nil { + in, out := &in.IPv4CidrBlock, &out.IPv4CidrBlock + *out = new(string) + **out = **in + } + if in.UseServiceNetworking != nil { + in, out := &in.UseServiceNetworking, &out.UseServiceNetworking + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TpuConfigObservation. +func (in *TpuConfigObservation) DeepCopy() *TpuConfigObservation { + if in == nil { + return nil + } + out := new(TpuConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TpuConfigParameters) DeepCopyInto(out *TpuConfigParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.UseServiceNetworking != nil { + in, out := &in.UseServiceNetworking, &out.UseServiceNetworking + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TpuConfigParameters. +func (in *TpuConfigParameters) DeepCopy() *TpuConfigParameters { + if in == nil { + return nil + } + out := new(TpuConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeOptionsInitParameters) DeepCopyInto(out *UpgradeOptionsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeOptionsInitParameters. +func (in *UpgradeOptionsInitParameters) DeepCopy() *UpgradeOptionsInitParameters { + if in == nil { + return nil + } + out := new(UpgradeOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeOptionsObservation) DeepCopyInto(out *UpgradeOptionsObservation) { + *out = *in + if in.AutoUpgradeStartTime != nil { + in, out := &in.AutoUpgradeStartTime, &out.AutoUpgradeStartTime + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeOptionsObservation. +func (in *UpgradeOptionsObservation) DeepCopy() *UpgradeOptionsObservation { + if in == nil { + return nil + } + out := new(UpgradeOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeOptionsParameters) DeepCopyInto(out *UpgradeOptionsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeOptionsParameters. +func (in *UpgradeOptionsParameters) DeepCopy() *UpgradeOptionsParameters { + if in == nil { + return nil + } + out := new(UpgradeOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsBlueGreenSettingsInitParameters) DeepCopyInto(out *UpgradeSettingsBlueGreenSettingsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsBlueGreenSettingsInitParameters. +func (in *UpgradeSettingsBlueGreenSettingsInitParameters) DeepCopy() *UpgradeSettingsBlueGreenSettingsInitParameters { + if in == nil { + return nil + } + out := new(UpgradeSettingsBlueGreenSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsBlueGreenSettingsObservation) DeepCopyInto(out *UpgradeSettingsBlueGreenSettingsObservation) { + *out = *in + if in.NodePoolSoakDuration != nil { + in, out := &in.NodePoolSoakDuration, &out.NodePoolSoakDuration + *out = new(string) + **out = **in + } + if in.StandardRolloutPolicy != nil { + in, out := &in.StandardRolloutPolicy, &out.StandardRolloutPolicy + *out = new(BlueGreenSettingsStandardRolloutPolicyObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsBlueGreenSettingsObservation. +func (in *UpgradeSettingsBlueGreenSettingsObservation) DeepCopy() *UpgradeSettingsBlueGreenSettingsObservation { + if in == nil { + return nil + } + out := new(UpgradeSettingsBlueGreenSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsBlueGreenSettingsParameters) DeepCopyInto(out *UpgradeSettingsBlueGreenSettingsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsBlueGreenSettingsParameters. +func (in *UpgradeSettingsBlueGreenSettingsParameters) DeepCopy() *UpgradeSettingsBlueGreenSettingsParameters { + if in == nil { + return nil + } + out := new(UpgradeSettingsBlueGreenSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsInitParameters) DeepCopyInto(out *UpgradeSettingsInitParameters) { + *out = *in + if in.BlueGreenSettings != nil { + in, out := &in.BlueGreenSettings, &out.BlueGreenSettings + *out = new(BlueGreenSettingsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(float64) + **out = **in + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(float64) + **out = **in + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsInitParameters. +func (in *UpgradeSettingsInitParameters) DeepCopy() *UpgradeSettingsInitParameters { + if in == nil { + return nil + } + out := new(UpgradeSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsObservation) DeepCopyInto(out *UpgradeSettingsObservation) { + *out = *in + if in.BlueGreenSettings != nil { + in, out := &in.BlueGreenSettings, &out.BlueGreenSettings + *out = new(BlueGreenSettingsObservation) + (*in).DeepCopyInto(*out) + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(float64) + **out = **in + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(float64) + **out = **in + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsObservation. +func (in *UpgradeSettingsObservation) DeepCopy() *UpgradeSettingsObservation { + if in == nil { + return nil + } + out := new(UpgradeSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeSettingsParameters) DeepCopyInto(out *UpgradeSettingsParameters) { + *out = *in + if in.BlueGreenSettings != nil { + in, out := &in.BlueGreenSettings, &out.BlueGreenSettings + *out = new(BlueGreenSettingsParameters) + (*in).DeepCopyInto(*out) + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(float64) + **out = **in + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(float64) + **out = **in + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeSettingsParameters. +func (in *UpgradeSettingsParameters) DeepCopy() *UpgradeSettingsParameters { + if in == nil { + return nil + } + out := new(UpgradeSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VerticalPodAutoscalingInitParameters) DeepCopyInto(out *VerticalPodAutoscalingInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VerticalPodAutoscalingInitParameters. +func (in *VerticalPodAutoscalingInitParameters) DeepCopy() *VerticalPodAutoscalingInitParameters { + if in == nil { + return nil + } + out := new(VerticalPodAutoscalingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VerticalPodAutoscalingObservation) DeepCopyInto(out *VerticalPodAutoscalingObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VerticalPodAutoscalingObservation. +func (in *VerticalPodAutoscalingObservation) DeepCopy() *VerticalPodAutoscalingObservation { + if in == nil { + return nil + } + out := new(VerticalPodAutoscalingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VerticalPodAutoscalingParameters) DeepCopyInto(out *VerticalPodAutoscalingParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VerticalPodAutoscalingParameters. +func (in *VerticalPodAutoscalingParameters) DeepCopy() *VerticalPodAutoscalingParameters { + if in == nil { + return nil + } + out := new(VerticalPodAutoscalingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadAltsConfigInitParameters) DeepCopyInto(out *WorkloadAltsConfigInitParameters) { + *out = *in + if in.EnableAlts != nil { + in, out := &in.EnableAlts, &out.EnableAlts + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadAltsConfigInitParameters. +func (in *WorkloadAltsConfigInitParameters) DeepCopy() *WorkloadAltsConfigInitParameters { + if in == nil { + return nil + } + out := new(WorkloadAltsConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadAltsConfigObservation) DeepCopyInto(out *WorkloadAltsConfigObservation) { + *out = *in + if in.EnableAlts != nil { + in, out := &in.EnableAlts, &out.EnableAlts + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadAltsConfigObservation. +func (in *WorkloadAltsConfigObservation) DeepCopy() *WorkloadAltsConfigObservation { + if in == nil { + return nil + } + out := new(WorkloadAltsConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadAltsConfigParameters) DeepCopyInto(out *WorkloadAltsConfigParameters) { + *out = *in + if in.EnableAlts != nil { + in, out := &in.EnableAlts, &out.EnableAlts + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadAltsConfigParameters. +func (in *WorkloadAltsConfigParameters) DeepCopy() *WorkloadAltsConfigParameters { + if in == nil { + return nil + } + out := new(WorkloadAltsConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadConfigInitParameters) DeepCopyInto(out *WorkloadConfigInitParameters) { + *out = *in + if in.AuditMode != nil { + in, out := &in.AuditMode, &out.AuditMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadConfigInitParameters. +func (in *WorkloadConfigInitParameters) DeepCopy() *WorkloadConfigInitParameters { + if in == nil { + return nil + } + out := new(WorkloadConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadConfigObservation) DeepCopyInto(out *WorkloadConfigObservation) { + *out = *in + if in.AuditMode != nil { + in, out := &in.AuditMode, &out.AuditMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadConfigObservation. +func (in *WorkloadConfigObservation) DeepCopy() *WorkloadConfigObservation { + if in == nil { + return nil + } + out := new(WorkloadConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadConfigParameters) DeepCopyInto(out *WorkloadConfigParameters) { + *out = *in + if in.AuditMode != nil { + in, out := &in.AuditMode, &out.AuditMode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadConfigParameters. +func (in *WorkloadConfigParameters) DeepCopy() *WorkloadConfigParameters { + if in == nil { + return nil + } + out := new(WorkloadConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadIdentityConfigInitParameters) DeepCopyInto(out *WorkloadIdentityConfigInitParameters) { + *out = *in + if in.WorkloadPool != nil { + in, out := &in.WorkloadPool, &out.WorkloadPool + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadIdentityConfigInitParameters. +func (in *WorkloadIdentityConfigInitParameters) DeepCopy() *WorkloadIdentityConfigInitParameters { + if in == nil { + return nil + } + out := new(WorkloadIdentityConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadIdentityConfigObservation) DeepCopyInto(out *WorkloadIdentityConfigObservation) { + *out = *in + if in.WorkloadPool != nil { + in, out := &in.WorkloadPool, &out.WorkloadPool + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadIdentityConfigObservation. +func (in *WorkloadIdentityConfigObservation) DeepCopy() *WorkloadIdentityConfigObservation { + if in == nil { + return nil + } + out := new(WorkloadIdentityConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadIdentityConfigParameters) DeepCopyInto(out *WorkloadIdentityConfigParameters) { + *out = *in + if in.WorkloadPool != nil { + in, out := &in.WorkloadPool, &out.WorkloadPool + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadIdentityConfigParameters. +func (in *WorkloadIdentityConfigParameters) DeepCopy() *WorkloadIdentityConfigParameters { + if in == nil { + return nil + } + out := new(WorkloadIdentityConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadMetadataConfigInitParameters) DeepCopyInto(out *WorkloadMetadataConfigInitParameters) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadMetadataConfigInitParameters. +func (in *WorkloadMetadataConfigInitParameters) DeepCopy() *WorkloadMetadataConfigInitParameters { + if in == nil { + return nil + } + out := new(WorkloadMetadataConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadMetadataConfigObservation) DeepCopyInto(out *WorkloadMetadataConfigObservation) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadMetadataConfigObservation. +func (in *WorkloadMetadataConfigObservation) DeepCopy() *WorkloadMetadataConfigObservation { + if in == nil { + return nil + } + out := new(WorkloadMetadataConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadMetadataConfigParameters) DeepCopyInto(out *WorkloadMetadataConfigParameters) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadMetadataConfigParameters. +func (in *WorkloadMetadataConfigParameters) DeepCopy() *WorkloadMetadataConfigParameters { + if in == nil { + return nil + } + out := new(WorkloadMetadataConfigParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/container/v1beta2/zz_generated.managed.go b/apis/container/v1beta2/zz_generated.managed.go new file mode 100644 index 0000000..8a26829 --- /dev/null +++ b/apis/container/v1beta2/zz_generated.managed.go @@ -0,0 +1,68 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 +// Code generated by angryjet. DO NOT EDIT. + +package v1beta2 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Cluster. +func (mg *Cluster) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Cluster. +func (mg *Cluster) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Cluster. +func (mg *Cluster) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Cluster. +func (mg *Cluster) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Cluster. +func (mg *Cluster) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Cluster. +func (mg *Cluster) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Cluster. +func (mg *Cluster) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Cluster. +func (mg *Cluster) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Cluster. +func (mg *Cluster) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Cluster. +func (mg *Cluster) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Cluster. +func (mg *Cluster) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Cluster. +func (mg *Cluster) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/container/v1beta2/zz_generated.managedlist.go b/apis/container/v1beta2/zz_generated.managedlist.go new file mode 100644 index 0000000..a6628c8 --- /dev/null +++ b/apis/container/v1beta2/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 +// Code generated by angryjet. DO NOT EDIT. + +package v1beta2 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ClusterList. +func (l *ClusterList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/container/v1beta2/zz_groupversion_info.go b/apis/container/v1beta2/zz_groupversion_info.go new file mode 100755 index 0000000..cde1180 --- /dev/null +++ b/apis/container/v1beta2/zz_groupversion_info.go @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=container.gcp-beta.upbound.io +// +versionName=v1beta2 +package v1beta2 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "container.gcp-beta.upbound.io" + CRDVersion = "v1beta2" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/zz_register.go b/apis/zz_register.go index 3fa9ae3..2c2f4a3 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -12,6 +12,7 @@ import ( v1beta1 "github.com/upbound/provider-gcp-beta/apis/cloudplatform/v1beta1" v1beta1container "github.com/upbound/provider-gcp-beta/apis/container/v1beta1" + v1beta2 "github.com/upbound/provider-gcp-beta/apis/container/v1beta2" v1alpha1 "github.com/upbound/provider-gcp-beta/apis/v1alpha1" v1beta1apis "github.com/upbound/provider-gcp-beta/apis/v1beta1" ) @@ -21,6 +22,7 @@ func init() { AddToSchemes = append(AddToSchemes, v1beta1.SchemeBuilder.AddToScheme, v1beta1container.SchemeBuilder.AddToScheme, + v1beta2.SchemeBuilder.AddToScheme, v1alpha1.SchemeBuilder.AddToScheme, v1beta1apis.SchemeBuilder.AddToScheme, ) diff --git a/config/old-singleton-list-apis.txt b/config/old-singleton-list-apis.txt new file mode 100644 index 0000000..6895fde --- /dev/null +++ b/config/old-singleton-list-apis.txt @@ -0,0 +1 @@ +google_container_cluster \ No newline at end of file diff --git a/config/provider.go b/config/provider.go index b201de2..3932b14 100644 --- a/config/provider.go +++ b/config/provider.go @@ -6,11 +6,14 @@ package config import ( "context" + "strings" // Note(ezgidemirel): we are importing this to embed provider schema document _ "embed" + "github.com/crossplane/upjet/pkg/config" ujconfig "github.com/crossplane/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/config/conversion" "github.com/crossplane/upjet/pkg/registry/reference" "github.com/crossplane/upjet/pkg/schema/traverser" conversiontfjson "github.com/crossplane/upjet/pkg/types/conversion/tfjson" @@ -35,6 +38,27 @@ var ( //go:embed provider-metadata.yaml providerMetadata []byte + + // oldSingletonListAPIs is a newline-delimited list of Terraform resource + // names with converted singleton list APIs with at least CRD API version + // containing the old singleton list API. This is to prevent the API + // conversion for the newly added resources whose CRD APIs will already + // use embedded objects instead of the singleton lists and thus, will + // not possess a CRD API version with the singleton list. Thus, for + // the newly added resources (resources added after the singleton lists + // have been converted), we do not need the CRD API conversion + // functions that convert between singleton lists and embedded objects, + // but we need only the Terraform conversion functions. + // This list is immutable and represents the set of resources with the + // already generated CRD API versions with now converted singleton lists. + // Because new resources should never have singleton lists in their + // generated APIs, there should be no need to add them to this list. + // However, bugs might result in exceptions in the future. + // Please see: + // https://github.com/crossplane-contrib/provider-upjet-gcp/pull/508 + // for more context on singleton list to embedded object conversions. + //go:embed old-singleton-list-apis.txt + oldSingletonListAPIs string ) var skipList = []string{ @@ -150,10 +174,10 @@ func GetProvider(_ context.Context, generationProvider bool) (*ujconfig.Provider ujconfig.WithFeaturesPackage("internal/features"), ujconfig.WithMainTemplate(hack.MainTemplate), ujconfig.WithTerraformProvider(sdkProvider), - //ujconfig.WithSchemaTraversers(&ujconfig.SingletonListEmbedder{}), + ujconfig.WithSchemaTraversers(&ujconfig.SingletonListEmbedder{}), ) - //bumpVersionsWithEmbeddedLists(pc) + bumpVersionsWithEmbeddedLists(pc) for _, configure := range []func(provider *ujconfig.Provider){ container.Configure, } { @@ -177,8 +201,13 @@ func resourceList(t map[string]ujconfig.ExternalName) []string { return l } -/* func bumpVersionsWithEmbeddedLists(pc *ujconfig.Provider) { + l := strings.Split(strings.TrimSpace(oldSingletonListAPIs), "\n") + oldSLAPIs := make(map[string]struct{}, len(l)) + for _, n := range l { + oldSLAPIs[n] = struct{}{} + } + for n, r := range pc.Resources { r := r // nothing to do if no singleton list has been converted to @@ -186,20 +215,32 @@ func bumpVersionsWithEmbeddedLists(pc *ujconfig.Provider) { if len(r.CRDListConversionPaths()) == 0 { continue } - r.Version = "v1beta2" - r.PreviousVersions = []string{VersionV1Beta1} - // we would like to set the storage version to v1beta1 to facilitate - // downgrades. - r.SetCRDStorageVersion("v1beta1") - r.ControllerReconcileVersion = "v1beta1" - r.Conversions = []conversion.Conversion{ - conversion.NewIdentityConversionExpandPaths(conversion.AllVersions, conversion.AllVersions, conversion.DefaultPathPrefixes(), r.CRDListConversionPaths()...), - conversion.NewSingletonListConversion("v1beta1", "v1beta2", conversion.DefaultPathPrefixes(), r.CRDListConversionPaths(), conversion.ToEmbeddedObject), - conversion.NewSingletonListConversion("v1beta2", "v1beta1", conversion.DefaultPathPrefixes(), r.CRDListConversionPaths(), conversion.ToSingletonList)} + + if _, ok := oldSLAPIs[n]; ok { + r.Version = "v1beta2" + r.PreviousVersions = []string{"v1beta1"} + // we would like to set the storage version to v1beta1 to facilitate + // downgrades. + r.SetCRDStorageVersion("v1beta1") + // because the controller reconciles on the API version with the singleton list API, + // no need for a Terraform conversion. + r.ControllerReconcileVersion = "v1beta1" + r.Conversions = []conversion.Conversion{ + conversion.NewIdentityConversionExpandPaths(conversion.AllVersions, conversion.AllVersions, conversion.DefaultPathPrefixes(), r.CRDListConversionPaths()...), + conversion.NewSingletonListConversion("v1beta1", "v1beta2", conversion.DefaultPathPrefixes(), r.CRDListConversionPaths(), conversion.ToEmbeddedObject), + conversion.NewSingletonListConversion("v1beta2", "v1beta1", conversion.DefaultPathPrefixes(), r.CRDListConversionPaths(), conversion.ToSingletonList)} + } else { + // the controller will be reconciling on the CRD API version + // with the converted API (with embedded objects in place of + // singleton lists), so we need the appropriate Terraform + // converter in this case. + r.TerraformConversions = []config.TerraformConversion{ + config.NewTFSingletonConversion(), + } + } pc.Resources[n] = r } } -*/ func init() { // GCP specific acronyms diff --git a/examples-generated/container/v1beta2/cluster.yaml b/examples-generated/container/v1beta2/cluster.yaml new file mode 100644 index 0000000..f6dec84 --- /dev/null +++ b/examples-generated/container/v1beta2/cluster.yaml @@ -0,0 +1,13 @@ +apiVersion: container.gcp-beta.upbound.io/v1beta2 +kind: Cluster +metadata: + annotations: + meta.upbound.io/example-id: container/v1beta2/cluster + labels: + testing.upbound.io/example-name: primary + name: primary +spec: + forProvider: + initialNodeCount: 1 + location: us-central1 + removeDefaultNodePool: true diff --git a/examples/container/v1beta2/cluster.yaml b/examples/container/v1beta2/cluster.yaml new file mode 100644 index 0000000..376dfcd --- /dev/null +++ b/examples/container/v1beta2/cluster.yaml @@ -0,0 +1,15 @@ +apiVersion: container.gcp-beta.upbound.io/v1beta2 +kind: Cluster +metadata: + annotations: + meta.upbound.io/example-id: container/v1beta2/cluster + labels: + testing.upbound.io/example-name: primary2 + name: primary2 +spec: + forProvider: + deletionProtection: false + enableAutopilot: true + enableIntranodeVisibility: true + ipAllocationPolicy: {} + location: europe-north1 \ No newline at end of file diff --git a/package/crds/container.gcp-beta.upbound.io_clusters.yaml b/package/crds/container.gcp-beta.upbound.io_clusters.yaml index 04db1c2..f731a3c 100644 --- a/package/crds/container.gcp-beta.upbound.io_clusters.yaml +++ b/package/crds/container.gcp-beta.upbound.io_clusters.yaml @@ -7122,3 +7122,6385 @@ spec: storage: true subresources: status: {} + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta2 + schema: + openAPIV3Schema: + description: Cluster is the Schema for the Clusters API. Creates a Google + Kubernetes Engine (GKE) cluster. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: ClusterSpec defines the desired state of Cluster + properties: + deletionPolicy: + default: Delete + description: |- + DeletionPolicy specifies what will happen to the underlying external + when this managed resource is deleted - either "Delete" or "Orphan" the + external resource. + This field is planned to be deprecated in favor of the ManagementPolicies + field in a future release. Currently, both could be set independently and + non-default values would be honored if the feature flag is enabled. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + addonsConfig: + description: |- + The configuration for addons supported by GKE. + Structure is documented below. + properties: + cloudrunConfig: + description: . Structure is documented below. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + loadBalancerType: + description: |- + The load balancer type of CloudRun ingress service. It is external load balancer by default. + Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + type: string + type: object + configConnectorConfig: + description: |- + . + The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + dnsCacheConfig: + description: |- + . + The status of the NodeLocal DNSCache addon. It is disabled by default. + Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcePersistentDiskCsiDriverConfig: + description: |- + . + Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcpFilestoreCsiDriverConfig: + description: |- + The status of the Filestore CSI driver addon, + which allows the usage of filestore instance as volumes. + It is disabled by default; set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcsFuseCsiDriverConfig: + description: |- + The status of the GCSFuse CSI driver addon, + which allows the usage of a gcs bucket as volumes. + It is disabled by default for Standard clusters; set enabled = true to enable. + It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + See Enable the Cloud Storage FUSE CSI driver for more information. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gkeBackupAgentConfig: + description: |- + . + The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + horizontalPodAutoscaling: + description: |- + The status of the Horizontal Pod Autoscaling + addon, which increases or decreases the number of replica pods a replication controller + has based on the resource usage of the existing pods. + It is enabled by default; + set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + httpLoadBalancing: + description: |- + The status of the HTTP (L7) load balancing + controller addon, which makes it easy to set up HTTP load balancers for services in a + cluster. It is enabled by default; set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + istioConfig: + description: |- + . + Structure is documented below. + properties: + auth: + description: The authentication type between services + in Istio. Available options include AUTH_MUTUAL_TLS. + type: string + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + kalmConfig: + description: |- + . + Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + networkPolicyConfig: + description: |- + Whether we should enable the network policy addon + for the master. This must be enabled in order to enable network policy for the nodes. + To enable this, you must also define a network_policy block, + otherwise nothing will happen. + It can only be disabled if the nodes already do not have network policies enabled. + Defaults to disabled; set disabled = false to enable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + rayOperatorConfig: + description: |- + . The status of the Ray Operator + addon. + It is disabled by default. Set enabled = true to enable. The minimum + cluster version to enable Ray is 1.30.0-gke.1747000. + items: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + rayClusterLoggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + rayClusterMonitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + type: array + statefulHaConfig: + description: |- + . + The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + It is disabled by default for Standard clusters. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + allowNetAdmin: + description: |- + Enable NET_ADMIN for the cluster. Defaults to + false. This field should only be enabled for Autopilot clusters (enable_autopilot + set to true). + type: boolean + authenticatorGroupsConfig: + description: |- + Configuration for the + Google Groups for GKE feature. + Structure is documented below. + properties: + securityGroup: + description: The name of the RBAC security group for use with + Google security groups in Kubernetes RBAC. Group name must + be in format gke-security-groups@yourdomain.com. + type: string + type: object + binaryAuthorization: + description: |- + Configuration options for the Binary + Authorization feature. Structure is documented below. + properties: + enabled: + description: (DEPRECATED) Enable Binary Authorization for + this cluster. Deprecated in favor of evaluation_mode. + type: boolean + evaluationMode: + description: |- + Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + and PROJECT_SINGLETON_POLICY_ENFORCE. + type: string + type: object + clusterAutoscaling: + description: |- + Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + automatically adjust the size of the cluster and create/delete node pools based + on the current needs of the cluster's workload. See the + guide to using Node Auto-Provisioning + for more details. Structure is documented below. + properties: + autoProvisioningDefaults: + description: |- + Contains defaults for a node pool created by NAP. A subset of fields also apply to + GKE Autopilot clusters. + Structure is documented below. + properties: + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used + to encrypt the boot disk attached to each node in the + node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with + Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + diskSize: + description: Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults + to 100 + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + management: + description: NodeManagement configuration for this NodePool. + Structure is documented below. + properties: + autoRepair: + description: Specifies whether the node auto-repair + is enabled for the node pool. If enabled, the nodes + in this node pool will be monitored and, if they + fail health checks too many times, an automatic + repair action will be triggered. + type: boolean + autoUpgrade: + description: Specifies whether node auto-upgrade is + enabled for the node pool. If enabled, node auto-upgrade + helps keep the nodes in your node pool up to date + with the latest release version of Kubernetes. + type: boolean + type: object + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity + monitoring enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot + enabled. + type: boolean + type: object + upgradeSettings: + description: Specifies the upgrade settings for NAP created + node pools. Structure is documented below. + properties: + blueGreenSettings: + description: Settings for blue-green upgrade strategy. + To be specified when strategy is set to BLUE_GREEN. + Structure is documented below. + properties: + nodePoolSoakDuration: + description: 'Time needed after draining entire + blue pool. After this period, blue pool will + be cleaned up. A duration in seconds with up + to nine fractional digits, ending with ''s''. + Example: "3.5s".' + type: string + standardRolloutPolicy: + description: green upgrade. To be specified when + strategy is set to BLUE_GREEN. Structure is + documented below. + properties: + batchNodeCount: + description: Number of blue nodes to drain + in a batch. Only one of the batch_percentage + or batch_node_count can be specified. + type: number + batchPercentage: + description: ': Percentage of the bool pool + nodes to drain in a batch. The range of + this field should be (0.0, 1.0). Only one + of the batch_percentage or batch_node_count + can be specified.' + type: number + batchSoakDuration: + description: 'Soak time after each batch gets + drained. A duration in seconds with up to + nine fractional digits, ending with ''s''. + Example: "3.5s".`.' + type: string + type: object + type: object + maxSurge: + description: The maximum number of nodes that can + be created beyond the current size of the node pool + during the upgrade process. To be used when strategy + is set to SURGE. Default is 0. + type: number + maxUnavailable: + description: The maximum number of nodes that can + be simultaneously unavailable during the upgrade + process. To be used when strategy is set to SURGE. + Default is 0. + type: number + strategy: + description: Strategy used for node pool update. Strategy + can only be one of BLUE_GREEN or SURGE. The default + is value is SURGE. + type: string + type: object + type: object + autoProvisioningLocations: + description: |- + The list of Google Compute Engine + zones in which the + NodePool's nodes can be created by NAP. + items: + type: string + type: array + autoscalingProfile: + description: |- + Configuration + options for the Autoscaling profile + feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + type: string + enabled: + description: |- + Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + type: boolean + resourceLimits: + description: |- + Global constraints for machine resources in the + cluster. Configuring the cpu and memory types is required if node + auto-provisioning is enabled. These limits will apply to node pool autoscaling + in addition to node auto-provisioning. Structure is documented below. + items: + properties: + maximum: + description: Maximum amount of the resource in the cluster. + type: number + minimum: + description: Minimum amount of the resource in the cluster. + type: number + resourceType: + description: |- + The type of the resource. For example, cpu and + memory. See the guide to using Node Auto-Provisioning + for a list of types. + type: string + type: object + type: array + type: object + clusterIpv4Cidr: + description: |- + The IP address range of the Kubernetes pods + in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + default a new cluster to routes-based, where ip_allocation_policy is not defined. + type: string + clusterTelemetry: + description: |- + Configuration for + ClusterTelemetry feature, + Structure is documented below. + properties: + type: + description: |- + Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + type: string + type: object + confidentialNodes: + description: Configuration for Confidential Nodes feature. Structure + is documented below documented below. + properties: + enabled: + description: |- + Enable Confidential GKE Nodes for this node pool, to + enforce encryption of data in-use. + type: boolean + type: object + costManagementConfig: + description: |- + Configuration for the + Cost Allocation feature. + Structure is documented below. + properties: + enabled: + description: Whether to enable the cost allocation feature. + type: boolean + type: object + databaseEncryption: + description: Structure is documented below. + properties: + keyName: + description: the key to use to encrypt/decrypt secrets. See + the DatabaseEncryption definition for more information. + type: string + state: + description: ENCRYPTED or DECRYPTED + type: string + type: object + datapathProvider: + description: The desired datapath provider for this cluster. This + is set to LEGACY_DATAPATH by default, which uses the IPTables-based + kube-proxy implementation. Set to ADVANCED_DATAPATH to enable + Dataplane v2. + type: string + defaultMaxPodsPerNode: + description: |- + The default maximum number of pods + per node in this cluster. This doesn't work on "routes-based" clusters, clusters + that don't have IP Aliasing enabled. See the official documentation + for more information. + type: number + defaultSnatStatus: + description: GKE SNAT DefaultSnatStatus contains the desired state + of whether default sNAT should be disabled on the cluster, API + doc. Structure is documented below + properties: + disabled: + description: Whether the cluster disables default in-node + sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus + is disabled.When disabled is set to false, default IP masquerade + rules will be applied to the nodes to prevent sNAT on cluster + internal traffic + type: boolean + type: object + deletionProtection: + type: boolean + description: + description: Description of the cluster. + type: string + dnsConfig: + description: Configuration for Using Cloud DNS for GKE. Structure + is documented below. + properties: + additiveVpcScopeDnsDomain: + description: This will enable Cloud DNS additive VPC scope. + Must provide a domain name that is unique within the VPC. + For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope + = "CLUSTER_SCOPE" must both be set as well. + type: string + clusterDns: + description: Which in-cluster DNS provider should be used. + PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + type: string + clusterDnsDomain: + description: The suffix used for all cluster service records. + type: string + clusterDnsScope: + description: The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED + (default) or CLUSTER_SCOPE or VPC_SCOPE. + type: string + type: object + enableAutopilot: + description: |- + Enable Autopilot for this cluster. Defaults to false. + Note that when this option is enabled, certain features of Standard GKE are not available. + See the official documentation + for available features. + type: boolean + enableCiliumClusterwideNetworkPolicy: + description: Whether CiliumClusterWideNetworkPolicy is enabled + on this cluster. Defaults to false. + type: boolean + enableFqdnNetworkPolicy: + description: Whether FQDN Network Policy is enabled on this cluster. + Users who enable this feature for existing Standard clusters + must restart the GKE Dataplane V2 anetd DaemonSet after enabling + it. See the Enable FQDN Network Policy in an existing cluster + for more information. + type: boolean + enableIntranodeVisibility: + description: Whether Intra-node visibility is enabled for this + cluster. This makes same node pod to pod traffic visible for + VPC network. + type: boolean + enableK8SBetaApis: + description: |- + Configuration for Kubernetes Beta APIs. + Structure is documented below. + properties: + enabledApis: + description: Enabled Kubernetes Beta APIs. To list a Beta + API resource, use the representation {group}/{version}/{resource}. + The version must be a Beta version. Note that you cannot + disable beta APIs that are already enabled on a cluster + without recreating it. See the Configure beta APIs for more + information. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + enableKubernetesAlpha: + description: |- + Whether to enable Kubernetes Alpha features for + this cluster. Note that when this option is enabled, the cluster cannot be upgraded + and will be automatically deleted after 30 days. + type: boolean + enableL4IlbSubsetting: + description: Whether L4ILB Subsetting is enabled for this cluster. + type: boolean + enableLegacyAbac: + description: |- + Whether the ABAC authorizer is enabled for this cluster. + When enabled, identities in the system, including service accounts, nodes, and controllers, + will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + Defaults to false + type: boolean + enableMultiNetworking: + description: Whether multi-networking is enabled for this cluster. + type: boolean + enableShieldedNodes: + description: Enable Shielded Nodes features on all nodes in this + cluster. Defaults to true. + type: boolean + enableTpu: + description: |- + Whether to enable Cloud TPU resources in this cluster. + See the official documentation. + type: boolean + fleet: + description: Fleet configuration for the cluster. Structure is + documented below. + properties: + project: + description: The name of the Fleet host project where this + cluster will be registered. + type: string + type: object + gatewayApiConfig: + description: Configuration for GKE Gateway API controller. Structure + is documented below. + properties: + channel: + description: Which Gateway Api channel should be used. CHANNEL_DISABLED, + CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + type: string + type: object + identityServiceConfig: + description: . Structure is documented below. + properties: + enabled: + description: Whether to enable the Identity Service component. + It is disabled by default. Set enabled=true to enable. + type: boolean + type: object + initialNodeCount: + description: |- + The number of nodes to create in this + cluster's default node pool. In regional or multi-zonal clusters, this is the + number of nodes per zone. Must be set if node_pool is not set. If you're using + google_container_node_pool objects with no default node pool, you'll need to + set this to a value of at least 1, alongside setting + remove_default_node_pool to true. + type: number + ipAllocationPolicy: + description: |- + Configuration of cluster IP allocation for + VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + Structure is documented below. + properties: + additionalPodRangesConfig: + description: |- + The configuration for additional pod secondary ranges at + the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + properties: + podRangeNames: + description: The names of the Pod ranges to add to the + cluster. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + clusterIpv4CidrBlock: + description: |- + The IP address range for the cluster pod IPs. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + clusterSecondaryRangeName: + description: |- + The name of the existing secondary + range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + type: string + podCidrOverprovisionConfig: + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + servicesIpv4CidrBlock: + description: |- + The IP address range of the services IPs in this cluster. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + servicesSecondaryRangeName: + description: |- + The name of the existing + secondary range in the cluster's subnetwork to use for service ClusterIPs. + Alternatively, services_ipv4_cidr_block can be used to automatically create a + GKE-managed one. + type: string + stackType: + description: |- + The IP Stack Type of the cluster. + Default value is IPV4. + Possible values are IPV4 and IPV4_IPV6. + type: string + type: object + location: + description: |- + The location (region or zone) in which the cluster + master will be created, as well as the default node location. If you specify a + zone (such as us-central1-a), the cluster will be a zonal cluster with a + single cluster master. If you specify a region (such as us-west1), the + cluster will be a regional cluster with multiple masters spread across zones in + the region, and with default node locations in those zones as well + type: string + loggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enableComponents: + description: |- + The GKE components exposing logs. Supported values include: + SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + items: + type: string + type: array + type: object + loggingService: + description: |- + The logging service that the cluster should + write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + type: string + maintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + dailyMaintenanceWindow: + description: structure documented below. + properties: + startTime: + type: string + type: object + maintenanceExclusion: + description: structure documented below + items: + properties: + endTime: + type: string + exclusionName: + description: |- + The name of the cluster, unique within the project and + location. + type: string + exclusionOptions: + description: MaintenanceExclusionOptions provides maintenance + exclusion related options. + properties: + scope: + description: 'The scope of automatic upgrades to + restrict in the exclusion window. One of: NO_UPGRADES + | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES' + type: string + type: object + startTime: + type: string + type: object + type: array + recurringWindow: + description: structure documented below + properties: + endTime: + type: string + recurrence: + type: string + startTime: + type: string + type: object + type: object + masterAuth: + description: |- + The authentication information for accessing the + Kubernetes master. Some values in this block are only returned by the API if + your service account has permission to get credentials for your GKE cluster. If + you see an unexpected diff unsetting your client cert, ensure you have the + container.clusters.getCredentials permission. + Structure is documented below. + properties: + clientCertificateConfig: + description: 'Whether client certificate authorization is + enabled for this cluster. For example:' + properties: + issueClientCertificate: + type: boolean + type: object + type: object + masterAuthorizedNetworksConfig: + description: |- + The desired + configuration options for master authorized networks. Omit the + nested cidr_blocks attribute to disallow external access (except + the cluster node IPs, which GKE automatically whitelists). + Structure is documented below. + properties: + cidrBlocks: + description: |- + External networks that can access the + Kubernetes cluster master through HTTPS. + items: + properties: + cidrBlock: + description: |- + External network that can access Kubernetes master through HTTPS. + Must be specified in CIDR notation. + type: string + displayName: + description: Field for users to identify CIDR blocks. + type: string + type: object + type: array + gcpPublicCidrsAccessEnabled: + description: |- + Whether Kubernetes master is + accessible via Google Compute Engine Public IPs. + type: boolean + type: object + meshCertificates: + description: Structure is documented below. + properties: + enableCertificates: + description: Controls the issuance of workload mTLS certificates. + It is enabled by default. Workload Identity is required, + see workload_config. + type: boolean + type: object + minMasterVersion: + description: |- + The minimum version of the master. GKE + will auto-update the master to new versions, so this does not guarantee the + current master version--use the read-only master_version field to obtain that. + If unset, the cluster's version will be set by GKE to the version of the most recent + official release (which is not necessarily the latest version). If you intend to specify versions manually, + the docs + describe the various acceptable formats for this field. + type: string + monitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + advancedDatapathObservabilityConfig: + description: Configuration for Advanced Datapath Monitoring. + Structure is documented below. + properties: + enableMetrics: + description: Whether or not to enable advanced datapath + metrics. + type: boolean + enableRelay: + description: Whether or not Relay is enabled. + type: boolean + type: object + enableComponents: + description: 'The GKE components exposing metrics. Supported + values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, + CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, + STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, + WORKLOADS is supported on top of those 12 values. (WORKLOADS + is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR + are only supported in GKE 1.29.3-gke.1093000 and above.' + items: + type: string + type: array + managedPrometheus: + description: Configuration for Managed Service for Prometheus. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + monitoringService: + description: |- + The monitoring service that the cluster + should write metrics to. + Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + VM metrics will be collected by Google Compute Engine regardless of this setting + Available options include + monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + Defaults to monitoring.googleapis.com/kubernetes + type: string + network: + description: |- + The name or self_link of the Google Compute Engine + network to which the cluster is connected. For Shared VPC, set this to the self link of the + shared network. + type: string + networkPolicy: + description: |- + Configuration options for the + NetworkPolicy + feature. Structure is documented below. + properties: + enabled: + description: Whether network policy is enabled on the cluster. + type: boolean + provider: + description: The selected network policy provider. Defaults + to PROVIDER_UNSPECIFIED. + type: string + type: object + networkingMode: + description: |- + Determines whether alias IPs or routes will be used for pod IPs in the cluster. + Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + type: string + nodeConfig: + description: Parameters used in creating the default node pool. + Structure is documented below. + properties: + advancedMachineFeatures: + description: |- + Specifies options for controlling + advanced machine features. Structure is documented below. + properties: + enableNestedVirtualization: + description: Defines whether the instance should have + nested virtualization enabled. Defaults to false. + type: boolean + threadsPerCore: + description: The number of threads per physical core. + To disable simultaneous multithreading (SMT) set this + to 1. If unset, the maximum number of threads supported + per core by the underlying processor is assumed. + type: number + type: object + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used to + encrypt the boot disk attached to each node in the node + pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with Cloud + KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + confidentialNodes: + description: Configuration for Confidential Nodes feature. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + containerdConfig: + description: Parameters to customize containerd runtime. Structure + is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container registries. + There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for CA + and domains. Each object identifies a certificate + and its assigned domains. See how to configure for + private container registries for more detail. Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + diskSizeGb: + description: |- + Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + enableConfidentialStorage: + description: Enabling Confidential Storage will create boot + disk with confidential mode. It is disabled by default. + type: boolean + ephemeralStorageConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + ephemeralStorageLocalSsdConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + fastSocket: + description: |- + Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + Node Pool must enable gvnic. + GKE version 1.25.2-gke.1700 or later. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcfsConfig: + description: |- + Parameters for the Google Container Filesystem (GCFS). + If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + A machine_type that has more than 16 GiB of memory is also recommended. + GCFS must be enabled in order to use image streaming. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + guestAccelerator: + description: |- + List of the type and count of accelerator cards attached to the instance. + Structure documented below.12 this field is an + Attribute as Block + items: + properties: + count: + description: The number of the guest accelerator cards + exposed to this instance. + type: number + gpuDriverInstallationConfig: + description: Configuration for auto installation of + GPU driver. Structure is documented below. + properties: + gpuDriverVersion: + description: |- + Mode for how the GPU driver is installed. + Accepted values are: + type: string + type: object + gpuPartitionSize: + description: Size of partitions to create on the GPU. + Valid values are described in the NVIDIA mig user + guide. + type: string + gpuSharingConfig: + description: Configuration for GPU sharing. Structure + is documented below. + properties: + gpuSharingStrategy: + description: |- + The type of GPU sharing strategy to enable on the GPU node. + Accepted values are: + type: string + maxSharedClientsPerGpu: + description: The maximum number of containers that + can share a GPU. + type: number + type: object + type: + description: The accelerator type resource to expose + to this instance. E.g. nvidia-tesla-k80. + type: string + type: object + type: array + gvnic: + description: |- + Google Virtual NIC (gVNIC) is a virtual network interface. + Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + GKE node version 1.15.11-gke.15 or later + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + hostMaintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + maintenanceInterval: + type: string + type: object + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + kubeletConfig: + description: |- + Kubelet configuration, currently supported attributes can be found here. + Structure is documented below. + properties: + cpuCfsQuota: + description: |- + If true, enables CPU CFS quota enforcement for + containers that specify CPU limits. + type: boolean + cpuCfsQuotaPeriod: + description: |- + The CPU CFS quota period value. Specified + as a sequence of decimal numbers, each with optional fraction and a unit suffix, + such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + "h". The value must be a positive duration. + type: string + cpuManagerPolicy: + description: |- + The CPU management policy on the node. See + K8S CPU Management Policies. + One of "none" or "static". Defaults to none when kubelet_config is unset. + type: string + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + podPidsLimit: + description: Controls the maximum number of processes + allowed to run in a pod. The value must be greater than + or equal to 1024 and less than 4194304. + type: number + type: object + labels: + additionalProperties: + type: string + description: |- + The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + reserved by Kubernetes Core components and cannot be specified. + type: object + x-kubernetes-map-type: granular + linuxNodeConfig: + description: Parameters that can be configured on Linux nodes. + Structure is documented below. + properties: + cgroupMode: + description: |- + Possible cgroup modes that can be used. + Accepted values are: + type: string + sysctls: + additionalProperties: + type: string + description: |- + The Linux kernel parameters to be applied to the nodes + and all pods running on the nodes. Specified as a map from the key, such as + net.core.wmem_max, to a string value. Currently supported attributes can be found here. + Note that validations happen all server side. All attributes are optional. + type: object + x-kubernetes-map-type: granular + type: object + localNvmeSsdBlockConfig: + description: Parameters for the local NVMe SSDs. Structure + is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + loggingVariant: + description: wide default value. Valid values include DEFAULT + and MAX_THROUGHPUT. See Increasing logging agent throughput + for more information. + type: string + machineType: + description: |- + The name of a Google Compute Engine machine type. + Defaults to e2-medium. To create a custom machine type, value should be set as specified + here. + type: string + metadata: + additionalProperties: + type: string + description: |- + The metadata key/value pairs assigned to instances in + the cluster. From GKE 1. To avoid this, set the + value in your config. + type: object + x-kubernetes-map-type: granular + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + nodeGroup: + description: Setting this field will assign instances of this + pool to run on the specified node group. This is useful + for running workloads on sole tenant nodes. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + x-kubernetes-list-type: set + preemptible: + description: |- + A boolean that represents whether or not the underlying node VMs + are preemptible. See the official documentation + for more information. Defaults to false. + type: boolean + reservationAffinity: + description: The configuration of the desired reservation + which instances could take capacity from. Structure is documented + below. + properties: + consumeReservationType: + description: |- + The type of reservation consumption + Accepted values are: + type: string + key: + description: Key for taint. + type: string + values: + description: name" + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + resourceLabels: + additionalProperties: + type: string + description: |- + The GCP labels (key/value pairs) to be applied to each node. Refer here + for how these labels are applied to clusters, node pools and nodes. + type: object + x-kubernetes-map-type: granular + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + sandboxConfig: + description: |- + GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + Structure is documented below. + properties: + sandboxType: + description: |- + Which sandbox to use for pods in the node pool. + Accepted values are: + type: string + type: object + secondaryBootDisks: + description: Parameters for secondary boot disks to preload + container images and data on new nodes. Structure is documented + below. gcfs_config must be enabled=true for this feature + to work. min_master_version must also be set to use GKE + 1.28.3-gke.106700 or later versions. + items: + properties: + diskImage: + description: Path to disk image to create the secondary + boot disk from. After using the gke-disk-image-builder, + this argument should be global/images/DISK_IMAGE_NAME. + type: string + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity monitoring + enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot enabled. + type: boolean + type: object + soleTenantConfig: + description: Allows specifying multiple node affinities useful + for running workloads on sole tenant nodes. node_affinity + structure is documented below. + properties: + nodeAffinity: + items: + properties: + key: + description: Key for taint. + type: string + operator: + description: Specifies affinity or anti-affinity. + Accepted values are "IN" or "NOT_IN" + type: string + values: + description: name" + items: + type: string + type: array + type: object + type: array + type: object + spot: + description: |- + A boolean that represents whether the underlying node VMs are spot. + See the official documentation + for more information. Defaults to false. + type: boolean + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + taint: + description: |- + A list of + Kubernetes taints + to apply to nodes. Structure is documented below. + items: + properties: + effect: + description: Effect for taint. Accepted values are NO_SCHEDULE, + PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + workloadMetadataConfig: + description: |- + Metadata configuration to expose to workloads on the node pool. + Structure is documented below. + properties: + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: object + nodeLocations: + description: |- + The list of zones in which the cluster's nodes + are located. Nodes must be in the region of their regional cluster or in the + same region as their cluster's zone for zonal clusters. If this is specified for + a zonal cluster, omit the cluster's zone. + items: + type: string + type: array + x-kubernetes-list-type: set + nodePoolAutoConfig: + description: |- + Node pool configs that apply to auto-provisioned node pools in + autopilot clusters and + node auto-provisioning-enabled clusters. Structure is documented below. + properties: + networkTags: + description: The network tag config for the cluster's automatically + provisioned node pools. Structure is documented below. + properties: + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + type: object + nodeKubeletConfig: + description: |- + Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + Structure is documented below. + properties: + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + type: object + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + type: object + nodePoolDefaults: + description: Default NodePool settings for the entire cluster. + These settings are overridden if specified on the specific NodePool + object. Structure is documented below. + properties: + nodeConfigDefaults: + description: Subset of NodeConfig message that has defaults. + properties: + containerdConfig: + description: Parameters to customize containerd runtime. + Structure is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container + registries. There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for + CA and domains. Each object identifies a certificate + and its assigned domains. See how to configure + for private container registries for more detail. + Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + gcfsConfig: + description: The default Google Container Filesystem (GCFS) + configuration at the cluster level. e.g. enable image + streaming across all the node pools within the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + insecureKubeletReadonlyPortEnabled: + description: 'only port is enabled for newly created node + pools in the cluster. It is strongly recommended to + set this to FALSE. Possible values: TRUE, FALSE.' + type: string + loggingVariant: + description: The type of logging agent that is deployed + by default for newly created node pools in the cluster. + Valid values include DEFAULT and MAX_THROUGHPUT. See + Increasing logging agent throughput for more information. + type: string + type: object + type: object + nodeVersion: + description: |- + The Kubernetes version on the nodes. Must either be unset + or set to the same value as min_master_version on create. Defaults to the default + version set by GKE which is not necessarily the latest version. This only affects + nodes in the default node pool. + To update nodes in other node pools, use the version attribute on the node pool. + type: string + notificationConfig: + description: Configuration for the cluster upgrade notifications + feature. Structure is documented below. + properties: + pubsub: + description: The pubsub config for the cluster's upgrade notifications. + properties: + enabled: + description: Whether or not the notification config is + enabled + type: boolean + filter: + description: Choose what type of notifications you want + to receive. If no filters are applied, you'll receive + all notification types. Structure is documented below. + properties: + eventType: + description: Can be used to filter what notifications + are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, + UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering + notifications for more details. + items: + type: string + type: array + type: object + topic: + description: 'The pubsub topic to push upgrade notifications + to. Must be in the same project as the cluster. Must + be in the format: projects/{project}/topics/{topic}.' + type: string + type: object + type: object + podSecurityPolicyConfig: + description: |- + Configuration for the + PodSecurityPolicy feature. + Structure is documented below. + properties: + enabled: + description: |- + Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + type: boolean + type: object + privateClusterConfig: + description: |- + Configuration for private clusters, + clusters with private nodes. Structure is documented below. + properties: + enablePrivateEndpoint: + description: |- + When true, the cluster's private + endpoint is used as the cluster endpoint and access through the public endpoint + is disabled. When false, either endpoint can be used. This field only applies + to private clusters, when enable_private_nodes is true. + type: boolean + enablePrivateNodes: + description: |- + Enables the private cluster feature, + creating a private endpoint on the cluster. In a private cluster, nodes only + have RFC 1918 private addresses and communicate with the master's private + endpoint via private networking. + type: boolean + masterGlobalAccessConfig: + description: |- + Controls cluster master global + access settings. Structure is documented below. + properties: + enabled: + description: |- + Whether the cluster master is accessible globally or + not. + type: boolean + type: object + masterIpv4CidrBlock: + description: |- + The IP range in CIDR notation to use for + the hosted master network. This range will be used for assigning private IP + addresses to the cluster master(s) and the ILB VIP. This range must not overlap + with any other ranges in use within the cluster's network, and it must be a /28 + subnet. See Private Cluster Limitations + for more details. This field only applies to private clusters, when + enable_private_nodes is true. + type: string + privateEndpointSubnetwork: + description: Subnetwork in cluster's network where master's + endpoint will be provisioned. + type: string + type: object + privateIpv6GoogleAccess: + description: The desired state of IPv6 connectivity to Google + Services. By default, no private IPv6 access to or from Google + Services (all access will be via IPv4). + type: string + project: + description: |- + The ID of the project in which the resource belongs. If it + is not provided, the provider project is used. + type: string + protectConfig: + description: Enable/Disable Protect API features for the cluster. + Structure is documented below. + properties: + workloadConfig: + description: WorkloadConfig defines which actions are enabled + for a cluster's workload configurations. Structure is documented + below + properties: + auditMode: + description: Sets which mode of auditing should be used + for the cluster's workloads. Accepted values are DISABLED, + BASIC. + type: string + type: object + workloadVulnerabilityMode: + description: Sets which mode to use for Protect workload vulnerability + scanning feature. Accepted values are DISABLED, BASIC. + type: string + type: object + releaseChannel: + description: |- + Configuration options for the Release channel + feature, which provide more control over automatic upgrades of your GKE clusters. + When updating this field, GKE imposes specific version requirements. See + Selecting a new release channel + for more details; the google_container_engine_versions datasource can provide + the default version for a channel. Instead, use the "UNSPECIFIED" + channel. Structure is documented below. + properties: + channel: + description: |- + The selected release channel. + Accepted values are: + type: string + type: object + removeDefaultNodePool: + description: |- + If true, deletes the default node + pool upon cluster creation. If you're using google_container_node_pool + resources with no default node pool, this should be set to true, alongside + setting initial_node_count to at least 1. + type: boolean + resourceLabels: + additionalProperties: + type: string + description: The GCE resource labels (a map of key/value pairs) + to be applied to the cluster. + type: object + x-kubernetes-map-type: granular + resourceUsageExportConfig: + description: |- + Configuration for the + ResourceUsageExportConfig feature. + Structure is documented below. + properties: + bigqueryDestination: + description: Parameters for using BigQuery as the destination + of resource usage export. + properties: + datasetId: + description: 'The ID of a BigQuery Dataset. For Example:' + type: string + type: object + enableNetworkEgressMetering: + description: |- + Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + in the cluster to meter network egress traffic. + type: boolean + enableResourceConsumptionMetering: + description: |- + Whether to enable resource + consumption metering on this cluster. When enabled, a table will be created in + the resource export BigQuery dataset to store resource consumption data. The + resulting table can be joined with the resource usage table or with BigQuery + billing export. Defaults to true. + type: boolean + type: object + secretManagerConfig: + description: |- + Configuration for the + SecretManagerConfig feature. + Structure is documented below. + properties: + enabled: + description: Enable the Secret Manager add-on for this cluster. + type: boolean + type: object + securityPostureConfig: + description: Enable/Disable Security Posture API features for + the cluster. Structure is documented below. + properties: + mode: + description: Sets the mode of the Kubernetes security posture + API's off-cluster features. Available options include DISABLED, + BASIC, and ENTERPRISE. + type: string + vulnerabilityMode: + description: Sets the mode of the Kubernetes security posture + API's workload vulnerability scanning. Available options + include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and + VULNERABILITY_ENTERPRISE. + type: string + type: object + serviceExternalIpsConfig: + description: Structure is documented below. + properties: + enabled: + description: Controls whether external ips specified by a + service will be allowed. It is enabled by default. + type: boolean + type: object + subnetwork: + description: |- + The name or self_link of the Google Compute Engine + subnetwork in which the cluster's instances are launched. + type: string + tpuConfig: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + useServiceNetworking: + type: boolean + type: object + verticalPodAutoscaling: + description: |- + Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + workloadAltsConfig: + description: Configuration for direct-path (via ALTS) with workload + identity.. Structure is documented below. + properties: + enableAlts: + description: Whether the alts handshaker should be enabled + or not for direct-path. Requires Workload Identity (workloadPool + must be non-empty). + type: boolean + type: object + workloadIdentityConfig: + description: |- + Workload Identity allows Kubernetes service accounts to act as a user-managed + Google IAM Service Account. + Structure is documented below. + properties: + workloadPool: + description: The workload pool to attach all Kubernetes service + accounts to. + type: string + type: object + required: + - location + type: object + initProvider: + description: |- + THIS IS A BETA FIELD. It will be honored + unless the Management Policies feature flag is disabled. + InitProvider holds the same fields as ForProvider, with the exception + of Identifier and other resource reference fields. The fields that are + in InitProvider are merged into ForProvider when the resource is created. + The same fields are also added to the terraform ignore_changes hook, to + avoid updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, like an + autoscaler. + properties: + addonsConfig: + description: |- + The configuration for addons supported by GKE. + Structure is documented below. + properties: + cloudrunConfig: + description: . Structure is documented below. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + loadBalancerType: + description: |- + The load balancer type of CloudRun ingress service. It is external load balancer by default. + Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + type: string + type: object + configConnectorConfig: + description: |- + . + The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + dnsCacheConfig: + description: |- + . + The status of the NodeLocal DNSCache addon. It is disabled by default. + Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcePersistentDiskCsiDriverConfig: + description: |- + . + Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcpFilestoreCsiDriverConfig: + description: |- + The status of the Filestore CSI driver addon, + which allows the usage of filestore instance as volumes. + It is disabled by default; set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcsFuseCsiDriverConfig: + description: |- + The status of the GCSFuse CSI driver addon, + which allows the usage of a gcs bucket as volumes. + It is disabled by default for Standard clusters; set enabled = true to enable. + It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + See Enable the Cloud Storage FUSE CSI driver for more information. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gkeBackupAgentConfig: + description: |- + . + The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + horizontalPodAutoscaling: + description: |- + The status of the Horizontal Pod Autoscaling + addon, which increases or decreases the number of replica pods a replication controller + has based on the resource usage of the existing pods. + It is enabled by default; + set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + httpLoadBalancing: + description: |- + The status of the HTTP (L7) load balancing + controller addon, which makes it easy to set up HTTP load balancers for services in a + cluster. It is enabled by default; set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + istioConfig: + description: |- + . + Structure is documented below. + properties: + auth: + description: The authentication type between services + in Istio. Available options include AUTH_MUTUAL_TLS. + type: string + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + kalmConfig: + description: |- + . + Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + networkPolicyConfig: + description: |- + Whether we should enable the network policy addon + for the master. This must be enabled in order to enable network policy for the nodes. + To enable this, you must also define a network_policy block, + otherwise nothing will happen. + It can only be disabled if the nodes already do not have network policies enabled. + Defaults to disabled; set disabled = false to enable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + rayOperatorConfig: + description: |- + . The status of the Ray Operator + addon. + It is disabled by default. Set enabled = true to enable. The minimum + cluster version to enable Ray is 1.30.0-gke.1747000. + items: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + rayClusterLoggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + rayClusterMonitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + type: array + statefulHaConfig: + description: |- + . + The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + It is disabled by default for Standard clusters. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + allowNetAdmin: + description: |- + Enable NET_ADMIN for the cluster. Defaults to + false. This field should only be enabled for Autopilot clusters (enable_autopilot + set to true). + type: boolean + authenticatorGroupsConfig: + description: |- + Configuration for the + Google Groups for GKE feature. + Structure is documented below. + properties: + securityGroup: + description: The name of the RBAC security group for use with + Google security groups in Kubernetes RBAC. Group name must + be in format gke-security-groups@yourdomain.com. + type: string + type: object + binaryAuthorization: + description: |- + Configuration options for the Binary + Authorization feature. Structure is documented below. + properties: + enabled: + description: (DEPRECATED) Enable Binary Authorization for + this cluster. Deprecated in favor of evaluation_mode. + type: boolean + evaluationMode: + description: |- + Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + and PROJECT_SINGLETON_POLICY_ENFORCE. + type: string + type: object + clusterAutoscaling: + description: |- + Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + automatically adjust the size of the cluster and create/delete node pools based + on the current needs of the cluster's workload. See the + guide to using Node Auto-Provisioning + for more details. Structure is documented below. + properties: + autoProvisioningDefaults: + description: |- + Contains defaults for a node pool created by NAP. A subset of fields also apply to + GKE Autopilot clusters. + Structure is documented below. + properties: + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used + to encrypt the boot disk attached to each node in the + node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with + Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + diskSize: + description: Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults + to 100 + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + management: + description: NodeManagement configuration for this NodePool. + Structure is documented below. + properties: + autoRepair: + description: Specifies whether the node auto-repair + is enabled for the node pool. If enabled, the nodes + in this node pool will be monitored and, if they + fail health checks too many times, an automatic + repair action will be triggered. + type: boolean + autoUpgrade: + description: Specifies whether node auto-upgrade is + enabled for the node pool. If enabled, node auto-upgrade + helps keep the nodes in your node pool up to date + with the latest release version of Kubernetes. + type: boolean + type: object + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity + monitoring enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot + enabled. + type: boolean + type: object + upgradeSettings: + description: Specifies the upgrade settings for NAP created + node pools. Structure is documented below. + properties: + blueGreenSettings: + description: Settings for blue-green upgrade strategy. + To be specified when strategy is set to BLUE_GREEN. + Structure is documented below. + properties: + nodePoolSoakDuration: + description: 'Time needed after draining entire + blue pool. After this period, blue pool will + be cleaned up. A duration in seconds with up + to nine fractional digits, ending with ''s''. + Example: "3.5s".' + type: string + standardRolloutPolicy: + description: green upgrade. To be specified when + strategy is set to BLUE_GREEN. Structure is + documented below. + properties: + batchNodeCount: + description: Number of blue nodes to drain + in a batch. Only one of the batch_percentage + or batch_node_count can be specified. + type: number + batchPercentage: + description: ': Percentage of the bool pool + nodes to drain in a batch. The range of + this field should be (0.0, 1.0). Only one + of the batch_percentage or batch_node_count + can be specified.' + type: number + batchSoakDuration: + description: 'Soak time after each batch gets + drained. A duration in seconds with up to + nine fractional digits, ending with ''s''. + Example: "3.5s".`.' + type: string + type: object + type: object + maxSurge: + description: The maximum number of nodes that can + be created beyond the current size of the node pool + during the upgrade process. To be used when strategy + is set to SURGE. Default is 0. + type: number + maxUnavailable: + description: The maximum number of nodes that can + be simultaneously unavailable during the upgrade + process. To be used when strategy is set to SURGE. + Default is 0. + type: number + strategy: + description: Strategy used for node pool update. Strategy + can only be one of BLUE_GREEN or SURGE. The default + is value is SURGE. + type: string + type: object + type: object + autoProvisioningLocations: + description: |- + The list of Google Compute Engine + zones in which the + NodePool's nodes can be created by NAP. + items: + type: string + type: array + autoscalingProfile: + description: |- + Configuration + options for the Autoscaling profile + feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + type: string + enabled: + description: |- + Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + type: boolean + resourceLimits: + description: |- + Global constraints for machine resources in the + cluster. Configuring the cpu and memory types is required if node + auto-provisioning is enabled. These limits will apply to node pool autoscaling + in addition to node auto-provisioning. Structure is documented below. + items: + properties: + maximum: + description: Maximum amount of the resource in the cluster. + type: number + minimum: + description: Minimum amount of the resource in the cluster. + type: number + resourceType: + description: |- + The type of the resource. For example, cpu and + memory. See the guide to using Node Auto-Provisioning + for a list of types. + type: string + type: object + type: array + type: object + clusterIpv4Cidr: + description: |- + The IP address range of the Kubernetes pods + in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + default a new cluster to routes-based, where ip_allocation_policy is not defined. + type: string + clusterTelemetry: + description: |- + Configuration for + ClusterTelemetry feature, + Structure is documented below. + properties: + type: + description: |- + Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + type: string + type: object + confidentialNodes: + description: Configuration for Confidential Nodes feature. Structure + is documented below documented below. + properties: + enabled: + description: |- + Enable Confidential GKE Nodes for this node pool, to + enforce encryption of data in-use. + type: boolean + type: object + costManagementConfig: + description: |- + Configuration for the + Cost Allocation feature. + Structure is documented below. + properties: + enabled: + description: Whether to enable the cost allocation feature. + type: boolean + type: object + databaseEncryption: + description: Structure is documented below. + properties: + keyName: + description: the key to use to encrypt/decrypt secrets. See + the DatabaseEncryption definition for more information. + type: string + state: + description: ENCRYPTED or DECRYPTED + type: string + type: object + datapathProvider: + description: The desired datapath provider for this cluster. This + is set to LEGACY_DATAPATH by default, which uses the IPTables-based + kube-proxy implementation. Set to ADVANCED_DATAPATH to enable + Dataplane v2. + type: string + defaultMaxPodsPerNode: + description: |- + The default maximum number of pods + per node in this cluster. This doesn't work on "routes-based" clusters, clusters + that don't have IP Aliasing enabled. See the official documentation + for more information. + type: number + defaultSnatStatus: + description: GKE SNAT DefaultSnatStatus contains the desired state + of whether default sNAT should be disabled on the cluster, API + doc. Structure is documented below + properties: + disabled: + description: Whether the cluster disables default in-node + sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus + is disabled.When disabled is set to false, default IP masquerade + rules will be applied to the nodes to prevent sNAT on cluster + internal traffic + type: boolean + type: object + deletionProtection: + type: boolean + description: + description: Description of the cluster. + type: string + dnsConfig: + description: Configuration for Using Cloud DNS for GKE. Structure + is documented below. + properties: + additiveVpcScopeDnsDomain: + description: This will enable Cloud DNS additive VPC scope. + Must provide a domain name that is unique within the VPC. + For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope + = "CLUSTER_SCOPE" must both be set as well. + type: string + clusterDns: + description: Which in-cluster DNS provider should be used. + PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + type: string + clusterDnsDomain: + description: The suffix used for all cluster service records. + type: string + clusterDnsScope: + description: The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED + (default) or CLUSTER_SCOPE or VPC_SCOPE. + type: string + type: object + enableAutopilot: + description: |- + Enable Autopilot for this cluster. Defaults to false. + Note that when this option is enabled, certain features of Standard GKE are not available. + See the official documentation + for available features. + type: boolean + enableCiliumClusterwideNetworkPolicy: + description: Whether CiliumClusterWideNetworkPolicy is enabled + on this cluster. Defaults to false. + type: boolean + enableFqdnNetworkPolicy: + description: Whether FQDN Network Policy is enabled on this cluster. + Users who enable this feature for existing Standard clusters + must restart the GKE Dataplane V2 anetd DaemonSet after enabling + it. See the Enable FQDN Network Policy in an existing cluster + for more information. + type: boolean + enableIntranodeVisibility: + description: Whether Intra-node visibility is enabled for this + cluster. This makes same node pod to pod traffic visible for + VPC network. + type: boolean + enableK8SBetaApis: + description: |- + Configuration for Kubernetes Beta APIs. + Structure is documented below. + properties: + enabledApis: + description: Enabled Kubernetes Beta APIs. To list a Beta + API resource, use the representation {group}/{version}/{resource}. + The version must be a Beta version. Note that you cannot + disable beta APIs that are already enabled on a cluster + without recreating it. See the Configure beta APIs for more + information. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + enableKubernetesAlpha: + description: |- + Whether to enable Kubernetes Alpha features for + this cluster. Note that when this option is enabled, the cluster cannot be upgraded + and will be automatically deleted after 30 days. + type: boolean + enableL4IlbSubsetting: + description: Whether L4ILB Subsetting is enabled for this cluster. + type: boolean + enableLegacyAbac: + description: |- + Whether the ABAC authorizer is enabled for this cluster. + When enabled, identities in the system, including service accounts, nodes, and controllers, + will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + Defaults to false + type: boolean + enableMultiNetworking: + description: Whether multi-networking is enabled for this cluster. + type: boolean + enableShieldedNodes: + description: Enable Shielded Nodes features on all nodes in this + cluster. Defaults to true. + type: boolean + enableTpu: + description: |- + Whether to enable Cloud TPU resources in this cluster. + See the official documentation. + type: boolean + fleet: + description: Fleet configuration for the cluster. Structure is + documented below. + properties: + project: + description: The name of the Fleet host project where this + cluster will be registered. + type: string + type: object + gatewayApiConfig: + description: Configuration for GKE Gateway API controller. Structure + is documented below. + properties: + channel: + description: Which Gateway Api channel should be used. CHANNEL_DISABLED, + CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + type: string + type: object + identityServiceConfig: + description: . Structure is documented below. + properties: + enabled: + description: Whether to enable the Identity Service component. + It is disabled by default. Set enabled=true to enable. + type: boolean + type: object + initialNodeCount: + description: |- + The number of nodes to create in this + cluster's default node pool. In regional or multi-zonal clusters, this is the + number of nodes per zone. Must be set if node_pool is not set. If you're using + google_container_node_pool objects with no default node pool, you'll need to + set this to a value of at least 1, alongside setting + remove_default_node_pool to true. + type: number + ipAllocationPolicy: + description: |- + Configuration of cluster IP allocation for + VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + Structure is documented below. + properties: + additionalPodRangesConfig: + description: |- + The configuration for additional pod secondary ranges at + the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + properties: + podRangeNames: + description: The names of the Pod ranges to add to the + cluster. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + clusterIpv4CidrBlock: + description: |- + The IP address range for the cluster pod IPs. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + clusterSecondaryRangeName: + description: |- + The name of the existing secondary + range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + type: string + podCidrOverprovisionConfig: + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + servicesIpv4CidrBlock: + description: |- + The IP address range of the services IPs in this cluster. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + servicesSecondaryRangeName: + description: |- + The name of the existing + secondary range in the cluster's subnetwork to use for service ClusterIPs. + Alternatively, services_ipv4_cidr_block can be used to automatically create a + GKE-managed one. + type: string + stackType: + description: |- + The IP Stack Type of the cluster. + Default value is IPV4. + Possible values are IPV4 and IPV4_IPV6. + type: string + type: object + loggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enableComponents: + description: |- + The GKE components exposing logs. Supported values include: + SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + items: + type: string + type: array + type: object + loggingService: + description: |- + The logging service that the cluster should + write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + type: string + maintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + dailyMaintenanceWindow: + description: structure documented below. + properties: + startTime: + type: string + type: object + maintenanceExclusion: + description: structure documented below + items: + properties: + endTime: + type: string + exclusionName: + description: |- + The name of the cluster, unique within the project and + location. + type: string + exclusionOptions: + description: MaintenanceExclusionOptions provides maintenance + exclusion related options. + properties: + scope: + description: 'The scope of automatic upgrades to + restrict in the exclusion window. One of: NO_UPGRADES + | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES' + type: string + type: object + startTime: + type: string + type: object + type: array + recurringWindow: + description: structure documented below + properties: + endTime: + type: string + recurrence: + type: string + startTime: + type: string + type: object + type: object + masterAuth: + description: |- + The authentication information for accessing the + Kubernetes master. Some values in this block are only returned by the API if + your service account has permission to get credentials for your GKE cluster. If + you see an unexpected diff unsetting your client cert, ensure you have the + container.clusters.getCredentials permission. + Structure is documented below. + properties: + clientCertificateConfig: + description: 'Whether client certificate authorization is + enabled for this cluster. For example:' + properties: + issueClientCertificate: + type: boolean + type: object + type: object + masterAuthorizedNetworksConfig: + description: |- + The desired + configuration options for master authorized networks. Omit the + nested cidr_blocks attribute to disallow external access (except + the cluster node IPs, which GKE automatically whitelists). + Structure is documented below. + properties: + cidrBlocks: + description: |- + External networks that can access the + Kubernetes cluster master through HTTPS. + items: + properties: + cidrBlock: + description: |- + External network that can access Kubernetes master through HTTPS. + Must be specified in CIDR notation. + type: string + displayName: + description: Field for users to identify CIDR blocks. + type: string + type: object + type: array + gcpPublicCidrsAccessEnabled: + description: |- + Whether Kubernetes master is + accessible via Google Compute Engine Public IPs. + type: boolean + type: object + meshCertificates: + description: Structure is documented below. + properties: + enableCertificates: + description: Controls the issuance of workload mTLS certificates. + It is enabled by default. Workload Identity is required, + see workload_config. + type: boolean + type: object + minMasterVersion: + description: |- + The minimum version of the master. GKE + will auto-update the master to new versions, so this does not guarantee the + current master version--use the read-only master_version field to obtain that. + If unset, the cluster's version will be set by GKE to the version of the most recent + official release (which is not necessarily the latest version). If you intend to specify versions manually, + the docs + describe the various acceptable formats for this field. + type: string + monitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + advancedDatapathObservabilityConfig: + description: Configuration for Advanced Datapath Monitoring. + Structure is documented below. + properties: + enableMetrics: + description: Whether or not to enable advanced datapath + metrics. + type: boolean + enableRelay: + description: Whether or not Relay is enabled. + type: boolean + type: object + enableComponents: + description: 'The GKE components exposing metrics. Supported + values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, + CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, + STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, + WORKLOADS is supported on top of those 12 values. (WORKLOADS + is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR + are only supported in GKE 1.29.3-gke.1093000 and above.' + items: + type: string + type: array + managedPrometheus: + description: Configuration for Managed Service for Prometheus. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + monitoringService: + description: |- + The monitoring service that the cluster + should write metrics to. + Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + VM metrics will be collected by Google Compute Engine regardless of this setting + Available options include + monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + Defaults to monitoring.googleapis.com/kubernetes + type: string + network: + description: |- + The name or self_link of the Google Compute Engine + network to which the cluster is connected. For Shared VPC, set this to the self link of the + shared network. + type: string + networkPolicy: + description: |- + Configuration options for the + NetworkPolicy + feature. Structure is documented below. + properties: + enabled: + description: Whether network policy is enabled on the cluster. + type: boolean + provider: + description: The selected network policy provider. Defaults + to PROVIDER_UNSPECIFIED. + type: string + type: object + networkingMode: + description: |- + Determines whether alias IPs or routes will be used for pod IPs in the cluster. + Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + type: string + nodeConfig: + description: Parameters used in creating the default node pool. + Structure is documented below. + properties: + advancedMachineFeatures: + description: |- + Specifies options for controlling + advanced machine features. Structure is documented below. + properties: + enableNestedVirtualization: + description: Defines whether the instance should have + nested virtualization enabled. Defaults to false. + type: boolean + threadsPerCore: + description: The number of threads per physical core. + To disable simultaneous multithreading (SMT) set this + to 1. If unset, the maximum number of threads supported + per core by the underlying processor is assumed. + type: number + type: object + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used to + encrypt the boot disk attached to each node in the node + pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with Cloud + KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + confidentialNodes: + description: Configuration for Confidential Nodes feature. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + containerdConfig: + description: Parameters to customize containerd runtime. Structure + is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container registries. + There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for CA + and domains. Each object identifies a certificate + and its assigned domains. See how to configure for + private container registries for more detail. Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + diskSizeGb: + description: |- + Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + enableConfidentialStorage: + description: Enabling Confidential Storage will create boot + disk with confidential mode. It is disabled by default. + type: boolean + ephemeralStorageConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + ephemeralStorageLocalSsdConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + fastSocket: + description: |- + Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + Node Pool must enable gvnic. + GKE version 1.25.2-gke.1700 or later. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcfsConfig: + description: |- + Parameters for the Google Container Filesystem (GCFS). + If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + A machine_type that has more than 16 GiB of memory is also recommended. + GCFS must be enabled in order to use image streaming. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + guestAccelerator: + description: |- + List of the type and count of accelerator cards attached to the instance. + Structure documented below.12 this field is an + Attribute as Block + items: + properties: + count: + description: The number of the guest accelerator cards + exposed to this instance. + type: number + gpuDriverInstallationConfig: + description: Configuration for auto installation of + GPU driver. Structure is documented below. + properties: + gpuDriverVersion: + description: |- + Mode for how the GPU driver is installed. + Accepted values are: + type: string + type: object + gpuPartitionSize: + description: Size of partitions to create on the GPU. + Valid values are described in the NVIDIA mig user + guide. + type: string + gpuSharingConfig: + description: Configuration for GPU sharing. Structure + is documented below. + properties: + gpuSharingStrategy: + description: |- + The type of GPU sharing strategy to enable on the GPU node. + Accepted values are: + type: string + maxSharedClientsPerGpu: + description: The maximum number of containers that + can share a GPU. + type: number + type: object + type: + description: The accelerator type resource to expose + to this instance. E.g. nvidia-tesla-k80. + type: string + type: object + type: array + gvnic: + description: |- + Google Virtual NIC (gVNIC) is a virtual network interface. + Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + GKE node version 1.15.11-gke.15 or later + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + hostMaintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + maintenanceInterval: + type: string + type: object + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + kubeletConfig: + description: |- + Kubelet configuration, currently supported attributes can be found here. + Structure is documented below. + properties: + cpuCfsQuota: + description: |- + If true, enables CPU CFS quota enforcement for + containers that specify CPU limits. + type: boolean + cpuCfsQuotaPeriod: + description: |- + The CPU CFS quota period value. Specified + as a sequence of decimal numbers, each with optional fraction and a unit suffix, + such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + "h". The value must be a positive duration. + type: string + cpuManagerPolicy: + description: |- + The CPU management policy on the node. See + K8S CPU Management Policies. + One of "none" or "static". Defaults to none when kubelet_config is unset. + type: string + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + podPidsLimit: + description: Controls the maximum number of processes + allowed to run in a pod. The value must be greater than + or equal to 1024 and less than 4194304. + type: number + type: object + labels: + additionalProperties: + type: string + description: |- + The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + reserved by Kubernetes Core components and cannot be specified. + type: object + x-kubernetes-map-type: granular + linuxNodeConfig: + description: Parameters that can be configured on Linux nodes. + Structure is documented below. + properties: + cgroupMode: + description: |- + Possible cgroup modes that can be used. + Accepted values are: + type: string + sysctls: + additionalProperties: + type: string + description: |- + The Linux kernel parameters to be applied to the nodes + and all pods running on the nodes. Specified as a map from the key, such as + net.core.wmem_max, to a string value. Currently supported attributes can be found here. + Note that validations happen all server side. All attributes are optional. + type: object + x-kubernetes-map-type: granular + type: object + localNvmeSsdBlockConfig: + description: Parameters for the local NVMe SSDs. Structure + is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + loggingVariant: + description: wide default value. Valid values include DEFAULT + and MAX_THROUGHPUT. See Increasing logging agent throughput + for more information. + type: string + machineType: + description: |- + The name of a Google Compute Engine machine type. + Defaults to e2-medium. To create a custom machine type, value should be set as specified + here. + type: string + metadata: + additionalProperties: + type: string + description: |- + The metadata key/value pairs assigned to instances in + the cluster. From GKE 1. To avoid this, set the + value in your config. + type: object + x-kubernetes-map-type: granular + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + nodeGroup: + description: Setting this field will assign instances of this + pool to run on the specified node group. This is useful + for running workloads on sole tenant nodes. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + x-kubernetes-list-type: set + preemptible: + description: |- + A boolean that represents whether or not the underlying node VMs + are preemptible. See the official documentation + for more information. Defaults to false. + type: boolean + reservationAffinity: + description: The configuration of the desired reservation + which instances could take capacity from. Structure is documented + below. + properties: + consumeReservationType: + description: |- + The type of reservation consumption + Accepted values are: + type: string + key: + description: Key for taint. + type: string + values: + description: name" + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + resourceLabels: + additionalProperties: + type: string + description: |- + The GCP labels (key/value pairs) to be applied to each node. Refer here + for how these labels are applied to clusters, node pools and nodes. + type: object + x-kubernetes-map-type: granular + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + sandboxConfig: + description: |- + GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + Structure is documented below. + properties: + sandboxType: + description: |- + Which sandbox to use for pods in the node pool. + Accepted values are: + type: string + type: object + secondaryBootDisks: + description: Parameters for secondary boot disks to preload + container images and data on new nodes. Structure is documented + below. gcfs_config must be enabled=true for this feature + to work. min_master_version must also be set to use GKE + 1.28.3-gke.106700 or later versions. + items: + properties: + diskImage: + description: Path to disk image to create the secondary + boot disk from. After using the gke-disk-image-builder, + this argument should be global/images/DISK_IMAGE_NAME. + type: string + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity monitoring + enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot enabled. + type: boolean + type: object + soleTenantConfig: + description: Allows specifying multiple node affinities useful + for running workloads on sole tenant nodes. node_affinity + structure is documented below. + properties: + nodeAffinity: + items: + properties: + key: + description: Key for taint. + type: string + operator: + description: Specifies affinity or anti-affinity. + Accepted values are "IN" or "NOT_IN" + type: string + values: + description: name" + items: + type: string + type: array + type: object + type: array + type: object + spot: + description: |- + A boolean that represents whether the underlying node VMs are spot. + See the official documentation + for more information. Defaults to false. + type: boolean + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + taint: + description: |- + A list of + Kubernetes taints + to apply to nodes. Structure is documented below. + items: + properties: + effect: + description: Effect for taint. Accepted values are NO_SCHEDULE, + PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + workloadMetadataConfig: + description: |- + Metadata configuration to expose to workloads on the node pool. + Structure is documented below. + properties: + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: object + nodeLocations: + description: |- + The list of zones in which the cluster's nodes + are located. Nodes must be in the region of their regional cluster or in the + same region as their cluster's zone for zonal clusters. If this is specified for + a zonal cluster, omit the cluster's zone. + items: + type: string + type: array + x-kubernetes-list-type: set + nodePoolAutoConfig: + description: |- + Node pool configs that apply to auto-provisioned node pools in + autopilot clusters and + node auto-provisioning-enabled clusters. Structure is documented below. + properties: + networkTags: + description: The network tag config for the cluster's automatically + provisioned node pools. Structure is documented below. + properties: + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + type: object + nodeKubeletConfig: + description: |- + Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + Structure is documented below. + properties: + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + type: object + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + type: object + nodePoolDefaults: + description: Default NodePool settings for the entire cluster. + These settings are overridden if specified on the specific NodePool + object. Structure is documented below. + properties: + nodeConfigDefaults: + description: Subset of NodeConfig message that has defaults. + properties: + containerdConfig: + description: Parameters to customize containerd runtime. + Structure is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container + registries. There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for + CA and domains. Each object identifies a certificate + and its assigned domains. See how to configure + for private container registries for more detail. + Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + gcfsConfig: + description: The default Google Container Filesystem (GCFS) + configuration at the cluster level. e.g. enable image + streaming across all the node pools within the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + insecureKubeletReadonlyPortEnabled: + description: 'only port is enabled for newly created node + pools in the cluster. It is strongly recommended to + set this to FALSE. Possible values: TRUE, FALSE.' + type: string + loggingVariant: + description: The type of logging agent that is deployed + by default for newly created node pools in the cluster. + Valid values include DEFAULT and MAX_THROUGHPUT. See + Increasing logging agent throughput for more information. + type: string + type: object + type: object + nodeVersion: + description: |- + The Kubernetes version on the nodes. Must either be unset + or set to the same value as min_master_version on create. Defaults to the default + version set by GKE which is not necessarily the latest version. This only affects + nodes in the default node pool. + To update nodes in other node pools, use the version attribute on the node pool. + type: string + notificationConfig: + description: Configuration for the cluster upgrade notifications + feature. Structure is documented below. + properties: + pubsub: + description: The pubsub config for the cluster's upgrade notifications. + properties: + enabled: + description: Whether or not the notification config is + enabled + type: boolean + filter: + description: Choose what type of notifications you want + to receive. If no filters are applied, you'll receive + all notification types. Structure is documented below. + properties: + eventType: + description: Can be used to filter what notifications + are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, + UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering + notifications for more details. + items: + type: string + type: array + type: object + topic: + description: 'The pubsub topic to push upgrade notifications + to. Must be in the same project as the cluster. Must + be in the format: projects/{project}/topics/{topic}.' + type: string + type: object + type: object + podSecurityPolicyConfig: + description: |- + Configuration for the + PodSecurityPolicy feature. + Structure is documented below. + properties: + enabled: + description: |- + Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + type: boolean + type: object + privateClusterConfig: + description: |- + Configuration for private clusters, + clusters with private nodes. Structure is documented below. + properties: + enablePrivateEndpoint: + description: |- + When true, the cluster's private + endpoint is used as the cluster endpoint and access through the public endpoint + is disabled. When false, either endpoint can be used. This field only applies + to private clusters, when enable_private_nodes is true. + type: boolean + enablePrivateNodes: + description: |- + Enables the private cluster feature, + creating a private endpoint on the cluster. In a private cluster, nodes only + have RFC 1918 private addresses and communicate with the master's private + endpoint via private networking. + type: boolean + masterGlobalAccessConfig: + description: |- + Controls cluster master global + access settings. Structure is documented below. + properties: + enabled: + description: |- + Whether the cluster master is accessible globally or + not. + type: boolean + type: object + masterIpv4CidrBlock: + description: |- + The IP range in CIDR notation to use for + the hosted master network. This range will be used for assigning private IP + addresses to the cluster master(s) and the ILB VIP. This range must not overlap + with any other ranges in use within the cluster's network, and it must be a /28 + subnet. See Private Cluster Limitations + for more details. This field only applies to private clusters, when + enable_private_nodes is true. + type: string + privateEndpointSubnetwork: + description: Subnetwork in cluster's network where master's + endpoint will be provisioned. + type: string + type: object + privateIpv6GoogleAccess: + description: The desired state of IPv6 connectivity to Google + Services. By default, no private IPv6 access to or from Google + Services (all access will be via IPv4). + type: string + project: + description: |- + The ID of the project in which the resource belongs. If it + is not provided, the provider project is used. + type: string + protectConfig: + description: Enable/Disable Protect API features for the cluster. + Structure is documented below. + properties: + workloadConfig: + description: WorkloadConfig defines which actions are enabled + for a cluster's workload configurations. Structure is documented + below + properties: + auditMode: + description: Sets which mode of auditing should be used + for the cluster's workloads. Accepted values are DISABLED, + BASIC. + type: string + type: object + workloadVulnerabilityMode: + description: Sets which mode to use for Protect workload vulnerability + scanning feature. Accepted values are DISABLED, BASIC. + type: string + type: object + releaseChannel: + description: |- + Configuration options for the Release channel + feature, which provide more control over automatic upgrades of your GKE clusters. + When updating this field, GKE imposes specific version requirements. See + Selecting a new release channel + for more details; the google_container_engine_versions datasource can provide + the default version for a channel. Instead, use the "UNSPECIFIED" + channel. Structure is documented below. + properties: + channel: + description: |- + The selected release channel. + Accepted values are: + type: string + type: object + removeDefaultNodePool: + description: |- + If true, deletes the default node + pool upon cluster creation. If you're using google_container_node_pool + resources with no default node pool, this should be set to true, alongside + setting initial_node_count to at least 1. + type: boolean + resourceLabels: + additionalProperties: + type: string + description: The GCE resource labels (a map of key/value pairs) + to be applied to the cluster. + type: object + x-kubernetes-map-type: granular + resourceUsageExportConfig: + description: |- + Configuration for the + ResourceUsageExportConfig feature. + Structure is documented below. + properties: + bigqueryDestination: + description: Parameters for using BigQuery as the destination + of resource usage export. + properties: + datasetId: + description: 'The ID of a BigQuery Dataset. For Example:' + type: string + type: object + enableNetworkEgressMetering: + description: |- + Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + in the cluster to meter network egress traffic. + type: boolean + enableResourceConsumptionMetering: + description: |- + Whether to enable resource + consumption metering on this cluster. When enabled, a table will be created in + the resource export BigQuery dataset to store resource consumption data. The + resulting table can be joined with the resource usage table or with BigQuery + billing export. Defaults to true. + type: boolean + type: object + secretManagerConfig: + description: |- + Configuration for the + SecretManagerConfig feature. + Structure is documented below. + properties: + enabled: + description: Enable the Secret Manager add-on for this cluster. + type: boolean + type: object + securityPostureConfig: + description: Enable/Disable Security Posture API features for + the cluster. Structure is documented below. + properties: + mode: + description: Sets the mode of the Kubernetes security posture + API's off-cluster features. Available options include DISABLED, + BASIC, and ENTERPRISE. + type: string + vulnerabilityMode: + description: Sets the mode of the Kubernetes security posture + API's workload vulnerability scanning. Available options + include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and + VULNERABILITY_ENTERPRISE. + type: string + type: object + serviceExternalIpsConfig: + description: Structure is documented below. + properties: + enabled: + description: Controls whether external ips specified by a + service will be allowed. It is enabled by default. + type: boolean + type: object + subnetwork: + description: |- + The name or self_link of the Google Compute Engine + subnetwork in which the cluster's instances are launched. + type: string + tpuConfig: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + useServiceNetworking: + type: boolean + type: object + verticalPodAutoscaling: + description: |- + Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + workloadAltsConfig: + description: Configuration for direct-path (via ALTS) with workload + identity.. Structure is documented below. + properties: + enableAlts: + description: Whether the alts handshaker should be enabled + or not for direct-path. Requires Workload Identity (workloadPool + must be non-empty). + type: boolean + type: object + workloadIdentityConfig: + description: |- + Workload Identity allows Kubernetes service accounts to act as a user-managed + Google IAM Service Account. + Structure is documented below. + properties: + workloadPool: + description: The workload pool to attach all Kubernetes service + accounts to. + type: string + type: object + type: object + managementPolicies: + default: + - '*' + description: |- + THIS IS A BETA FIELD. It is on by default but can be opted out + through a Crossplane feature flag. + ManagementPolicies specify the array of actions Crossplane is allowed to + take on the managed and external resources. + This field is planned to replace the DeletionPolicy field in a future + release. Currently, both could be set independently and non-default + values would be honored if the feature flag is enabled. If both are + custom, the DeletionPolicy field will be ignored. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md + items: + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: |- + ProviderConfigReference specifies how the provider that will be used to + create, observe, update, and delete this managed resource should be + configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: |- + PublishConnectionDetailsTo specifies the connection secret config which + contains a name, metadata and a reference to secret store config to + which any connection details for this managed resource should be written. + Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations are the annotations to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.annotations". + - It is up to Secret Store implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: |- + Labels are the labels/tags to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store types. + type: object + type: + description: |- + Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: |- + WriteConnectionSecretToReference specifies the namespace and name of a + Secret to which any connection details for this managed resource should + be written. Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + This field is planned to be replaced in a future release in favor of + PublishConnectionDetailsTo. Currently, both could be set independently + and connection details would be published to both without affecting + each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ClusterStatus defines the observed state of Cluster. + properties: + atProvider: + properties: + addonsConfig: + description: |- + The configuration for addons supported by GKE. + Structure is documented below. + properties: + cloudrunConfig: + description: . Structure is documented below. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + loadBalancerType: + description: |- + The load balancer type of CloudRun ingress service. It is external load balancer by default. + Set load_balancer_type=LOAD_BALANCER_TYPE_INTERNAL to configure it as internal load balancer. + type: string + type: object + configConnectorConfig: + description: |- + . + The status of the ConfigConnector addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + dnsCacheConfig: + description: |- + . + The status of the NodeLocal DNSCache addon. It is disabled by default. + Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcePersistentDiskCsiDriverConfig: + description: |- + . + Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcpFilestoreCsiDriverConfig: + description: |- + The status of the Filestore CSI driver addon, + which allows the usage of filestore instance as volumes. + It is disabled by default; set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcsFuseCsiDriverConfig: + description: |- + The status of the GCSFuse CSI driver addon, + which allows the usage of a gcs bucket as volumes. + It is disabled by default for Standard clusters; set enabled = true to enable. + It is enabled by default for Autopilot clusters with version 1.24 or later; set enabled = true to enable it explicitly. + See Enable the Cloud Storage FUSE CSI driver for more information. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gkeBackupAgentConfig: + description: |- + . + The status of the Backup for GKE agent addon. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + horizontalPodAutoscaling: + description: |- + The status of the Horizontal Pod Autoscaling + addon, which increases or decreases the number of replica pods a replication controller + has based on the resource usage of the existing pods. + It is enabled by default; + set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + httpLoadBalancing: + description: |- + The status of the HTTP (L7) load balancing + controller addon, which makes it easy to set up HTTP load balancers for services in a + cluster. It is enabled by default; set disabled = true to disable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + istioConfig: + description: |- + . + Structure is documented below. + properties: + auth: + description: The authentication type between services + in Istio. Available options include AUTH_MUTUAL_TLS. + type: string + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + kalmConfig: + description: |- + . + Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + networkPolicyConfig: + description: |- + Whether we should enable the network policy addon + for the master. This must be enabled in order to enable network policy for the nodes. + To enable this, you must also define a network_policy block, + otherwise nothing will happen. + It can only be disabled if the nodes already do not have network policies enabled. + Defaults to disabled; set disabled = false to enable. + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + rayOperatorConfig: + description: |- + . The status of the Ray Operator + addon. + It is disabled by default. Set enabled = true to enable. The minimum + cluster version to enable Ray is 1.30.0-gke.1747000. + items: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + rayClusterLoggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + rayClusterMonitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + type: array + statefulHaConfig: + description: |- + . + The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + It is disabled by default for Standard clusters. Set enabled = true to enable. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + allowNetAdmin: + description: |- + Enable NET_ADMIN for the cluster. Defaults to + false. This field should only be enabled for Autopilot clusters (enable_autopilot + set to true). + type: boolean + authenticatorGroupsConfig: + description: |- + Configuration for the + Google Groups for GKE feature. + Structure is documented below. + properties: + securityGroup: + description: The name of the RBAC security group for use with + Google security groups in Kubernetes RBAC. Group name must + be in format gke-security-groups@yourdomain.com. + type: string + type: object + binaryAuthorization: + description: |- + Configuration options for the Binary + Authorization feature. Structure is documented below. + properties: + enabled: + description: (DEPRECATED) Enable Binary Authorization for + this cluster. Deprecated in favor of evaluation_mode. + type: boolean + evaluationMode: + description: |- + Mode of operation for Binary Authorization policy evaluation. Valid values are DISABLED + and PROJECT_SINGLETON_POLICY_ENFORCE. + type: string + type: object + clusterAutoscaling: + description: |- + Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to + automatically adjust the size of the cluster and create/delete node pools based + on the current needs of the cluster's workload. See the + guide to using Node Auto-Provisioning + for more details. Structure is documented below. + properties: + autoProvisioningDefaults: + description: |- + Contains defaults for a node pool created by NAP. A subset of fields also apply to + GKE Autopilot clusters. + Structure is documented below. + properties: + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used + to encrypt the boot disk attached to each node in the + node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with + Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + diskSize: + description: Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults + to 100 + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + management: + description: NodeManagement configuration for this NodePool. + Structure is documented below. + properties: + autoRepair: + description: Specifies whether the node auto-repair + is enabled for the node pool. If enabled, the nodes + in this node pool will be monitored and, if they + fail health checks too many times, an automatic + repair action will be triggered. + type: boolean + autoUpgrade: + description: Specifies whether node auto-upgrade is + enabled for the node pool. If enabled, node auto-upgrade + helps keep the nodes in your node pool up to date + with the latest release version of Kubernetes. + type: boolean + upgradeOptions: + description: Specifies the Auto Upgrade knobs for + the node pool. + items: + properties: + autoUpgradeStartTime: + type: string + description: + description: Description of the cluster. + type: string + type: object + type: array + type: object + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity + monitoring enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot + enabled. + type: boolean + type: object + upgradeSettings: + description: Specifies the upgrade settings for NAP created + node pools. Structure is documented below. + properties: + blueGreenSettings: + description: Settings for blue-green upgrade strategy. + To be specified when strategy is set to BLUE_GREEN. + Structure is documented below. + properties: + nodePoolSoakDuration: + description: 'Time needed after draining entire + blue pool. After this period, blue pool will + be cleaned up. A duration in seconds with up + to nine fractional digits, ending with ''s''. + Example: "3.5s".' + type: string + standardRolloutPolicy: + description: green upgrade. To be specified when + strategy is set to BLUE_GREEN. Structure is + documented below. + properties: + batchNodeCount: + description: Number of blue nodes to drain + in a batch. Only one of the batch_percentage + or batch_node_count can be specified. + type: number + batchPercentage: + description: ': Percentage of the bool pool + nodes to drain in a batch. The range of + this field should be (0.0, 1.0). Only one + of the batch_percentage or batch_node_count + can be specified.' + type: number + batchSoakDuration: + description: 'Soak time after each batch gets + drained. A duration in seconds with up to + nine fractional digits, ending with ''s''. + Example: "3.5s".`.' + type: string + type: object + type: object + maxSurge: + description: The maximum number of nodes that can + be created beyond the current size of the node pool + during the upgrade process. To be used when strategy + is set to SURGE. Default is 0. + type: number + maxUnavailable: + description: The maximum number of nodes that can + be simultaneously unavailable during the upgrade + process. To be used when strategy is set to SURGE. + Default is 0. + type: number + strategy: + description: Strategy used for node pool update. Strategy + can only be one of BLUE_GREEN or SURGE. The default + is value is SURGE. + type: string + type: object + type: object + autoProvisioningLocations: + description: |- + The list of Google Compute Engine + zones in which the + NodePool's nodes can be created by NAP. + items: + type: string + type: array + autoscalingProfile: + description: |- + Configuration + options for the Autoscaling profile + feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability + when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED. + type: string + enabled: + description: |- + Whether node auto-provisioning is enabled. Must be supplied for GKE Standard clusters, true is implied + for autopilot clusters. Resource limits for cpu and memory must be defined to enable node auto-provisioning for GKE Standard. + type: boolean + resourceLimits: + description: |- + Global constraints for machine resources in the + cluster. Configuring the cpu and memory types is required if node + auto-provisioning is enabled. These limits will apply to node pool autoscaling + in addition to node auto-provisioning. Structure is documented below. + items: + properties: + maximum: + description: Maximum amount of the resource in the cluster. + type: number + minimum: + description: Minimum amount of the resource in the cluster. + type: number + resourceType: + description: |- + The type of the resource. For example, cpu and + memory. See the guide to using Node Auto-Provisioning + for a list of types. + type: string + type: object + type: array + type: object + clusterIpv4Cidr: + description: |- + The IP address range of the Kubernetes pods + in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one + automatically chosen or specify a /14 block in 10.0.0.0/8. This field will + default a new cluster to routes-based, where ip_allocation_policy is not defined. + type: string + clusterTelemetry: + description: |- + Configuration for + ClusterTelemetry feature, + Structure is documented below. + properties: + type: + description: |- + Telemetry integration for the cluster. Supported values (ENABLED, DISABLED, SYSTEM_ONLY); + SYSTEM_ONLY (Only system components are monitored and logged) is only available in GKE versions 1.15 and later. + type: string + type: object + confidentialNodes: + description: Configuration for Confidential Nodes feature. Structure + is documented below documented below. + properties: + enabled: + description: |- + Enable Confidential GKE Nodes for this node pool, to + enforce encryption of data in-use. + type: boolean + type: object + costManagementConfig: + description: |- + Configuration for the + Cost Allocation feature. + Structure is documented below. + properties: + enabled: + description: Whether to enable the cost allocation feature. + type: boolean + type: object + databaseEncryption: + description: Structure is documented below. + properties: + keyName: + description: the key to use to encrypt/decrypt secrets. See + the DatabaseEncryption definition for more information. + type: string + state: + description: ENCRYPTED or DECRYPTED + type: string + type: object + datapathProvider: + description: The desired datapath provider for this cluster. This + is set to LEGACY_DATAPATH by default, which uses the IPTables-based + kube-proxy implementation. Set to ADVANCED_DATAPATH to enable + Dataplane v2. + type: string + defaultMaxPodsPerNode: + description: |- + The default maximum number of pods + per node in this cluster. This doesn't work on "routes-based" clusters, clusters + that don't have IP Aliasing enabled. See the official documentation + for more information. + type: number + defaultSnatStatus: + description: GKE SNAT DefaultSnatStatus contains the desired state + of whether default sNAT should be disabled on the cluster, API + doc. Structure is documented below + properties: + disabled: + description: Whether the cluster disables default in-node + sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus + is disabled.When disabled is set to false, default IP masquerade + rules will be applied to the nodes to prevent sNAT on cluster + internal traffic + type: boolean + type: object + deletionProtection: + type: boolean + description: + description: Description of the cluster. + type: string + dnsConfig: + description: Configuration for Using Cloud DNS for GKE. Structure + is documented below. + properties: + additiveVpcScopeDnsDomain: + description: This will enable Cloud DNS additive VPC scope. + Must provide a domain name that is unique within the VPC. + For this to work cluster_dns = "CLOUD_DNS" and cluster_dns_scope + = "CLUSTER_SCOPE" must both be set as well. + type: string + clusterDns: + description: Which in-cluster DNS provider should be used. + PROVIDER_UNSPECIFIED (default) or PLATFORM_DEFAULT or CLOUD_DNS. + type: string + clusterDnsDomain: + description: The suffix used for all cluster service records. + type: string + clusterDnsScope: + description: The scope of access to cluster DNS records. DNS_SCOPE_UNSPECIFIED + (default) or CLUSTER_SCOPE or VPC_SCOPE. + type: string + type: object + effectiveLabels: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + enableAutopilot: + description: |- + Enable Autopilot for this cluster. Defaults to false. + Note that when this option is enabled, certain features of Standard GKE are not available. + See the official documentation + for available features. + type: boolean + enableCiliumClusterwideNetworkPolicy: + description: Whether CiliumClusterWideNetworkPolicy is enabled + on this cluster. Defaults to false. + type: boolean + enableFqdnNetworkPolicy: + description: Whether FQDN Network Policy is enabled on this cluster. + Users who enable this feature for existing Standard clusters + must restart the GKE Dataplane V2 anetd DaemonSet after enabling + it. See the Enable FQDN Network Policy in an existing cluster + for more information. + type: boolean + enableIntranodeVisibility: + description: Whether Intra-node visibility is enabled for this + cluster. This makes same node pod to pod traffic visible for + VPC network. + type: boolean + enableK8SBetaApis: + description: |- + Configuration for Kubernetes Beta APIs. + Structure is documented below. + properties: + enabledApis: + description: Enabled Kubernetes Beta APIs. To list a Beta + API resource, use the representation {group}/{version}/{resource}. + The version must be a Beta version. Note that you cannot + disable beta APIs that are already enabled on a cluster + without recreating it. See the Configure beta APIs for more + information. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + enableKubernetesAlpha: + description: |- + Whether to enable Kubernetes Alpha features for + this cluster. Note that when this option is enabled, the cluster cannot be upgraded + and will be automatically deleted after 30 days. + type: boolean + enableL4IlbSubsetting: + description: Whether L4ILB Subsetting is enabled for this cluster. + type: boolean + enableLegacyAbac: + description: |- + Whether the ABAC authorizer is enabled for this cluster. + When enabled, identities in the system, including service accounts, nodes, and controllers, + will have statically granted permissions beyond those provided by the RBAC configuration or IAM. + Defaults to false + type: boolean + enableMultiNetworking: + description: Whether multi-networking is enabled for this cluster. + type: boolean + enableShieldedNodes: + description: Enable Shielded Nodes features on all nodes in this + cluster. Defaults to true. + type: boolean + enableTpu: + description: |- + Whether to enable Cloud TPU resources in this cluster. + See the official documentation. + type: boolean + endpoint: + description: The IP address of this cluster's Kubernetes master. + type: string + fleet: + description: Fleet configuration for the cluster. Structure is + documented below. + properties: + membership: + description: The resource name of the fleet Membership resource + associated to this cluster with format //gkehub.googleapis.com/projects/{{project}}/locations/{{location}}/memberships/{{name}}. + See the official doc for fleet management. + type: string + membershipId: + description: The short name of the fleet membership, extracted + from fleet.0.membership. You can use this field to configure + membership_id under google_gkehub_feature_membership. + type: string + membershipLocation: + description: The location of the fleet membership, extracted + from fleet.0.membership. You can use this field to configure + membership_location under google_gkehub_feature_membership. + type: string + preRegistered: + type: boolean + project: + description: The name of the Fleet host project where this + cluster will be registered. + type: string + type: object + gatewayApiConfig: + description: Configuration for GKE Gateway API controller. Structure + is documented below. + properties: + channel: + description: Which Gateway Api channel should be used. CHANNEL_DISABLED, + CHANNEL_EXPERIMENTAL or CHANNEL_STANDARD. + type: string + type: object + id: + description: an identifier for the resource with format projects/{{project}}/locations/{{zone}}/clusters/{{name}} + type: string + identityServiceConfig: + description: . Structure is documented below. + properties: + enabled: + description: Whether to enable the Identity Service component. + It is disabled by default. Set enabled=true to enable. + type: boolean + type: object + initialNodeCount: + description: |- + The number of nodes to create in this + cluster's default node pool. In regional or multi-zonal clusters, this is the + number of nodes per zone. Must be set if node_pool is not set. If you're using + google_container_node_pool objects with no default node pool, you'll need to + set this to a value of at least 1, alongside setting + remove_default_node_pool to true. + type: number + ipAllocationPolicy: + description: |- + Configuration of cluster IP allocation for + VPC-native clusters. If this block is unset during creation, it will be set by the GKE backend. + Structure is documented below. + properties: + additionalPodRangesConfig: + description: |- + The configuration for additional pod secondary ranges at + the cluster level. Used for Autopilot clusters and Standard clusters with which control of the + secondary Pod IP address assignment to node pools isn't needed. Structure is documented below. + properties: + podRangeNames: + description: The names of the Pod ranges to add to the + cluster. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + clusterIpv4CidrBlock: + description: |- + The IP address range for the cluster pod IPs. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + clusterSecondaryRangeName: + description: |- + The name of the existing secondary + range in the cluster's subnetwork to use for pod IP addresses. Alternatively, + cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one. + type: string + podCidrOverprovisionConfig: + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + servicesIpv4CidrBlock: + description: |- + The IP address range of the services IPs in this cluster. + Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) + to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) + from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to + pick a specific range to use. + type: string + servicesSecondaryRangeName: + description: |- + The name of the existing + secondary range in the cluster's subnetwork to use for service ClusterIPs. + Alternatively, services_ipv4_cidr_block can be used to automatically create a + GKE-managed one. + type: string + stackType: + description: |- + The IP Stack Type of the cluster. + Default value is IPV4. + Possible values are IPV4 and IPV4_IPV6. + type: string + type: object + labelFingerprint: + description: The fingerprint of the set of labels for this cluster. + type: string + location: + description: |- + The location (region or zone) in which the cluster + master will be created, as well as the default node location. If you specify a + zone (such as us-central1-a), the cluster will be a zonal cluster with a + single cluster master. If you specify a region (such as us-west1), the + cluster will be a regional cluster with multiple masters spread across zones in + the region, and with default node locations in those zones as well + type: string + loggingConfig: + description: |- + Logging configuration for the cluster. + Structure is documented below. + properties: + enableComponents: + description: |- + The GKE components exposing logs. Supported values include: + SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS. + items: + type: string + type: array + type: object + loggingService: + description: |- + The logging service that the cluster should + write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), + logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes + type: string + maintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + dailyMaintenanceWindow: + description: structure documented below. + properties: + duration: + description: |- + Duration of the time window, automatically chosen to be + smallest possible in the given scenario. + Duration will be in RFC3339 format "PTnHnMnS". + type: string + startTime: + type: string + type: object + maintenanceExclusion: + description: structure documented below + items: + properties: + endTime: + type: string + exclusionName: + description: |- + The name of the cluster, unique within the project and + location. + type: string + exclusionOptions: + description: MaintenanceExclusionOptions provides maintenance + exclusion related options. + properties: + scope: + description: 'The scope of automatic upgrades to + restrict in the exclusion window. One of: NO_UPGRADES + | NO_MINOR_UPGRADES | NO_MINOR_OR_NODE_UPGRADES' + type: string + type: object + startTime: + type: string + type: object + type: array + recurringWindow: + description: structure documented below + properties: + endTime: + type: string + recurrence: + type: string + startTime: + type: string + type: object + type: object + masterAuth: + description: |- + The authentication information for accessing the + Kubernetes master. Some values in this block are only returned by the API if + your service account has permission to get credentials for your GKE cluster. If + you see an unexpected diff unsetting your client cert, ensure you have the + container.clusters.getCredentials permission. + Structure is documented below. + properties: + clientCertificate: + description: |- + Base64 encoded public certificate + used by clients to authenticate to the cluster endpoint. + type: string + clientCertificateConfig: + description: 'Whether client certificate authorization is + enabled for this cluster. For example:' + properties: + issueClientCertificate: + type: boolean + type: object + clusterCaCertificate: + description: |- + Base64 encoded public certificate + that is the root certificate of the cluster. + type: string + type: object + masterAuthorizedNetworksConfig: + description: |- + The desired + configuration options for master authorized networks. Omit the + nested cidr_blocks attribute to disallow external access (except + the cluster node IPs, which GKE automatically whitelists). + Structure is documented below. + properties: + cidrBlocks: + description: |- + External networks that can access the + Kubernetes cluster master through HTTPS. + items: + properties: + cidrBlock: + description: |- + External network that can access Kubernetes master through HTTPS. + Must be specified in CIDR notation. + type: string + displayName: + description: Field for users to identify CIDR blocks. + type: string + type: object + type: array + gcpPublicCidrsAccessEnabled: + description: |- + Whether Kubernetes master is + accessible via Google Compute Engine Public IPs. + type: boolean + type: object + masterVersion: + description: |- + The current version of the master in the cluster. This may + be different than the min_master_version set in the config if the master + has been updated by GKE. + type: string + meshCertificates: + description: Structure is documented below. + properties: + enableCertificates: + description: Controls the issuance of workload mTLS certificates. + It is enabled by default. Workload Identity is required, + see workload_config. + type: boolean + type: object + minMasterVersion: + description: |- + The minimum version of the master. GKE + will auto-update the master to new versions, so this does not guarantee the + current master version--use the read-only master_version field to obtain that. + If unset, the cluster's version will be set by GKE to the version of the most recent + official release (which is not necessarily the latest version). If you intend to specify versions manually, + the docs + describe the various acceptable formats for this field. + type: string + monitoringConfig: + description: |- + Monitoring configuration for the cluster. + Structure is documented below. + properties: + advancedDatapathObservabilityConfig: + description: Configuration for Advanced Datapath Monitoring. + Structure is documented below. + properties: + enableMetrics: + description: Whether or not to enable advanced datapath + metrics. + type: boolean + enableRelay: + description: Whether or not Relay is enabled. + type: boolean + type: object + enableComponents: + description: 'The GKE components exposing metrics. Supported + values include: SYSTEM_COMPONENTS, APISERVER, SCHEDULER, + CONTROLLER_MANAGER, STORAGE, HPA, POD, DAEMONSET, DEPLOYMENT, + STATEFULSET, KUBELET, CADVISOR and DCGM. In beta provider, + WORKLOADS is supported on top of those 12 values. (WORKLOADS + is deprecated and removed in GKE 1.24.) KUBELET and CADVISOR + are only supported in GKE 1.29.3-gke.1093000 and above.' + items: + type: string + type: array + managedPrometheus: + description: Configuration for Managed Service for Prometheus. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + monitoringService: + description: |- + The monitoring service that the cluster + should write metrics to. + Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. + VM metrics will be collected by Google Compute Engine regardless of this setting + Available options include + monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. + Defaults to monitoring.googleapis.com/kubernetes + type: string + network: + description: |- + The name or self_link of the Google Compute Engine + network to which the cluster is connected. For Shared VPC, set this to the self link of the + shared network. + type: string + networkPolicy: + description: |- + Configuration options for the + NetworkPolicy + feature. Structure is documented below. + properties: + enabled: + description: Whether network policy is enabled on the cluster. + type: boolean + provider: + description: The selected network policy provider. Defaults + to PROVIDER_UNSPECIFIED. + type: string + type: object + networkingMode: + description: |- + Determines whether alias IPs or routes will be used for pod IPs in the cluster. + Options are VPC_NATIVE or ROUTES. VPC_NATIVE enables IP aliasing. Newly created clusters will default to VPC_NATIVE. + type: string + nodeConfig: + description: Parameters used in creating the default node pool. + Structure is documented below. + properties: + advancedMachineFeatures: + description: |- + Specifies options for controlling + advanced machine features. Structure is documented below. + properties: + enableNestedVirtualization: + description: Defines whether the instance should have + nested virtualization enabled. Defaults to false. + type: boolean + threadsPerCore: + description: The number of threads per physical core. + To disable simultaneous multithreading (SMT) set this + to 1. If unset, the maximum number of threads supported + per core by the underlying processor is assumed. + type: number + type: object + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used to + encrypt the boot disk attached to each node in the node + pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with Cloud + KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + confidentialNodes: + description: Configuration for Confidential Nodes feature. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + containerdConfig: + description: Parameters to customize containerd runtime. Structure + is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container registries. + There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for CA + and domains. Each object identifies a certificate + and its assigned domains. See how to configure for + private container registries for more detail. Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + diskSizeGb: + description: |- + Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + effectiveTaints: + description: List of kubernetes taints applied to each node. + Structure is documented above. + items: + properties: + effect: + description: Effect for taint. Accepted values are NO_SCHEDULE, + PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + enableConfidentialStorage: + description: Enabling Confidential Storage will create boot + disk with confidential mode. It is disabled by default. + type: boolean + ephemeralStorageConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + ephemeralStorageLocalSsdConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the boot + disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + fastSocket: + description: |- + Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + Node Pool must enable gvnic. + GKE version 1.25.2-gke.1700 or later. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcfsConfig: + description: |- + Parameters for the Google Container Filesystem (GCFS). + If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version from GKE versions 1.19 or later to use it. + For GKE versions 1.19, 1.20, and 1.21, the recommended minimum node_version would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively. + A machine_type that has more than 16 GiB of memory is also recommended. + GCFS must be enabled in order to use image streaming. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + guestAccelerator: + description: |- + List of the type and count of accelerator cards attached to the instance. + Structure documented below.12 this field is an + Attribute as Block + items: + properties: + count: + description: The number of the guest accelerator cards + exposed to this instance. + type: number + gpuDriverInstallationConfig: + description: Configuration for auto installation of + GPU driver. Structure is documented below. + properties: + gpuDriverVersion: + description: |- + Mode for how the GPU driver is installed. + Accepted values are: + type: string + type: object + gpuPartitionSize: + description: Size of partitions to create on the GPU. + Valid values are described in the NVIDIA mig user + guide. + type: string + gpuSharingConfig: + description: Configuration for GPU sharing. Structure + is documented below. + properties: + gpuSharingStrategy: + description: |- + The type of GPU sharing strategy to enable on the GPU node. + Accepted values are: + type: string + maxSharedClientsPerGpu: + description: The maximum number of containers that + can share a GPU. + type: number + type: object + type: + description: The accelerator type resource to expose + to this instance. E.g. nvidia-tesla-k80. + type: string + type: object + type: array + gvnic: + description: |- + Google Virtual NIC (gVNIC) is a virtual network interface. + Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + GKE node version 1.15.11-gke.15 or later + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + hostMaintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + maintenanceInterval: + type: string + type: object + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + kubeletConfig: + description: |- + Kubelet configuration, currently supported attributes can be found here. + Structure is documented below. + properties: + cpuCfsQuota: + description: |- + If true, enables CPU CFS quota enforcement for + containers that specify CPU limits. + type: boolean + cpuCfsQuotaPeriod: + description: |- + The CPU CFS quota period value. Specified + as a sequence of decimal numbers, each with optional fraction and a unit suffix, + such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + "h". The value must be a positive duration. + type: string + cpuManagerPolicy: + description: |- + The CPU management policy on the node. See + K8S CPU Management Policies. + One of "none" or "static". Defaults to none when kubelet_config is unset. + type: string + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + podPidsLimit: + description: Controls the maximum number of processes + allowed to run in a pod. The value must be greater than + or equal to 1024 and less than 4194304. + type: number + type: object + labels: + additionalProperties: + type: string + description: |- + The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + reserved by Kubernetes Core components and cannot be specified. + type: object + x-kubernetes-map-type: granular + linuxNodeConfig: + description: Parameters that can be configured on Linux nodes. + Structure is documented below. + properties: + cgroupMode: + description: |- + Possible cgroup modes that can be used. + Accepted values are: + type: string + sysctls: + additionalProperties: + type: string + description: |- + The Linux kernel parameters to be applied to the nodes + and all pods running on the nodes. Specified as a map from the key, such as + net.core.wmem_max, to a string value. Currently supported attributes can be found here. + Note that validations happen all server side. All attributes are optional. + type: object + x-kubernetes-map-type: granular + type: object + localNvmeSsdBlockConfig: + description: Parameters for the local NVMe SSDs. Structure + is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + loggingVariant: + description: wide default value. Valid values include DEFAULT + and MAX_THROUGHPUT. See Increasing logging agent throughput + for more information. + type: string + machineType: + description: |- + The name of a Google Compute Engine machine type. + Defaults to e2-medium. To create a custom machine type, value should be set as specified + here. + type: string + metadata: + additionalProperties: + type: string + description: |- + The metadata key/value pairs assigned to instances in + the cluster. From GKE 1. To avoid this, set the + value in your config. + type: object + x-kubernetes-map-type: granular + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + nodeGroup: + description: Setting this field will assign instances of this + pool to run on the specified node group. This is useful + for running workloads on sole tenant nodes. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + x-kubernetes-list-type: set + preemptible: + description: |- + A boolean that represents whether or not the underlying node VMs + are preemptible. See the official documentation + for more information. Defaults to false. + type: boolean + reservationAffinity: + description: The configuration of the desired reservation + which instances could take capacity from. Structure is documented + below. + properties: + consumeReservationType: + description: |- + The type of reservation consumption + Accepted values are: + type: string + key: + description: Key for taint. + type: string + values: + description: name" + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + resourceLabels: + additionalProperties: + type: string + description: |- + The GCP labels (key/value pairs) to be applied to each node. Refer here + for how these labels are applied to clusters, node pools and nodes. + type: object + x-kubernetes-map-type: granular + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + sandboxConfig: + description: |- + GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + Structure is documented below. + properties: + sandboxType: + description: |- + Which sandbox to use for pods in the node pool. + Accepted values are: + type: string + type: object + secondaryBootDisks: + description: Parameters for secondary boot disks to preload + container images and data on new nodes. Structure is documented + below. gcfs_config must be enabled=true for this feature + to work. min_master_version must also be set to use GKE + 1.28.3-gke.106700 or later versions. + items: + properties: + diskImage: + description: Path to disk image to create the secondary + boot disk from. After using the gke-disk-image-builder, + this argument should be global/images/DISK_IMAGE_NAME. + type: string + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is documented + below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity monitoring + enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure Boot enabled. + type: boolean + type: object + soleTenantConfig: + description: Allows specifying multiple node affinities useful + for running workloads on sole tenant nodes. node_affinity + structure is documented below. + properties: + nodeAffinity: + items: + properties: + key: + description: Key for taint. + type: string + operator: + description: Specifies affinity or anti-affinity. + Accepted values are "IN" or "NOT_IN" + type: string + values: + description: name" + items: + type: string + type: array + type: object + type: array + type: object + spot: + description: |- + A boolean that represents whether the underlying node VMs are spot. + See the official documentation + for more information. Defaults to false. + type: boolean + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + taint: + description: |- + A list of + Kubernetes taints + to apply to nodes. Structure is documented below. + items: + properties: + effect: + description: Effect for taint. Accepted values are NO_SCHEDULE, + PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + workloadMetadataConfig: + description: |- + Metadata configuration to expose to workloads on the node pool. + Structure is documented below. + properties: + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: object + nodeLocations: + description: |- + The list of zones in which the cluster's nodes + are located. Nodes must be in the region of their regional cluster or in the + same region as their cluster's zone for zonal clusters. If this is specified for + a zonal cluster, omit the cluster's zone. + items: + type: string + type: array + x-kubernetes-list-type: set + nodePool: + description: |- + List of node pools associated with this cluster. + See google_container_node_pool for schema. + Warning: node pools defined inside a cluster can't be changed (or added/removed) after + cluster creation without deleting and recreating the entire cluster. Unless you absolutely need the ability + to say "these are the only node pools associated with this cluster", use the + google_container_node_pool resource instead of this property. + items: + properties: + autoscaling: + properties: + locationPolicy: + type: string + maxNodeCount: + type: number + minNodeCount: + type: number + totalMaxNodeCount: + type: number + totalMinNodeCount: + type: number + type: object + initialNodeCount: + description: |- + The number of nodes to create in this + cluster's default node pool. In regional or multi-zonal clusters, this is the + number of nodes per zone. Must be set if node_pool is not set. If you're using + google_container_node_pool objects with no default node pool, you'll need to + set this to a value of at least 1, alongside setting + remove_default_node_pool to true. + type: number + instanceGroupUrls: + items: + type: string + type: array + managedInstanceGroupUrls: + items: + type: string + type: array + management: + description: NodeManagement configuration for this NodePool. + Structure is documented below. + properties: + autoRepair: + description: Specifies whether the node auto-repair + is enabled for the node pool. If enabled, the nodes + in this node pool will be monitored and, if they fail + health checks too many times, an automatic repair + action will be triggered. + type: boolean + autoUpgrade: + description: Specifies whether node auto-upgrade is + enabled for the node pool. If enabled, node auto-upgrade + helps keep the nodes in your node pool up to date + with the latest release version of Kubernetes. + type: boolean + type: object + maxPodsPerNode: + type: number + name: + description: |- + The name of the cluster, unique within the project and + location. + type: string + namePrefix: + type: string + networkConfig: + properties: + additionalNodeNetworkConfigs: + items: + properties: + network: + description: |- + The name or self_link of the Google Compute Engine + network to which the cluster is connected. For Shared VPC, set this to the self link of the + shared network. + type: string + subnetwork: + description: |- + The name or self_link of the Google Compute Engine + subnetwork in which the cluster's instances are launched. + type: string + type: object + type: array + additionalPodNetworkConfigs: + items: + properties: + maxPodsPerNode: + type: number + secondaryPodRange: + type: string + subnetwork: + description: |- + The name or self_link of the Google Compute Engine + subnetwork in which the cluster's instances are launched. + type: string + type: object + type: array + createPodRange: + type: boolean + enablePrivateNodes: + description: |- + Enables the private cluster feature, + creating a private endpoint on the cluster. In a private cluster, nodes only + have RFC 1918 private addresses and communicate with the master's private + endpoint via private networking. + type: boolean + networkPerformanceConfig: + properties: + totalEgressBandwidthTier: + type: string + type: object + podCidrOverprovisionConfig: + properties: + disabled: + description: |- + The status of the Istio addon, which makes it easy to set up Istio for services in a + cluster. It is disabled by default. Set disabled = false to enable. + type: boolean + type: object + podIpv4CidrBlock: + type: string + podRange: + type: string + type: object + nodeConfig: + description: Parameters used in creating the default node + pool. Structure is documented below. + properties: + advancedMachineFeatures: + description: |- + Specifies options for controlling + advanced machine features. Structure is documented below. + properties: + enableNestedVirtualization: + description: Defines whether the instance should + have nested virtualization enabled. Defaults to + false. + type: boolean + threadsPerCore: + description: The number of threads per physical + core. To disable simultaneous multithreading (SMT) + set this to 1. If unset, the maximum number of + threads supported per core by the underlying processor + is assumed. + type: number + type: object + bootDiskKmsKey: + description: 'The Customer Managed Encryption Key used + to encrypt the boot disk attached to each node in + the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. + For more information about protecting resources with + Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption' + type: string + confidentialNodes: + description: Configuration for Confidential Nodes feature. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + containerdConfig: + description: Parameters to customize containerd runtime. + Structure is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container + registries. There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects + for CA and domains. Each object identifies + a certificate and its assigned domains. See + how to configure for private container registries + for more detail. Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + diskSizeGb: + description: |- + Size of the disk attached to each node, specified + in GB. The smallest allowed disk size is 10GB. Defaults to 100GB. + type: number + diskType: + description: |- + Type of the disk attached to each node + (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard' + type: string + effectiveTaints: + description: List of kubernetes taints applied to each + node. Structure is documented above. + items: + properties: + effect: + description: Effect for taint. Accepted values + are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + enableConfidentialStorage: + description: Enabling Confidential Storage will create + boot disk with confidential mode. It is disabled by + default. + type: boolean + ephemeralStorageConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the + boot disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + ephemeralStorageLocalSsdConfig: + description: Parameters for the ephemeral storage filesystem. + If unspecified, ephemeral storage is backed by the + boot disk. Structure is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + fastSocket: + description: |- + Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool. + Node Pool must enable gvnic. + GKE version 1.25.2-gke.1700 or later. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + gcfsConfig: + description: The default Google Container Filesystem + (GCFS) configuration at the cluster level. e.g. enable + image streaming across all the node pools within the + cluster. Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + guestAccelerator: + description: |- + List of the type and count of accelerator cards attached to the instance. + Structure documented below.12 this field is an + Attribute as Block + items: + properties: + count: + description: The number of the guest accelerator + cards exposed to this instance. + type: number + gpuDriverInstallationConfig: + description: Configuration for auto installation + of GPU driver. Structure is documented below. + properties: + gpuDriverVersion: + description: |- + Mode for how the GPU driver is installed. + Accepted values are: + type: string + type: object + gpuPartitionSize: + description: Size of partitions to create on the + GPU. Valid values are described in the NVIDIA + mig user guide. + type: string + gpuSharingConfig: + description: Configuration for GPU sharing. Structure + is documented below. + properties: + gpuSharingStrategy: + description: |- + The type of GPU sharing strategy to enable on the GPU node. + Accepted values are: + type: string + maxSharedClientsPerGpu: + description: The maximum number of containers + that can share a GPU. + type: number + type: object + type: + description: The accelerator type resource to + expose to this instance. E.g. nvidia-tesla-k80. + type: string + type: object + type: array + gvnic: + description: |- + Google Virtual NIC (gVNIC) is a virtual network interface. + Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure. + gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image. + GKE node version 1.15.11-gke.15 or later + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + hostMaintenancePolicy: + description: |- + The maintenance policy to use for the cluster. Structure is + documented below. + properties: + maintenanceInterval: + type: string + type: object + imageType: + description: |- + The image type to use for this node. Note that changing the image type + will delete and recreate all nodes in the node pool. + type: string + kubeletConfig: + description: |- + Kubelet configuration, currently supported attributes can be found here. + Structure is documented below. + properties: + cpuCfsQuota: + description: |- + If true, enables CPU CFS quota enforcement for + containers that specify CPU limits. + type: boolean + cpuCfsQuotaPeriod: + description: |- + The CPU CFS quota period value. Specified + as a sequence of decimal numbers, each with optional fraction and a unit suffix, + such as "300ms". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", + "h". The value must be a positive duration. + type: string + cpuManagerPolicy: + description: |- + The CPU management policy on the node. See + K8S CPU Management Policies. + One of "none" or "static". Defaults to none when kubelet_config is unset. + type: string + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only + port is enabled. It is strongly recommended to + set this to FALSE. Possible values: TRUE, FALSE.' + type: string + podPidsLimit: + description: Controls the maximum number of processes + allowed to run in a pod. The value must be greater + than or equal to 1024 and less than 4194304. + type: number + type: object + labels: + additionalProperties: + type: string + description: |- + The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are + reserved by Kubernetes Core components and cannot be specified. + type: object + x-kubernetes-map-type: granular + linuxNodeConfig: + description: Parameters that can be configured on Linux + nodes. Structure is documented below. + properties: + cgroupMode: + description: |- + Possible cgroup modes that can be used. + Accepted values are: + type: string + sysctls: + additionalProperties: + type: string + description: |- + The Linux kernel parameters to be applied to the nodes + and all pods running on the nodes. Specified as a map from the key, such as + net.core.wmem_max, to a string value. Currently supported attributes can be found here. + Note that validations happen all server side. All attributes are optional. + type: object + x-kubernetes-map-type: granular + type: object + localNvmeSsdBlockConfig: + description: Parameters for the local NVMe SSDs. Structure + is documented below. + properties: + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + type: object + localSsdCount: + description: |- + The amount of local SSD disks that will be + attached to each cluster node. Defaults to 0. + type: number + loggingVariant: + description: The type of logging agent that is deployed + by default for newly created node pools in the cluster. + Valid values include DEFAULT and MAX_THROUGHPUT. See + Increasing logging agent throughput for more information. + type: string + machineType: + description: |- + The name of a Google Compute Engine machine type. + Defaults to e2-medium. To create a custom machine type, value should be set as specified + here. + type: string + metadata: + additionalProperties: + type: string + description: |- + The metadata key/value pairs assigned to instances in + the cluster. From GKE 1. To avoid this, set the + value in your config. + type: object + x-kubernetes-map-type: granular + minCpuPlatform: + description: |- + Minimum CPU platform to be used by this instance. + The instance may be scheduled on the specified or newer CPU platform. Applicable + values are the friendly names of CPU platforms, such as Intel Haswell. See the + official documentation + for more information. + type: string + nodeGroup: + description: Setting this field will assign instances + of this pool to run on the specified node group. This + is useful for running workloads on sole tenant nodes. + type: string + oauthScopes: + description: |- + The set of Google API scopes to be made available + on all of the node VMs under the "default" service account. + Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set service_account to a non-default service account and grant IAM roles to that service account for only the resources that it needs. + items: + type: string + type: array + x-kubernetes-list-type: set + preemptible: + description: |- + A boolean that represents whether or not the underlying node VMs + are preemptible. See the official documentation + for more information. Defaults to false. + type: boolean + reservationAffinity: + description: The configuration of the desired reservation + which instances could take capacity from. Structure + is documented below. + properties: + consumeReservationType: + description: |- + The type of reservation consumption + Accepted values are: + type: string + key: + description: Key for taint. + type: string + values: + description: name" + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + resourceLabels: + additionalProperties: + type: string + description: The GCE resource labels (a map of key/value + pairs) to be applied to the cluster. + type: object + x-kubernetes-map-type: granular + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and + values to be attached to the nodes for managing Compute + Engine firewalls using Network Firewall Policies. + Tags must be according to specifications found here. + A maximum of 5 tag key-value pairs can be specified. + Existing tags will be replaced with new values. Tags + must be in one of the following formats ([KEY]=[VALUE]) + 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} 2. + {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + sandboxConfig: + description: |- + GKE Sandbox configuration. When enabling this feature you must specify image_type = "COS_CONTAINERD" and node_version = "1.12.7-gke.17" or later to use it. + Structure is documented below. + properties: + sandboxType: + description: |- + Which sandbox to use for pods in the node pool. + Accepted values are: + type: string + type: object + secondaryBootDisks: + description: Parameters for secondary boot disks to + preload container images and data on new nodes. Structure + is documented below. gcfs_config must be enabled=true + for this feature to work. min_master_version must + also be set to use GKE 1.28.3-gke.106700 or later + versions. + items: + properties: + diskImage: + description: Path to disk image to create the + secondary boot disk from. After using the gke-disk-image-builder, + this argument should be global/images/DISK_IMAGE_NAME. + type: string + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: array + serviceAccount: + description: |- + The service account to be used by the Node VMs. + If not specified, the "default" service account is used. + type: string + shieldedInstanceConfig: + description: Shielded Instance options. Structure is + documented below. + properties: + enableIntegrityMonitoring: + description: Defines if the instance has integrity + monitoring enabled. + type: boolean + enableSecureBoot: + description: Defines if the instance has Secure + Boot enabled. + type: boolean + type: object + soleTenantConfig: + description: Allows specifying multiple node affinities + useful for running workloads on sole tenant nodes. + node_affinity structure is documented below. + properties: + nodeAffinity: + items: + properties: + key: + description: Key for taint. + type: string + operator: + description: Specifies affinity or anti-affinity. + Accepted values are "IN" or "NOT_IN" + type: string + values: + description: name" + items: + type: string + type: array + type: object + type: array + type: object + spot: + description: |- + A boolean that represents whether the underlying node VMs are spot. + See the official documentation + for more information. Defaults to false. + type: boolean + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + taint: + description: |- + A list of + Kubernetes taints + to apply to nodes. Structure is documented below. + items: + properties: + effect: + description: Effect for taint. Accepted values + are NO_SCHEDULE, PREFER_NO_SCHEDULE, and NO_EXECUTE. + type: string + key: + description: Key for taint. + type: string + value: + description: Value for taint. + type: string + type: object + type: array + workloadMetadataConfig: + description: |- + Metadata configuration to expose to workloads on the node pool. + Structure is documented below. + properties: + mode: + description: |- + How to expose the node metadata to the workload running on the node. + Accepted values are: + type: string + type: object + type: object + nodeCount: + type: number + nodeLocations: + description: |- + The list of zones in which the cluster's nodes + are located. Nodes must be in the region of their regional cluster or in the + same region as their cluster's zone for zonal clusters. If this is specified for + a zonal cluster, omit the cluster's zone. + items: + type: string + type: array + x-kubernetes-list-type: set + placementPolicy: + properties: + policyName: + description: |- + The name of the cluster, unique within the project and + location. + type: string + tpuTopology: + type: string + type: + description: The accelerator type resource to expose + to this instance. E.g. nvidia-tesla-k80. + type: string + type: object + queuedProvisioning: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + upgradeSettings: + description: Specifies the upgrade settings for NAP created + node pools. Structure is documented below. + properties: + blueGreenSettings: + description: Settings for blue-green upgrade strategy. + To be specified when strategy is set to BLUE_GREEN. + Structure is documented below. + properties: + nodePoolSoakDuration: + description: 'Time needed after draining entire + blue pool. After this period, blue pool will be + cleaned up. A duration in seconds with up to nine + fractional digits, ending with ''s''. Example: + "3.5s".' + type: string + standardRolloutPolicy: + description: green upgrade. To be specified when + strategy is set to BLUE_GREEN. Structure is documented + below. + properties: + batchNodeCount: + description: Number of blue nodes to drain in + a batch. Only one of the batch_percentage + or batch_node_count can be specified. + type: number + batchPercentage: + description: ': Percentage of the bool pool + nodes to drain in a batch. The range of this + field should be (0.0, 1.0). Only one of the + batch_percentage or batch_node_count can be + specified.' + type: number + batchSoakDuration: + description: 'Soak time after each batch gets + drained. A duration in seconds with up to + nine fractional digits, ending with ''s''. + Example: "3.5s".`.' + type: string + type: object + type: object + maxSurge: + description: The maximum number of nodes that can be + created beyond the current size of the node pool during + the upgrade process. To be used when strategy is set + to SURGE. Default is 0. + type: number + maxUnavailable: + description: The maximum number of nodes that can be + simultaneously unavailable during the upgrade process. + To be used when strategy is set to SURGE. Default + is 0. + type: number + strategy: + description: Strategy used for node pool update. Strategy + can only be one of BLUE_GREEN or SURGE. The default + is value is SURGE. + type: string + type: object + version: + type: string + type: object + type: array + nodePoolAutoConfig: + description: |- + Node pool configs that apply to auto-provisioned node pools in + autopilot clusters and + node auto-provisioning-enabled clusters. Structure is documented below. + properties: + networkTags: + description: The network tag config for the cluster's automatically + provisioned node pools. Structure is documented below. + properties: + tags: + description: |- + The list of instance tags applied to all nodes. Tags are used to identify + valid sources or targets for network firewalls. + items: + type: string + type: array + type: object + nodeKubeletConfig: + description: |- + Kubelet configuration for Autopilot clusters. Currently, only insecure_kubelet_readonly_port_enabled is supported here. + Structure is documented below. + properties: + insecureKubeletReadonlyPortEnabled: + description: 'Controls whether the kubelet read-only port + is enabled. It is strongly recommended to set this to + FALSE. Possible values: TRUE, FALSE.' + type: string + type: object + resourceManagerTags: + additionalProperties: + type: string + description: A map of resource manager tag keys and values + to be attached to the nodes for managing Compute Engine + firewalls using Network Firewall Policies. Tags must be + according to specifications found here. A maximum of 5 tag + key-value pairs can be specified. Existing tags will be + replaced with new values. Tags must be in one of the following + formats ([KEY]=[VALUE]) 1. tagKeys/{tag_key_id}=tagValues/{tag_value_id} + 2. {org_id}/{tag_key_name}={tag_value_name} 3. {project_id}/{tag_key_name}={tag_value_name}. + type: object + x-kubernetes-map-type: granular + type: object + nodePoolDefaults: + description: Default NodePool settings for the entire cluster. + These settings are overridden if specified on the specific NodePool + object. Structure is documented below. + properties: + nodeConfigDefaults: + description: Subset of NodeConfig message that has defaults. + properties: + containerdConfig: + description: Parameters to customize containerd runtime. + Structure is documented below. + properties: + privateRegistryAccessConfig: + description: 'Configuration for private container + registries. There are two fields in this config:' + properties: + certificateAuthorityDomainConfig: + description: 'List of configuration objects for + CA and domains. Each object identifies a certificate + and its assigned domains. See how to configure + for private container registries for more detail. + Example:' + items: + properties: + fqdns: + items: + type: string + type: array + gcpSecretManagerCertificateConfig: + properties: + secretUri: + type: string + type: object + type: object + type: array + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + type: object + gcfsConfig: + description: The default Google Container Filesystem (GCFS) + configuration at the cluster level. e.g. enable image + streaming across all the node pools within the cluster. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + insecureKubeletReadonlyPortEnabled: + description: 'only port is enabled for newly created node + pools in the cluster. It is strongly recommended to + set this to FALSE. Possible values: TRUE, FALSE.' + type: string + loggingVariant: + description: The type of logging agent that is deployed + by default for newly created node pools in the cluster. + Valid values include DEFAULT and MAX_THROUGHPUT. See + Increasing logging agent throughput for more information. + type: string + type: object + type: object + nodeVersion: + description: |- + The Kubernetes version on the nodes. Must either be unset + or set to the same value as min_master_version on create. Defaults to the default + version set by GKE which is not necessarily the latest version. This only affects + nodes in the default node pool. + To update nodes in other node pools, use the version attribute on the node pool. + type: string + notificationConfig: + description: Configuration for the cluster upgrade notifications + feature. Structure is documented below. + properties: + pubsub: + description: The pubsub config for the cluster's upgrade notifications. + properties: + enabled: + description: Whether or not the notification config is + enabled + type: boolean + filter: + description: Choose what type of notifications you want + to receive. If no filters are applied, you'll receive + all notification types. Structure is documented below. + properties: + eventType: + description: Can be used to filter what notifications + are sent. Accepted values are UPGRADE_AVAILABLE_EVENT, + UPGRADE_EVENT and SECURITY_BULLETIN_EVENT. See Filtering + notifications for more details. + items: + type: string + type: array + type: object + topic: + description: 'The pubsub topic to push upgrade notifications + to. Must be in the same project as the cluster. Must + be in the format: projects/{project}/topics/{topic}.' + type: string + type: object + type: object + operation: + type: string + podSecurityPolicyConfig: + description: |- + Configuration for the + PodSecurityPolicy feature. + Structure is documented below. + properties: + enabled: + description: |- + Enable the PodSecurityPolicy controller for this cluster. + If enabled, pods must be valid under a PodSecurityPolicy to be created. + type: boolean + type: object + privateClusterConfig: + description: |- + Configuration for private clusters, + clusters with private nodes. Structure is documented below. + properties: + enablePrivateEndpoint: + description: |- + When true, the cluster's private + endpoint is used as the cluster endpoint and access through the public endpoint + is disabled. When false, either endpoint can be used. This field only applies + to private clusters, when enable_private_nodes is true. + type: boolean + enablePrivateNodes: + description: |- + Enables the private cluster feature, + creating a private endpoint on the cluster. In a private cluster, nodes only + have RFC 1918 private addresses and communicate with the master's private + endpoint via private networking. + type: boolean + masterGlobalAccessConfig: + description: |- + Controls cluster master global + access settings. Structure is documented below. + properties: + enabled: + description: |- + Whether the cluster master is accessible globally or + not. + type: boolean + type: object + masterIpv4CidrBlock: + description: |- + The IP range in CIDR notation to use for + the hosted master network. This range will be used for assigning private IP + addresses to the cluster master(s) and the ILB VIP. This range must not overlap + with any other ranges in use within the cluster's network, and it must be a /28 + subnet. See Private Cluster Limitations + for more details. This field only applies to private clusters, when + enable_private_nodes is true. + type: string + peeringName: + description: The name of the peering between this cluster + and the Google owned VPC. + type: string + privateEndpoint: + description: The internal IP address of this cluster's master + endpoint. + type: string + privateEndpointSubnetwork: + description: Subnetwork in cluster's network where master's + endpoint will be provisioned. + type: string + publicEndpoint: + description: The external IP address of this cluster's master + endpoint. + type: string + type: object + privateIpv6GoogleAccess: + description: The desired state of IPv6 connectivity to Google + Services. By default, no private IPv6 access to or from Google + Services (all access will be via IPv4). + type: string + project: + description: |- + The ID of the project in which the resource belongs. If it + is not provided, the provider project is used. + type: string + protectConfig: + description: Enable/Disable Protect API features for the cluster. + Structure is documented below. + properties: + workloadConfig: + description: WorkloadConfig defines which actions are enabled + for a cluster's workload configurations. Structure is documented + below + properties: + auditMode: + description: Sets which mode of auditing should be used + for the cluster's workloads. Accepted values are DISABLED, + BASIC. + type: string + type: object + workloadVulnerabilityMode: + description: Sets which mode to use for Protect workload vulnerability + scanning feature. Accepted values are DISABLED, BASIC. + type: string + type: object + releaseChannel: + description: |- + Configuration options for the Release channel + feature, which provide more control over automatic upgrades of your GKE clusters. + When updating this field, GKE imposes specific version requirements. See + Selecting a new release channel + for more details; the google_container_engine_versions datasource can provide + the default version for a channel. Instead, use the "UNSPECIFIED" + channel. Structure is documented below. + properties: + channel: + description: |- + The selected release channel. + Accepted values are: + type: string + type: object + removeDefaultNodePool: + description: |- + If true, deletes the default node + pool upon cluster creation. If you're using google_container_node_pool + resources with no default node pool, this should be set to true, alongside + setting initial_node_count to at least 1. + type: boolean + resourceLabels: + additionalProperties: + type: string + description: The GCE resource labels (a map of key/value pairs) + to be applied to the cluster. + type: object + x-kubernetes-map-type: granular + resourceUsageExportConfig: + description: |- + Configuration for the + ResourceUsageExportConfig feature. + Structure is documented below. + properties: + bigqueryDestination: + description: Parameters for using BigQuery as the destination + of resource usage export. + properties: + datasetId: + description: 'The ID of a BigQuery Dataset. For Example:' + type: string + type: object + enableNetworkEgressMetering: + description: |- + Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created + in the cluster to meter network egress traffic. + type: boolean + enableResourceConsumptionMetering: + description: |- + Whether to enable resource + consumption metering on this cluster. When enabled, a table will be created in + the resource export BigQuery dataset to store resource consumption data. The + resulting table can be joined with the resource usage table or with BigQuery + billing export. Defaults to true. + type: boolean + type: object + secretManagerConfig: + description: |- + Configuration for the + SecretManagerConfig feature. + Structure is documented below. + properties: + enabled: + description: Enable the Secret Manager add-on for this cluster. + type: boolean + type: object + securityPostureConfig: + description: Enable/Disable Security Posture API features for + the cluster. Structure is documented below. + properties: + mode: + description: Sets the mode of the Kubernetes security posture + API's off-cluster features. Available options include DISABLED, + BASIC, and ENTERPRISE. + type: string + vulnerabilityMode: + description: Sets the mode of the Kubernetes security posture + API's workload vulnerability scanning. Available options + include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and + VULNERABILITY_ENTERPRISE. + type: string + type: object + selfLink: + description: The server-defined URL for the resource. + type: string + serviceExternalIpsConfig: + description: Structure is documented below. + properties: + enabled: + description: Controls whether external ips specified by a + service will be allowed. It is enabled by default. + type: boolean + type: object + servicesIpv4Cidr: + description: |- + The IP address range of the Kubernetes services in this + cluster, in CIDR + notation (e.g. 1.2.3.4/29). Service addresses are typically put in the last + /16 from the container CIDR. + type: string + subnetwork: + description: |- + The name or self_link of the Google Compute Engine + subnetwork in which the cluster's instances are launched. + type: string + terraformLabels: + additionalProperties: + type: string + description: The combination of labels configured directly on + the resource and default labels configured on the provider. + type: object + x-kubernetes-map-type: granular + tpuConfig: + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + ipv4CidrBlock: + type: string + useServiceNetworking: + type: boolean + type: object + tpuIpv4CidrBlock: + description: |- + The IP address range of the Cloud TPUs in this cluster, in + CIDR + notation (e.g. 1.2.3.4/29). + type: string + verticalPodAutoscaling: + description: |- + Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it. + Structure is documented below. + properties: + enabled: + description: Enables vertical pod autoscaling + type: boolean + type: object + workloadAltsConfig: + description: Configuration for direct-path (via ALTS) with workload + identity.. Structure is documented below. + properties: + enableAlts: + description: Whether the alts handshaker should be enabled + or not for direct-path. Requires Workload Identity (workloadPool + must be non-empty). + type: boolean + type: object + workloadIdentityConfig: + description: |- + Workload Identity allows Kubernetes service accounts to act as a user-managed + Google IAM Service Account. + Structure is documented below. + properties: + workloadPool: + description: The workload pool to attach all Kubernetes service + accounts to. + type: string + type: object + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: |- + LastTransitionTime is the last time this condition transitioned from one + status to another. + format: date-time + type: string + message: + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. + type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: |- + Type of this condition. At most one of each condition type may apply to + a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: false + subresources: + status: {}