diff --git a/.changelog/5156.txt b/.changelog/5156.txt new file mode 100644 index 00000000000..c30ac63e832 --- /dev/null +++ b/.changelog/5156.txt @@ -0,0 +1,3 @@ +```release-note:bug +Container: fixed a bug in failing to remove `maintenance_exclusion` on `google_container_cluster` +``` diff --git a/google/resource_container_cluster.go b/google/resource_container_cluster.go index 2f8f203ce9f..bc1c0999e02 100644 --- a/google/resource_container_cluster.go +++ b/google/resource_container_cluster.go @@ -2622,7 +2622,7 @@ func expandMaintenancePolicy(d *schema.ResourceData, meta interface{}) *containe } maintenancePolicy := l[0].(map[string]interface{}) - if maintenanceExclusions, ok := maintenancePolicy["maintenance_exclusion"]; ok && len(maintenanceExclusions.(*schema.Set).List()) > 0 { + if maintenanceExclusions, ok := maintenancePolicy["maintenance_exclusion"]; ok { for k := range exclusions { delete(exclusions, k) } diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 44ab1ec7d17..56952059804 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -1129,6 +1129,47 @@ func TestAccContainerCluster_withMaintenanceExclusionWindow(t *testing.T) { }) } +func TestAccContainerCluster_deleteExclusionWindow(t *testing.T) { + t.Parallel() + cluster := fmt.Sprintf("tf-test-cluster-%s", randString(t, 10)) + resourceName := "google_container_cluster.with_maintenance_exclusion_window" + + vcrTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckContainerClusterDestroyProducer(t), + Steps: []resource.TestStep{ + { + Config: testAccContainerCluster_withExclusion_DailyMaintenanceWindow(cluster, "2020-01-01T00:00:00Z", "2020-01-02T00:00:00Z"), + }, + { + ResourceName: resourceName, + ImportStateIdPrefix: "us-central1-a/", + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccContainerCluster_withExclusion_RecurringMaintenanceWindow(cluster, "2019-01-01T00:00:00Z", "2019-01-02T00:00:00Z", "2019-05-01T00:00:00Z", "2019-05-02T00:00:00Z"), + }, + { + ResourceName: resourceName, + ImportStateIdPrefix: "us-central1-a/", + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccContainerCluster_withExclusion_NoMaintenanceWindow(cluster, "2020-01-01T00:00:00Z", "2020-01-02T00:00:00Z"), + }, + { + ResourceName: resourceName, + ImportStateIdPrefix: "us-central1-a/", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func TestAccContainerCluster_withIPAllocationPolicy_existingSecondaryRanges(t *testing.T) { t.Parallel() @@ -2844,6 +2885,25 @@ resource "google_container_cluster" "with_maintenance_exclusion_window" { `, clusterName, w1startTime, w1endTime, w1startTime, w1endTime, w2startTime, w2endTime) } +func testAccContainerCluster_withExclusion_NoMaintenanceWindow(clusterName string, w1startTime, w1endTime string) string { + + return fmt.Sprintf(` +resource "google_container_cluster" "with_maintenance_exclusion_window" { + name = "%s" + location = "us-central1-a" + initial_node_count = 1 + + maintenance_policy { + recurring_window { + start_time = "%s" + end_time = "%s" + recurrence = "FREQ=DAILY" + } + } +} +`, clusterName, w1startTime, w1endTime) +} + func testAccContainerCluster_withExclusion_DailyMaintenanceWindow(clusterName string, w1startTime, w1endTime string) string { return fmt.Sprintf(`