@@ -2,12 +2,18 @@ package datadog
2
2
3
3
import (
4
4
"fmt"
5
+ "sync"
6
+
5
7
"github.com/terraform-providers/terraform-provider-datadog/datadog/internal/utils"
6
8
7
9
datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog"
8
10
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
9
11
)
10
12
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
+
11
17
func resourceDatadogIntegrationSlackChannel () * schema.Resource {
12
18
return & schema.Resource {
13
19
Description : "Resource for interacting with the Datadog Slack channel API" ,
@@ -94,6 +100,9 @@ func resourceDatadogIntegrationSlackChannelCreate(d *schema.ResourceData, meta i
94
100
datadogClient := providerConf .DatadogClientV1
95
101
auth := providerConf .AuthV1
96
102
103
+ integrationSlackChannelMutex .Lock ()
104
+ defer integrationSlackChannelMutex .Unlock ()
105
+
97
106
ddSlackChannel , err := buildDatadogSlackChannel (d )
98
107
accountName := d .Get ("account_name" ).(string )
99
108
@@ -133,6 +142,9 @@ func resourceDatadogIntegrationSlackChannelUpdate(d *schema.ResourceData, meta i
133
142
datadogClient := providerConf .DatadogClientV1
134
143
auth := providerConf .AuthV1
135
144
145
+ integrationSlackChannelMutex .Lock ()
146
+ defer integrationSlackChannelMutex .Unlock ()
147
+
136
148
ddObject , err := buildDatadogSlackChannel (d )
137
149
accountName , channelName , err := utils .AccountNameAndChannelNameFromID (d .Id ())
138
150
if err != nil {
@@ -155,6 +167,9 @@ func resourceDatadogIntegrationSlackChannelDelete(d *schema.ResourceData, meta i
155
167
datadogClient := providerConf .DatadogClientV1
156
168
auth := providerConf .AuthV1
157
169
170
+ integrationSlackChannelMutex .Lock ()
171
+ defer integrationSlackChannelMutex .Unlock ()
172
+
158
173
accountName , channelName , err := utils .AccountNameAndChannelNameFromID (d .Id ())
159
174
if err != nil {
160
175
return err
0 commit comments