@@ -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 ("[nsx-t nat 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 ("[nsx-t nat rule create] %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 ("[nsx-t nat rule create] %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