From a3384ef765b393990a74086099afb3daebe2b9c8 Mon Sep 17 00:00:00 2001 From: Alexander Mingoia Date: Wed, 3 Dec 2025 19:56:09 -0800 Subject: [PATCH 1/5] Fix communications group conditions and add test coverage --- provider/resource_communications_group.go | 24 -- .../resource_communications_group_test.go | 263 ++++++++++++++++++ tools/generate-provider-tpl.js | 2 + tools/generate.js | 2 + 4 files changed, 267 insertions(+), 24 deletions(-) create mode 100644 provider/resource_communications_group_test.go diff --git a/provider/resource_communications_group.go b/provider/resource_communications_group.go index fffb0d6f..b9415996 100644 --- a/provider/resource_communications_group.go +++ b/provider/resource_communications_group.go @@ -237,28 +237,6 @@ func resourceCommunicationsGroup() *schema.Resource { WriteOnly: false, Description: "User ID", }, - - "name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Required: false, - Optional: true, - Sensitive: false, - ForceNew: false, - WriteOnly: false, - Description: "Name of the group member", - }, - - "email": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Required: false, - Optional: true, - Sensitive: false, - ForceNew: false, - WriteOnly: false, - Description: "Email of the group member", - }, }, }, }, @@ -434,8 +412,6 @@ func resourceCommunicationsGroupRead(ctx context.Context, d *schema.ResourceData processed_item_communication_group_members := map[string]interface{}{ "id": rawItem["id"], "user_id": rawItem["user_id"], - "name": rawItem["name"], - "email": rawItem["email"], } processed_items_communication_group_members = append(processed_items_communication_group_members, processed_item_communication_group_members) } diff --git a/provider/resource_communications_group_test.go b/provider/resource_communications_group_test.go new file mode 100644 index 00000000..6768c26a --- /dev/null +++ b/provider/resource_communications_group_test.go @@ -0,0 +1,263 @@ +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccResourceCommunicationsGroup(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + IsUnitTest: false, + PreCheck: func() { + testAccPreCheck(t) + }, + ProviderFactories: providerFactories, + Steps: []resource.TestStep{ + { + Config: testAccResourceCommunicationsGroupCreate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("rootly_communications_group.test", "name", "TF test group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "condition_type", "any"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.condition", "is"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.property_type", "service"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.0.name", "TF test service 1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.1.name", "TF test service 2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.2.name", "TF test service 3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.condition", "is"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.property_type", "group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.properties.0.name", "TF test group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.#", "3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.email", "test-bot+1@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.name", "test-bot+1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.email", "test-bot+2@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.name", "test-bot+2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.2.email", "test-bot+3@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.2.name", "test-bot+3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_members.#", "4"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.0.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.1.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.2.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.3.user_id"), + ), + }, + { + Config: testAccResourceCommunicationsGroupUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("rootly_communications_group.test", "name", "TF test group (updated)"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "condition_type", "all"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.condition", "is"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.property_type", "service"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.#", "2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.0.name", "TF test service 2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.0.properties.1.name", "TF test service 3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.condition", "is"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.property_type", "group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.properties.0.name", "TF test group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.#", "2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.email", "test-bot+3@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.name", "test-bot+3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.email", "test-bot+5@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.name", "test-bot+5"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_members.#", "3"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.0.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.1.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.2.user_id"), + ), + }, + }, + }) +} + +const testAccResourceCommunicationsGroupCreate = ` + data rootly_user test1 { + email = "bot-tftests+1@rootly.com" + } + + data rootly_user test2 { + email = "bot-tftests+2@rootly.com" + } + + data rootly_user test3 { + email = "bot-tftests+3@rootly.com" + } + + data rootly_user test4 { + email = "bot-tftests+4@rootly.com" + } + + resource rootly_service test1 { + name = "TF test service 1" + } + + resource rootly_service test2 { + name = "TF test service 2" + } + + resource rootly_service test3 { + name = "TF test service 3" + } + + resource rootly_team test { + name = "TF test group" + } + + resource rootly_communications_type test { + name = "TF test type" + color = "#FFFFFF" + } + + resource rootly_communications_group test { + name = "TF test group" + communication_type_id = rootly_communications_type.test.id + email_channel = true + condition_type = "any" + + communication_group_conditions { + condition = "is" + properties { + id = rootly_service.test1.id + name = rootly_service.test1.name + } + properties { + id = rootly_service.test2.id + name = rootly_service.test2.name + } + properties { + id = rootly_service.test3.id + name = rootly_service.test3.name + } + property_type = "service" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_team.test.id + name = rootly_team.test.name + } + property_type = "group" + } + + communication_external_group_members { + email = "test-bot+1@rootly.com" + name = "test-bot+1" + } + + communication_external_group_members { + email = "test-bot+2@rootly.com" + name = "test-bot+2" + } + + communication_external_group_members { + email = "test-bot+3@rootly.com" + name = "test-bot+3" + } + + communication_group_members { + user_id = data.rootly_user.test1.id + } + + communication_group_members { + user_id = data.rootly_user.test2.id + } + + communication_group_members { + user_id = data.rootly_user.test3.id + } + + communication_group_members { + user_id = data.rootly_user.test4.id + } + } +` + +const testAccResourceCommunicationsGroupUpdate = ` + data rootly_user test1 { + email = "bot-tftests+1@rootly.com" + } + + data rootly_user test2 { + email = "bot-tftests+2@rootly.com" + } + + data rootly_user test3 { + email = "bot-tftests+3@rootly.com" + } + + data rootly_user test4 { + email = "bot-tftests+4@rootly.com" + } + + resource rootly_service test1 { + name = "TF test service 1" + } + + resource rootly_service test2 { + name = "TF test service 2" + } + + resource rootly_service test3 { + name = "TF test service 3" + } + + resource rootly_team test { + name = "TF test group" + } + + resource rootly_communications_type test { + name = "TF test type" + color = "#FFFFFF" + } + + resource rootly_communications_group test { + name = "TF test group (updated)" + communication_type_id = rootly_communications_type.test.id + email_channel = true + condition_type = "all" + + communication_group_conditions { + condition = "is" + properties { + id = rootly_service.test2.id + name = rootly_service.test2.name + } + properties { + id = rootly_service.test3.id + name = rootly_service.test3.name + } + property_type = "service" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_team.test.id + name = rootly_team.test.name + } + property_type = "group" + } + + communication_external_group_members { + email = "test-bot+3@rootly.com" + name = "test-bot+3" + } + + communication_external_group_members { + email = "test-bot+5@rootly.com" + name = "test-bot+5" + } + + communication_group_members { + user_id = data.rootly_user.test1.id + } + + communication_group_members { + user_id = data.rootly_user.test3.id + } + + communication_group_members { + user_id = data.rootly_user.test4.id + } + } +` diff --git a/tools/generate-provider-tpl.js b/tools/generate-provider-tpl.js index 6c1090d3..554a9651 100644 --- a/tools/generate-provider-tpl.js +++ b/tools/generate-provider-tpl.js @@ -57,6 +57,7 @@ ${dataSources "rootly_custom_field": dataSourceCustomField(), "rootly_custom_field_option": dataSourceCustomFieldOption(), "rootly_causes": dataSourceCauses(), + "rootly_communications_group": dataSourceCommunicationsGroup(), "rootly_custom_fields": dataSourceCustomFields(), "rootly_custom_field_options": dataSourceCustomFieldOptions(), "rootly_environments": dataSourceEnvironments(), @@ -78,6 +79,7 @@ ${resources }) .join("\n")} "rootly_alerts_source": resourceAlertsSource(), + "rootly_communications_group": resourceCommunicationsGroup(), "rootly_custom_field": resourceCustomField(), "rootly_custom_field_option": resourceCustomFieldOption(), "rootly_dashboard": resourceDashboard(), diff --git a/tools/generate.js b/tools/generate.js index 59a57c0a..275d12e1 100644 --- a/tools/generate.js +++ b/tools/generate.js @@ -21,6 +21,7 @@ const excluded = { "catalog_field", "catalog_entity", "catalog_entity_property", + "communications_group", "custom_field_option", "custom_field", "dashboard", @@ -55,6 +56,7 @@ const excluded = { "catalog_field", "catalog_entity", "catalog_entity_property", + "communications_group", "custom_field_option", "custom_field", "dashboard", From a3b4caec28e99b6c7d6b94616270fda628cde056 Mon Sep 17 00:00:00 2001 From: Alexander Mingoia Date: Wed, 3 Dec 2025 21:19:07 -0800 Subject: [PATCH 2/5] Add additional tests --- .../resource_communications_group_test.go | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/provider/resource_communications_group_test.go b/provider/resource_communications_group_test.go index 6768c26a..ead970c6 100644 --- a/provider/resource_communications_group_test.go +++ b/provider/resource_communications_group_test.go @@ -27,6 +27,12 @@ func TestAccResourceCommunicationsGroup(t *testing.T) { resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.condition", "is"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.property_type", "group"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.properties.0.name", "TF test group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.2.property_type", "severity"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.2.properties.0.name", "TF test severity 1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.3.property_type", "functionality"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.3.properties.0.name", "TF test functionality 1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.4.property_type", "incident_type"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.4.properties.0.name", "TF test incident type 1"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.#", "3"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.email", "test-bot+1@rootly.com"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.name", "test-bot+1"), @@ -54,6 +60,12 @@ func TestAccResourceCommunicationsGroup(t *testing.T) { resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.condition", "is"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.property_type", "group"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.1.properties.0.name", "TF test group"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.2.property_type", "severity"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.2.properties.0.name", "TF test severity 1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.3.property_type", "functionality"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.3.properties.0.name", "TF test functionality 1"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.4.property_type", "incident_type"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.4.properties.0.name", "TF test incident type 1"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.#", "2"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.email", "test-bot+3@rootly.com"), resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.name", "test-bot+3"), @@ -98,6 +110,18 @@ const testAccResourceCommunicationsGroupCreate = ` name = "TF test service 3" } + resource rootly_severity test1 { + name = "TF test severity 1" + } + + resource rootly_functionality test1 { + name = "TF test functionality 1" + } + + resource rootly_incident_type test1 { + name = "TF test incident type 1" + } + resource rootly_team test { name = "TF test group" } @@ -139,6 +163,33 @@ const testAccResourceCommunicationsGroupCreate = ` property_type = "group" } + communication_group_conditions { + condition = "is" + properties { + id = rootly_severity.test1.id + name = rootly_severity.test1.name + } + property_type = "severity" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_functionality.test1.id + name = rootly_functionality.test1.name + } + property_type = "functionality" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_incident_type.test1.id + name = rootly_incident_type.test1.name + } + property_type = "incident_type" + } + communication_external_group_members { email = "test-bot+1@rootly.com" name = "test-bot+1" @@ -201,6 +252,18 @@ const testAccResourceCommunicationsGroupUpdate = ` name = "TF test service 3" } + resource rootly_severity test1 { + name = "TF test severity 1" + } + + resource rootly_functionality test1 { + name = "TF test functionality 1" + } + + resource rootly_incident_type test1 { + name = "TF test incident type 1" + } + resource rootly_team test { name = "TF test group" } @@ -238,6 +301,33 @@ const testAccResourceCommunicationsGroupUpdate = ` property_type = "group" } + communication_group_conditions { + condition = "is" + properties { + id = rootly_severity.test1.id + name = rootly_severity.test1.name + } + property_type = "severity" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_functionality.test1.id + name = rootly_functionality.test1.name + } + property_type = "functionality" + } + + communication_group_conditions { + condition = "is" + properties { + id = rootly_incident_type.test1.id + name = rootly_incident_type.test1.name + } + property_type = "incident_type" + } + communication_external_group_members { email = "test-bot+3@rootly.com" name = "test-bot+3" From 736ce15e35ae3cbca39dc06c4c5789cdc10665bd Mon Sep 17 00:00:00 2001 From: Alexander Mingoia Date: Wed, 3 Dec 2025 21:38:47 -0800 Subject: [PATCH 3/5] Add validation for communication channel to communications group --- provider/resource_communications_group.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/provider/resource_communications_group.go b/provider/resource_communications_group.go index b9415996..b713c11f 100644 --- a/provider/resource_communications_group.go +++ b/provider/resource_communications_group.go @@ -24,6 +24,20 @@ func resourceCommunicationsGroup() *schema.Resource { Importer: &schema.ResourceImporter{ StateContext: schema.ImportStatePassthroughContext, }, + CustomizeDiff: func(ctx context.Context, d *schema.ResourceDiff, meta interface{}) error { + emailChannel, emailSet := d.GetOk("email_channel") + smsChannel, smsSet := d.GetOk("sms_channel") + + // Check if at least one channel is explicitly set to true + hasEmailChannel := emailSet && emailChannel.(bool) + hasSmsChannel := smsSet && smsChannel.(bool) + + if !hasEmailChannel && !hasSmsChannel { + return fmt.Errorf("at least one of 'email_channel' or 'sms_channel' must be set to true") + } + + return nil + }, Schema: map[string]*schema.Schema{ "name": &schema.Schema{ From 48c2df0fc72773b47cd1511dece33da05522c750 Mon Sep 17 00:00:00 2001 From: Alexander Mingoia Date: Wed, 3 Dec 2025 21:56:32 -0800 Subject: [PATCH 4/5] Test remove conditions from communications group --- .../resource_communications_group_test.go | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/provider/resource_communications_group_test.go b/provider/resource_communications_group_test.go index ead970c6..84ee74db 100644 --- a/provider/resource_communications_group_test.go +++ b/provider/resource_communications_group_test.go @@ -77,6 +77,23 @@ func TestAccResourceCommunicationsGroup(t *testing.T) { resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.2.user_id"), ), }, + { + Config: testAccResourceCommunicationsGroupUpdateRemoveConditions, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("rootly_communications_group.test", "name", "TF test group (updated removed conditions)"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "condition_type", "all"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_conditions.#", "0"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.#", "2"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.email", "test-bot+3@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.0.name", "test-bot+3"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.email", "test-bot+5@rootly.com"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_external_group_members.1.name", "test-bot+5"), + resource.TestCheckResourceAttr("rootly_communications_group.test", "communication_group_members.#", "3"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.0.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.1.user_id"), + resource.TestCheckResourceAttrSet("rootly_communications_group.test", "communication_group_members.2.user_id"), + ), + }, }, }) } @@ -351,3 +368,83 @@ const testAccResourceCommunicationsGroupUpdate = ` } } ` + +const testAccResourceCommunicationsGroupUpdateRemoveConditions = ` + data rootly_user test1 { + email = "bot-tftests+1@rootly.com" + } + + data rootly_user test2 { + email = "bot-tftests+2@rootly.com" + } + + data rootly_user test3 { + email = "bot-tftests+3@rootly.com" + } + + data rootly_user test4 { + email = "bot-tftests+4@rootly.com" + } + + resource rootly_service test1 { + name = "TF test service 1" + } + + resource rootly_service test2 { + name = "TF test service 2" + } + + resource rootly_service test3 { + name = "TF test service 3" + } + + resource rootly_severity test1 { + name = "TF test severity 1" + } + + resource rootly_functionality test1 { + name = "TF test functionality 1" + } + + resource rootly_incident_type test1 { + name = "TF test incident type 1" + } + + resource rootly_team test { + name = "TF test group" + } + + resource rootly_communications_type test { + name = "TF test type" + color = "#FFFFFF" + } + + resource rootly_communications_group test { + name = "TF test group (updated removed conditions)" + communication_type_id = rootly_communications_type.test.id + email_channel = true + condition_type = "all" + + communication_external_group_members { + email = "test-bot+3@rootly.com" + name = "test-bot+3" + } + + communication_external_group_members { + email = "test-bot+5@rootly.com" + name = "test-bot+5" + } + + communication_group_members { + user_id = data.rootly_user.test1.id + } + + communication_group_members { + user_id = data.rootly_user.test3.id + } + + communication_group_members { + user_id = data.rootly_user.test4.id + } + } +` From 12e787d081d804d734443fb1902250eb7cc54469 Mon Sep 17 00:00:00 2001 From: Alexander Mingoia Date: Wed, 3 Dec 2025 22:17:15 -0800 Subject: [PATCH 5/5] Update docs [skip ci] --- client/communications_groups.go | 2 -- docs/resources/communications_group.md | 2 -- provider/resource_communications_group.go | 2 -- 3 files changed, 6 deletions(-) diff --git a/client/communications_groups.go b/client/communications_groups.go index 8d6af803..9e86fb75 100644 --- a/client/communications_groups.go +++ b/client/communications_groups.go @@ -1,5 +1,3 @@ -// DO NOT MODIFY: This file is generated by tools/generate.js. Any changes will be overwritten during the next build. - package client import ( diff --git a/docs/resources/communications_group.md b/docs/resources/communications_group.md index c32e2c7c..53676cd1 100644 --- a/docs/resources/communications_group.md +++ b/docs/resources/communications_group.md @@ -71,9 +71,7 @@ Optional: Optional: -- `email` (String) Email of the group member - `id` (String) ID of the group member -- `name` (String) Name of the group member - `user_id` (Number) User ID ## Import diff --git a/provider/resource_communications_group.go b/provider/resource_communications_group.go index b713c11f..c0b63ec7 100644 --- a/provider/resource_communications_group.go +++ b/provider/resource_communications_group.go @@ -1,5 +1,3 @@ -// DO NOT MODIFY: This file is generated by tools/generate.js. Any changes will be overwritten during the next build. - package provider import (