Skip to content

Commit 10eb232

Browse files
committed
Add edge gateway locking to support 'concurrent' creations
1 parent b668811 commit 10eb232

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

vcd/resource_vcd_nsxt_firewall_rule.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,13 @@ func resourceVcdNsxtFirewallRuleCreate(ctx context.Context, d *schema.ResourceDa
159159
return diag.Errorf("error retrieving Edge Gateway: %s", err)
160160
}
161161

162+
unlock, err := vcdClient.lockParentVdcGroupOrEdgeGateway(d)
163+
if err != nil {
164+
return diag.Errorf("[edge firewall rule create] %s", err)
165+
}
166+
167+
defer unlock()
168+
162169
rule := getNsxtFirewallRuleFromSchema(d)
163170

164171
endpoint, err := vcdClient.Client.OpenApiBuildEndpoint(fmt.Sprintf("%sedgeGateways/%s/firewall/rules/", types.OpenApiPathVersion2_0_0, edgeGatewayId))
@@ -228,6 +235,14 @@ func resourceVcdNsxtFirewallRuleUpdate(ctx context.Context, d *schema.ResourceDa
228235
if err != nil {
229236
return diag.Errorf("error retrieving Edge Gateway: %s", err)
230237
}
238+
239+
unlock, err := vcdClient.lockParentVdcGroupOrEdgeGateway(d)
240+
if err != nil {
241+
return diag.Errorf("[edge firewall rule update] %s", err)
242+
}
243+
244+
defer unlock()
245+
231246
rule := getNsxtFirewallRuleFromSchema(d)
232247
rule.ID = ruleId
233248

@@ -269,6 +284,13 @@ func resourceVcdNsxtFirewallRuleDelete(_ context.Context, d *schema.ResourceData
269284
return diag.Errorf("error retrieving Edge Gateway: %s", err)
270285
}
271286

287+
unlock, err := vcdClient.lockParentVdcGroupOrEdgeGateway(d)
288+
if err != nil {
289+
return diag.Errorf("[edge firewall rule delete] %s", err)
290+
}
291+
292+
defer unlock()
293+
272294
endpoint, err := vcdClient.Client.OpenApiBuildEndpoint(fmt.Sprintf("%sedgeGateways/%s/firewall/rules/%s", types.OpenApiPathVersion2_0_0, edgeGatewayId, ruleId))
273295
minimumApiVersion := "39.1"
274296
if err != nil {

0 commit comments

Comments
 (0)