@@ -2,12 +2,18 @@ package datadog
22
33import (
44 "fmt"
5+ "sync"
6+
57 "github.com/terraform-providers/terraform-provider-datadog/datadog/internal/utils"
68
79 datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog"
810 "github.com/hashicorp/terraform-plugin-sdk/helper/schema"
911)
1012
13+ // creating/modifying/deleting Slack Channel integration in parallel on one account
14+ // is unsupported by the API right now; therefore we use the mutex to only operate on one at a time
15+ var integrationSlackChannelMutex = sync.Mutex {}
16+
1117func resourceDatadogIntegrationSlackChannel () * schema.Resource {
1218 return & schema.Resource {
1319 Description : "Resource for interacting with the Datadog Slack channel API" ,
@@ -94,6 +100,9 @@ func resourceDatadogIntegrationSlackChannelCreate(d *schema.ResourceData, meta i
94100 datadogClient := providerConf .DatadogClientV1
95101 auth := providerConf .AuthV1
96102
103+ integrationSlackChannelMutex .Lock ()
104+ defer integrationSlackChannelMutex .Unlock ()
105+
97106 ddSlackChannel , err := buildDatadogSlackChannel (d )
98107 accountName := d .Get ("account_name" ).(string )
99108
@@ -133,6 +142,9 @@ func resourceDatadogIntegrationSlackChannelUpdate(d *schema.ResourceData, meta i
133142 datadogClient := providerConf .DatadogClientV1
134143 auth := providerConf .AuthV1
135144
145+ integrationSlackChannelMutex .Lock ()
146+ defer integrationSlackChannelMutex .Unlock ()
147+
136148 ddObject , err := buildDatadogSlackChannel (d )
137149 accountName , channelName , err := utils .AccountNameAndChannelNameFromID (d .Id ())
138150 if err != nil {
@@ -155,6 +167,9 @@ func resourceDatadogIntegrationSlackChannelDelete(d *schema.ResourceData, meta i
155167 datadogClient := providerConf .DatadogClientV1
156168 auth := providerConf .AuthV1
157169
170+ integrationSlackChannelMutex .Lock ()
171+ defer integrationSlackChannelMutex .Unlock ()
172+
158173 accountName , channelName , err := utils .AccountNameAndChannelNameFromID (d .Id ())
159174 if err != nil {
160175 return err
0 commit comments