Skip to content

Commit 3492116

Browse files
Finish converting ACM resources to use policy mutex lock (#12735) (#9055)
[upstream:c389029c67698d34a46bc388404d5c3e322db613] Signed-off-by: Modular Magician <[email protected]>
1 parent b164e69 commit 3492116

23 files changed

+343
-15
lines changed

.changelog/12735.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:none
2+
3+
```

google-beta/services/accesscontextmanager/resource_access_context_manager_access_level.go

+21
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,13 @@ func resourceAccessContextManagerAccessLevelCreate(d *schema.ResourceData, meta
375375
return err
376376
}
377377

378+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
379+
if err != nil {
380+
return err
381+
}
382+
transport_tpg.MutexStore.Lock(lockName)
383+
defer transport_tpg.MutexStore.Unlock(lockName)
384+
378385
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{parent}}/accessLevels")
379386
if err != nil {
380387
return err
@@ -530,6 +537,13 @@ func resourceAccessContextManagerAccessLevelUpdate(d *schema.ResourceData, meta
530537
return err
531538
}
532539

540+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
541+
if err != nil {
542+
return err
543+
}
544+
transport_tpg.MutexStore.Lock(lockName)
545+
defer transport_tpg.MutexStore.Unlock(lockName)
546+
533547
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{name}}")
534548
if err != nil {
535549
return err
@@ -606,6 +620,13 @@ func resourceAccessContextManagerAccessLevelDelete(d *schema.ResourceData, meta
606620

607621
billingProject := ""
608622

623+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
624+
if err != nil {
625+
return err
626+
}
627+
transport_tpg.MutexStore.Lock(lockName)
628+
defer transport_tpg.MutexStore.Unlock(lockName)
629+
609630
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{name}}")
610631
if err != nil {
611632
return err

google-beta/services/accesscontextmanager/resource_access_context_manager_access_level_condition.go

+24-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"log"
2323
"net/http"
2424
"reflect"
25+
"strings"
2526
"time"
2627

2728
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -232,6 +233,11 @@ Format: accessPolicies/{policy_id}/accessLevels/{short_name}`,
232233
},
233234
},
234235
},
236+
"access_policy_id": {
237+
Type: schema.TypeString,
238+
Computed: true,
239+
Description: `The name of the Access Policy this resource belongs to.`,
240+
},
235241
},
236242
UseJSONNumber: true,
237243
}
@@ -288,7 +294,12 @@ func resourceAccessContextManagerAccessLevelConditionCreate(d *schema.ResourceDa
288294
obj["vpcNetworkSources"] = vpcNetworkSourcesProp
289295
}
290296

291-
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_level}}")
297+
obj, err = resourceAccessContextManagerAccessLevelConditionEncoder(d, meta, obj)
298+
if err != nil {
299+
return err
300+
}
301+
302+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
292303
if err != nil {
293304
return err
294305
}
@@ -472,7 +483,7 @@ func resourceAccessContextManagerAccessLevelConditionDelete(d *schema.ResourceDa
472483

473484
billingProject := ""
474485

475-
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_level}}")
486+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
476487
if err != nil {
477488
return err
478489
}
@@ -839,6 +850,17 @@ func expandNestedAccessContextManagerAccessLevelConditionVpcNetworkSourcesVpcSub
839850
return v, nil
840851
}
841852

