Skip to content

Commit

Permalink
No pdcsi disable on create (#9557)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattcary authored Dec 13, 2023
1 parent 06405ce commit f8feaf0
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2381,11 +2381,28 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
cluster.SecurityPostureConfig = expandSecurityPostureConfig(v)
}

needUpdateAfterCreate := false

// For now PSC based cluster don't support `enable_private_endpoint` on `create`, but only on `update` API call.
// If cluster is PSC based and enable_private_endpoint is set to true we will ignore it on `create` call and update cluster right after creation.
enablePrivateEndpointPSCCluster := isEnablePrivateEndpointPSCCluster(cluster)
if enablePrivateEndpointPSCCluster {
cluster.PrivateClusterConfig.EnablePrivateEndpoint = false
needUpdateAfterCreate = true
}

enablePDCSI := isEnablePDCSI(cluster);
if !enablePDCSI {
// GcePersistentDiskCsiDriver cannot be disabled at cluster create, only on cluster update. Ignore on create then update after creation.
// If pdcsi is disabled, the config should be defined. But we will be paranoid and double-check.
needUpdateAfterCreate = true
if cluster.AddonsConfig == nil {
cluster.AddonsConfig = &container.AddonsConfig{}
}
if cluster.AddonsConfig.GcePersistentDiskCsiDriverConfig == nil {
cluster.AddonsConfig.GcePersistentDiskCsiDriverConfig = &container.GcePersistentDiskCsiDriverConfig{}
}
cluster.AddonsConfig.GcePersistentDiskCsiDriverConfig.Enabled = true
}

req := &container.CreateClusterRequest{
Expand Down Expand Up @@ -2472,14 +2489,22 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
}
}

if enablePrivateEndpointPSCCluster {
if needUpdateAfterCreate {
name := containerClusterFullName(project, location, clusterName)
req := &container.UpdateClusterRequest{
Update: &container.ClusterUpdate{
DesiredEnablePrivateEndpoint: true,
ForceSendFields: []string{"DesiredEnablePrivateEndpoint"},
},
update := &container.ClusterUpdate{}
if enablePrivateEndpointPSCCluster {
update.DesiredEnablePrivateEndpoint = true
update.ForceSendFields = append(update.ForceSendFields, "DesiredEnablePrivateEndpoint");
}
if !enablePDCSI {
update.DesiredAddonsConfig = &container.AddonsConfig{
GcePersistentDiskCsiDriverConfig: &container.GcePersistentDiskCsiDriverConfig{
Enabled: false,
},
}
update.ForceSendFields = append(update.ForceSendFields, "DesiredAddonsConfig.GcePersistentDiskCsiDriverConfig.Enabled");
}
req := &container.UpdateClusterRequest{Update: update}

err = transport_tpg.Retry(transport_tpg.RetryOptions{
RetryFunc: func() error {
Expand All @@ -2492,12 +2517,12 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
},
})
if err != nil {
return errwrap.Wrapf("Error updating enable private endpoint: {{err}}", err)
return errwrap.Wrapf(fmt.Sprintf("Error updating cluster for %v: {{err}}", update.ForceSendFields), err)
}

err = ContainerOperationWait(config, op, project, location, "updating enable private endpoint", userAgent, d.Timeout(schema.TimeoutCreate))
if err != nil {
return errwrap.Wrapf("Error while waiting to enable private endpoint: {{err}}", err)
return errwrap.Wrapf(fmt.Sprintf("Error while waiting on cluster update for %v: {{err}}", update.ForceSendFields), err)
}
}

Expand Down Expand Up @@ -4946,6 +4971,13 @@ func isEnablePrivateEndpointPSCCluster(cluster *container.Cluster) bool {
return false
}

func isEnablePDCSI(cluster *container.Cluster) bool {
if cluster.AddonsConfig == nil || cluster.AddonsConfig.GcePersistentDiskCsiDriverConfig == nil {
return true; // PDCSI is enabled by default.
}
return cluster.AddonsConfig.GcePersistentDiskCsiDriverConfig.Enabled
}

func expandPrivateClusterConfig(configured interface{}) *container.PrivateClusterConfig {
l := configured.([]interface{})
if len(l) == 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ func TestAccContainerCluster_misc(t *testing.T) {
}

func TestAccContainerCluster_withAddons(t *testing.T) {
t.Skipf("Skipping test %s due to https://github.com/hashicorp/terraform-provider-google/issues/16114", t.Name())
t.Parallel()

clusterName := fmt.Sprintf("tf-test-cluster-%s", acctest.RandString(t, 10))
Expand Down Expand Up @@ -4803,6 +4802,7 @@ resource "google_container_cluster" "primary" {
enabled = true
}
<% end -%>
}
deletion_protection = false
network = "%s"
subnetwork = "%s"
Expand Down

0 comments on commit f8feaf0

Please sign in to comment.