diff --git a/internal/resources/oncall/resource_integration.go b/internal/resources/oncall/resource_integration.go index 01ecf21f3..8d2172cd2 100644 --- a/internal/resources/oncall/resource_integration.go +++ b/internal/resources/oncall/resource_integration.go @@ -204,6 +204,10 @@ func ResourceIntegration() *schema.Resource { MaxItems: 1, Description: "Jinja2 templates for Alert payload. An empty templates block will be ignored.", DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool { + if old != "" && new == "" || old == "" && new != "" { + return false + } + oldTemplate, newTemplate := d.GetChange("templates") getTemplatesOrEmpty := func(template interface{}) map[string]interface{} { @@ -218,7 +222,7 @@ func ResourceIntegration() *schema.Resource { return false } for k, v := range oldTemplateMap { - if newTemplateMap[k] != v { + if fmt.Sprintf("%v", newTemplateMap[k]) != fmt.Sprintf("%v", v) { return false } } diff --git a/internal/resources/oncall/resource_integration_test.go b/internal/resources/oncall/resource_integration_test.go index 4b8cb7b52..e49c52736 100644 --- a/internal/resources/oncall/resource_integration_test.go +++ b/internal/resources/oncall/resource_integration_test.go @@ -29,6 +29,7 @@ func TestAccOnCallIntegration_basic(t *testing.T) { resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "name", rName), resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "type", rType), resource.TestCheckResourceAttrSet("grafana_oncall_integration.test-acc-integration", "link"), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "templates.#", "0"), ), }, { @@ -38,6 +39,7 @@ func TestAccOnCallIntegration_basic(t *testing.T) { resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "name", rName), resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "type", rType), resource.TestCheckResourceAttrSet("grafana_oncall_integration.test-acc-integration", "link"), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "templates.#", "0"), ), }, { @@ -49,9 +51,21 @@ func TestAccOnCallIntegration_basic(t *testing.T) { resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "name", rName), resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "type", rType), resource.TestCheckResourceAttrSet("grafana_oncall_integration.test-acc-integration", "link"), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "templates.#", "1"), resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "templates.0.grouping_key", "test"), ), }, + // Remove templates + { + Config: testAccOnCallIntegrationConfig(rName, rType, ``), + Check: resource.ComposeTestCheckFunc( + testAccCheckOnCallIntegrationResourceExists("grafana_oncall_integration.test-acc-integration"), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "name", rName), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "type", rType), + resource.TestCheckResourceAttrSet("grafana_oncall_integration.test-acc-integration", "link"), + resource.TestCheckResourceAttr("grafana_oncall_integration.test-acc-integration", "templates.#", "0"), + ), + }, }, }) }