853+
func resourceAccessContextManagerAccessLevelConditionEncoder(d *schema.ResourceData, meta interface{}, obj map[string]interface{}) (map[string]interface{}, error) {
854+
// Set the access_policy_id field from part of the access_level parameter.
855+
856+
// The is logic is inside the encoder since the access_policy_id field is part of
857+
// the mutex lock and encoders run before the lock is set.
858+
parts := strings.Split(d.Get("access_level").(string), "/")
859+
d.Set("access_policy_id", fmt.Sprintf("accessPolicies/%s", parts[1]))
860+
861+
return obj, nil
862+
}
863+
842864
func flattenNestedAccessContextManagerAccessLevelCondition(d *schema.ResourceData, meta interface{}, res map[string]interface{}) (map[string]interface{}, error) {
843865
var v interface{}
844866
var ok bool

google-beta/services/accesscontextmanager/resource_access_context_manager_access_levels.go

+14
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,13 @@ func resourceAccessContextManagerAccessLevelsCreate(d *schema.ResourceData, meta
346346
obj["accessLevels"] = accessLevelsProp
347347
}
348348

349+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
350+
if err != nil {
351+
return err
352+
}
353+
transport_tpg.MutexStore.Lock(lockName)
354+
defer transport_tpg.MutexStore.Unlock(lockName)
355+
349356
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{parent}}/accessLevels:replaceAll")
350357
if err != nil {
351358
return err
@@ -452,6 +459,13 @@ func resourceAccessContextManagerAccessLevelsUpdate(d *schema.ResourceData, meta
452459
obj["accessLevels"] = accessLevelsProp
453460
}
454461

462+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
463+
if err != nil {
464+
return err
465+
}
466+
transport_tpg.MutexStore.Lock(lockName)
467+
defer transport_tpg.MutexStore.Unlock(lockName)
468+
455469
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{parent}}/accessLevels:replaceAll")
456470
if err != nil {
457471
return err

google-beta/services/accesscontextmanager/resource_access_context_manager_access_policy.go

+21
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ func resourceAccessContextManagerAccessPolicyCreate(d *schema.ResourceData, meta
118118
obj["scopes"] = scopesProp
119119
}
120120

121+
lockName, err := tpgresource.ReplaceVars(d, config, "accessPolicies/{{name}}")
122+
if err != nil {
123+
return err
124+
}
125+
transport_tpg.MutexStore.Lock(lockName)
126+
defer transport_tpg.MutexStore.Unlock(lockName)
127+
121128
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}accessPolicies")
122129
if err != nil {
123130
return err
@@ -271,6 +278,13 @@ func resourceAccessContextManagerAccessPolicyUpdate(d *schema.ResourceData, meta
271278
obj["scopes"] = scopesProp
272279
}
273280

281+
lockName, err := tpgresource.ReplaceVars(d, config, "accessPolicies/{{name}}")
282+
if err != nil {
283+
return err
284+
}
285+
transport_tpg.MutexStore.Lock(lockName)
286+
defer transport_tpg.MutexStore.Unlock(lockName)
287+
274288
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}accessPolicies/{{name}}")
275289
if err != nil {
276290
return err
@@ -339,6 +353,13 @@ func resourceAccessContextManagerAccessPolicyDelete(d *schema.ResourceData, meta
339353

340354
billingProject := ""
341355

356+
lockName, err := tpgresource.ReplaceVars(d, config, "accessPolicies/{{name}}")
357+
if err != nil {
358+
return err
359+
}
360+
transport_tpg.MutexStore.Lock(lockName)
361+
defer transport_tpg.MutexStore.Unlock(lockName)
362+
342363
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}accessPolicies/{{name}}")
343364
if err != nil {
344365
return err

google-beta/services/accesscontextmanager/resource_access_context_manager_authorized_orgs_desc.go

+21
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,13 @@ func resourceAccessContextManagerAuthorizedOrgsDescCreate(d *schema.ResourceData
180180
return err
181181
}
182182

183+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
184+
if err != nil {
185+
return err
186+
}
187+
transport_tpg.MutexStore.Lock(lockName)
188+
defer transport_tpg.MutexStore.Unlock(lockName)
189+
183190
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{parent}}/authorizedOrgsDescs")
184191
if err != nil {
185192
return err
@@ -328,6 +335,13 @@ func resourceAccessContextManagerAuthorizedOrgsDescUpdate(d *schema.ResourceData
328335
return err
329336
}
330337

338+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
339+
if err != nil {
340+
return err
341+
}
342+
transport_tpg.MutexStore.Lock(lockName)
343+
defer transport_tpg.MutexStore.Unlock(lockName)
344+
331345
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{name}}")
332346
if err != nil {
333347
return err
@@ -389,6 +403,13 @@ func resourceAccessContextManagerAuthorizedOrgsDescDelete(d *schema.ResourceData
389403

390404
billingProject := ""
391405

406+
lockName, err := tpgresource.ReplaceVars(d, config, "{{parent}}")
407+
if err != nil {
408+
return err
409+
}
410+
transport_tpg.MutexStore.Lock(lockName)
411+
defer transport_tpg.MutexStore.Unlock(lockName)
412+
392413
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{name}}")
393414
if err != nil {
394415
return err

google-beta/services/accesscontextmanager/resource_access_context_manager_egress_policy.go

+39
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"log"
2323
"net/http"
2424
"reflect"
25+
"strings"
2526
"time"
2627

2728
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -59,6 +60,11 @@ func ResourceAccessContextManagerEgressPolicy() *schema.Resource {
5960
ForceNew: true,
6061
Description: `A GCP resource that is inside of the service perimeter.`,
6162
},
63+
"access_policy_id": {
64+
Type: schema.TypeString,
65+
Computed: true,
66+
Description: `The name of the Access Policy this resource belongs to.`,
67+
},
6268
},
6369
UseJSONNumber: true,
6470
}
@@ -79,6 +85,18 @@ func resourceAccessContextManagerEgressPolicyCreate(d *schema.ResourceData, meta
7985
obj["resource"] = resourceProp
8086
}
8187

88+
obj, err = resourceAccessContextManagerEgressPolicyEncoder(d, meta, obj)
89+
if err != nil {
90+
return err
91+
}
92+
93+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
94+
if err != nil {
95+
return err
96+
}
97+
transport_tpg.MutexStore.Lock(lockName)
98+
defer transport_tpg.MutexStore.Unlock(lockName)
99+
82100
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{egress_policy_name}}")
83101
if err != nil {
84102
return err
@@ -222,6 +240,13 @@ func resourceAccessContextManagerEgressPolicyDelete(d *schema.ResourceData, meta
222240

223241
billingProject := ""
224242

243+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
244+
if err != nil {
245+
return err
246+
}
247+
transport_tpg.MutexStore.Lock(lockName)
248+
defer transport_tpg.MutexStore.Unlock(lockName)
249+
225250
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{egress_policy_name}}")
226251
if err != nil {
227252
return err
@@ -281,6 +306,9 @@ func resourceAccessContextManagerEgressPolicyImport(d *schema.ResourceData, meta
281306
return nil, err
282307
}
283308

309+
if err := d.Set("access_policy_id", fmt.Sprintf("accessPolicies/%s", parts["accessPolicy"])); err != nil {
310+
return nil, fmt.Errorf("Error setting access_policy_id: %s", err)
311+
}
284312
if err := d.Set("perimeter", fmt.Sprintf("accessPolicies/%s/servicePerimeters/%s", parts["accessPolicy"], parts["perimeter"])); err != nil {
285313
return nil, fmt.Errorf("Error setting perimeter: %s", err)
286314
}
@@ -295,6 +323,17 @@ func expandNestedAccessContextManagerEgressPolicyResource(v interface{}, d tpgre
295323
return v, nil
296324
}
297325

326+
func resourceAccessContextManagerEgressPolicyEncoder(d *schema.ResourceData, meta interface{}, obj map[string]interface{}) (map[string]interface{}, error) {
327+
// Set the access_policy_id field from part of the egress_policy_name parameter.
328+
329+
// The is logic is inside the encoder since the access_policy_id field is part of
330+
// the mutex lock and encoders run before the lock is set.
331+
parts := strings.Split(d.Get("egress_policy_name").(string), "/")
332+
d.Set("access_policy_id", fmt.Sprintf("accessPolicies/%s", parts[1]))
333+
334+
return obj, nil
335+
}
336+
298337
func flattenNestedAccessContextManagerEgressPolicy(d *schema.ResourceData, meta interface{}, res map[string]interface{}) (map[string]interface{}, error) {
299338
var v interface{}
300339
var ok bool

google-beta/services/accesscontextmanager/resource_access_context_manager_ingress_policy.go

+39
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"log"
2323
"net/http"
2424
"reflect"
25+
"strings"
2526
"time"
2627

2728
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -59,6 +60,11 @@ func ResourceAccessContextManagerIngressPolicy() *schema.Resource {
5960
ForceNew: true,
6061
Description: `A GCP resource that is inside of the service perimeter.`,
6162
},
63+
"access_policy_id": {
64+
Type: schema.TypeString,
65+
Computed: true,
66+
Description: `The name of the Access Policy this resource belongs to.`,
67+
},
6268
},
6369
UseJSONNumber: true,
6470
}
@@ -79,6 +85,18 @@ func resourceAccessContextManagerIngressPolicyCreate(d *schema.ResourceData, met
7985
obj["resource"] = resourceProp
8086
}
8187

88+
obj, err = resourceAccessContextManagerIngressPolicyEncoder(d, meta, obj)
89+
if err != nil {
90+
return err
91+
}
92+
93+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
94+
if err != nil {
95+
return err
96+
}
97+
transport_tpg.MutexStore.Lock(lockName)
98+
defer transport_tpg.MutexStore.Unlock(lockName)
99+
82100
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{ingress_policy_name}}")
83101
if err != nil {
84102
return err
@@ -222,6 +240,13 @@ func resourceAccessContextManagerIngressPolicyDelete(d *schema.ResourceData, met
222240

223241
billingProject := ""
224242

243+
lockName, err := tpgresource.ReplaceVars(d, config, "{{access_policy_id}}")
244+
if err != nil {
245+
return err
246+
}
247+
transport_tpg.MutexStore.Lock(lockName)
248+
defer transport_tpg.MutexStore.Unlock(lockName)
249+
225250
url, err := tpgresource.ReplaceVars(d, config, "{{AccessContextManagerBasePath}}{{ingress_policy_name}}")
226251
if err != nil {
227252
return err
@@ -281,6 +306,9 @@ func resourceAccessContextManagerIngressPolicyImport(d *schema.ResourceData, met
281306
return nil, err
282307
}
283308

309+
if err := d.Set("access_policy_id", fmt.Sprintf("accessPolicies/%s", parts["accessPolicy"])); err != nil {
310+
return nil, fmt.Errorf("Error setting access_policy_id: %s", err)
311+
}
284312
if err := d.Set("perimeter", fmt.Sprintf("accessPolicies/%s/servicePerimeters/%s", parts["accessPolicy"], parts["perimeter"])); err != nil {
285313
return nil, fmt.Errorf("Error setting perimeter: %s", err)
286314
}
@@ -295,6 +323,17 @@ func expandNestedAccessContextManagerIngressPolicyResource(v interface{}, d tpgr
295323
return v, nil
296324
}
297325

326+
func resourceAccessContextManagerIngressPolicyEncoder(d *schema.ResourceData, meta interface{}, obj map[string]interface{}) (map[string]interface{}, error) {
327+
// Set the access_policy_id field from part of the ingress_policy_name parameter.
328+
329+
// The is logic is inside the encoder since the access_policy_id field is part of
330+
// the mutex lock and encoders run before the lock is set.
331+
parts := strings.Split(d.Get("ingress_policy_name").(string), "/")
332+
d.Set("access_policy_id", fmt.Sprintf("accessPolicies/%s", parts[1]))
333+
334+
return obj, nil
335+
}
336+
298337
func flattenNestedAccessContextManagerIngressPolicy(d *schema.ResourceData, meta interface{}, res map[string]interface{}) (map[string]interface{}, error) {
299338
var v interface{}
300339
var ok bool

0 commit comments

Comments
 (0)