Skip to content

Commit 7e24987

Browse files
coder-221niharika-98
authored andcommitted
Add etag checks to ACM directional policy resources (GoogleCloudPlatform#12903)
1 parent 8b2ce84 commit 7e24987

12 files changed

+160
-4
lines changed

mmv1/products/accesscontextmanager/ServicePerimeterDryRunEgressPolicy.yaml

+8-2
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,10 @@ nested_query:
7272
custom_code:
7373
constants: 'templates/terraform/constants/access_context_manager.go.tmpl'
7474
encoder: 'templates/terraform/encoders/access_context_manager_service_perimeter_dry_run_egress_policy.go.tmpl'
75-
pre_create: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
75+
pre_create: 'templates/terraform/pre_create/access_context_manager_service_perimeter_dry_run_egress_policy.go.tmpl'
7676
pre_update: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
77-
pre_delete: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
77+
pre_delete: 'templates/terraform/pre_delete/access_context_manager_service_perimeter_dry_run_egress_policy.go.tmpl'
78+
post_read: 'templates/terraform/post_read/access_context_manager_service_perimeter_resource.go.tmpl'
7879
custom_import: 'templates/terraform/custom_import/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
7980
exclude_tgc: true
8081
# Skipping the sweeper due to the non-standard base_url and because this is fine-grained under ServicePerimeter
@@ -218,3 +219,8 @@ properties:
218219
The name of the Access Policy this resource belongs to.
219220
ignore_read: true
220221
output: true
222+
- name: 'etag'
223+
type: String
224+
output: true
225+
description: |
226+
The perimeter etag is internally used to prevent overwriting the list of policies on PATCH calls. It is retrieved from the same GET perimeter API call that's used to get the current list of policies. The policy defined in this resource is added or removed from that list, and then this etag is sent with the PATCH call along with the updated policies.

mmv1/products/accesscontextmanager/ServicePerimeterDryRunIngressPolicy.yaml

+8-2
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,10 @@ nested_query:
7373
custom_code:
7474
constants: 'templates/terraform/constants/access_context_manager.go.tmpl'
7575
encoder: 'templates/terraform/encoders/access_context_manager_service_perimeter_dry_run_egress_policy.go.tmpl'
76-
pre_create: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
76+
pre_create: 'templates/terraform/pre_create/access_context_manager_service_perimeter_dry_run_ingress_policy.go.tmpl'
7777
pre_update: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
78-
pre_delete: 'templates/terraform/pre_create/access_context_manager_dry_run_resource.go.tmpl'
78+
pre_delete: 'templates/terraform/pre_delete/access_context_manager_service_perimeter_dry_run_ingress_policy.go.tmpl'
79+
post_read: 'templates/terraform/post_read/access_context_manager_service_perimeter_resource.go.tmpl'
7980
custom_import: 'templates/terraform/custom_import/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
8081
exclude_tgc: true
8182
# Skipping the sweeper due to the non-standard base_url and because this is fine-grained under ServicePerimeter
@@ -217,3 +218,8 @@ properties:
217218
The name of the Access Policy this resource belongs to.
218219
ignore_read: true
219220
output: true
221+
- name: 'etag'
222+
type: String
223+
output: true
224+
description: |
225+
The perimeter etag is internally used to prevent overwriting the list of policies on PATCH calls. It is retrieved from the same GET perimeter API call that's used to get the current list of policies. The policy defined in this resource is added or removed from that list, and then this etag is sent with the PATCH call along with the updated policies.

mmv1/products/accesscontextmanager/ServicePerimeterEgressPolicy.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ custom_code:
7373
constants: 'templates/terraform/constants/access_context_manager.go.tmpl'
7474
custom_import: 'templates/terraform/custom_import/access_context_manager_service_perimeter_egress_policy.go.tmpl'
7575
encoder: 'templates/terraform/encoders/access_context_manager_service_perimeter_egress_policy.go.tmpl'
76+
post_read: 'templates/terraform/post_read/access_context_manager_service_perimeter_resource.go.tmpl'
77+
pre_create: 'templates/terraform/pre_create/access_context_manager_service_perimeter_egress_policy.go.tmpl'
78+
pre_delete: 'templates/terraform/pre_delete/access_context_manager_service_perimeter_egress_policy.go.tmpl'
7679
exclude_tgc: true
7780
# Skipping the sweeper due to the non-standard base_url and because this is fine-grained under ServicePerimeter
7881
exclude_sweeper: true
@@ -215,3 +218,8 @@ properties:
215218
The name of the Access Policy this resource belongs to.
216219
ignore_read: true
217220
output: true
221+
- name: 'etag'
222+
type: String
223+
output: true
224+
description: |
225+
The perimeter etag is internally used to prevent overwriting the list of policies on PATCH calls. It is retrieved from the same GET perimeter API call that's used to get the current list of policies. The policy defined in this resource is added or removed from that list, and then this etag is sent with the PATCH call along with the updated policies.

mmv1/products/accesscontextmanager/ServicePerimeterIngressPolicy.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ custom_code:
7474
constants: 'templates/terraform/constants/access_context_manager.go.tmpl'
7575
custom_import: 'templates/terraform/custom_import/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
7676
encoder: 'templates/terraform/encoders/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
77+
post_read: 'templates/terraform/post_read/access_context_manager_service_perimeter_resource.go.tmpl'
78+
pre_create: 'templates/terraform/pre_create/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
79+
pre_delete: 'templates/terraform/pre_delete/access_context_manager_service_perimeter_ingress_policy.go.tmpl'
7780
exclude_tgc: true
7881
# Skipping the sweeper due to the non-standard base_url and because this is fine-grained under ServicePerimeter
7982
exclude_sweeper: true
@@ -217,3 +220,8 @@ properties:
217220
The name of the Access Policy this resource belongs to.
218221
ignore_read: true
219222
output: true
223+
- name: 'etag'
224+
type: String
225+
output: true
226+
description: |
227+
The perimeter etag is internally used to prevent overwriting the list of policies on PATCH calls. It is retrieved from the same GET perimeter API call that's used to get the current list of policies. The policy defined in this resource is added or removed from that list, and then this etag is sent with the PATCH call along with the updated policies.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
obj["use_explicit_dry_run_spec"] = true
2+
3+
etag := d.Get("etag").(string)
4+
5+
if etag == "" {
6+
log.Printf("[ERROR] Unable to get etag: %s", err)
7+
return nil
8+
}
9+
obj["etag"] = etag
10+
11+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
12+
// won't set it
13+
updateMask := []string{"spec.egressPolicies", "etag"}
14+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
15+
if err != nil {
16+
return err
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
obj["use_explicit_dry_run_spec"] = true
2+
3+
etag := d.Get("etag").(string)
4+
5+
if etag == "" {
6+
log.Printf("[ERROR] Unable to get etag: %s", err)
7+
return nil
8+
}
9+
obj["etag"] = etag
10+
11+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
12+
// won't set it
13+
updateMask := []string{"spec.ingressPolicies", "etag"}
14+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
15+
if err != nil {
16+
return err
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
etag := d.Get("etag").(string)
2+
3+
if etag == "" {
4+
log.Printf("[ERROR] Unable to get etag: %s", err)
5+
return nil
6+
}
7+
obj["etag"] = etag
8+
9+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
10+
// won't set it
11+
updateMask := []string{"status.egressPolicies", "etag"}
12+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
13+
if err != nil {
14+
return err
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
etag := d.Get("etag").(string)
2+
3+
if etag == "" {
4+
log.Printf("[ERROR] Unable to get etag: %s", err)
5+
return nil
6+
}
7+
obj["etag"] = etag
8+
9+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
10+
// won't set it
11+
updateMask := []string{"status.ingressPolicies", "etag"}
12+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
13+
if err != nil {
14+
return err
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
obj["use_explicit_dry_run_spec"] = true
2+
3+
etag := d.Get("etag").(string)
4+
5+
if etag == "" {
6+
log.Printf("[ERROR] Unable to get etag: %s", err)
7+
return nil
8+
}
9+
obj["etag"] = etag
10+
11+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
12+
// won't set it
13+
updateMask := []string{"spec.egressPolicies", "etag"}
14+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
15+
if err != nil {
16+
return err
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
obj["use_explicit_dry_run_spec"] = true
2+
3+
etag := d.Get("etag").(string)
4+
5+
if etag == "" {
6+
log.Printf("[ERROR] Unable to get etag: %s", err)
7+
return nil
8+
}
9+
obj["etag"] = etag
10+
11+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
12+
// won't set it
13+
updateMask := []string{"spec.ingressPolicies", "etag"}
14+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
15+
if err != nil {
16+
return err
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
etag := d.Get("etag").(string)
2+
3+
if etag == "" {
4+
log.Printf("[ERROR] Unable to get etag: %s", err)
5+
return nil
6+
}
7+
obj["etag"] = etag
8+
9+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
10+
// won't set it
11+
updateMask := []string{"status.egressPolicies", "etag"}
12+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
13+
if err != nil {
14+
return err
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
etag := d.Get("etag").(string)
2+
3+
if etag == "" {
4+
log.Printf("[ERROR] Unable to get etag: %s", err)
5+
return nil
6+
}
7+
obj["etag"] = etag
8+
9+
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
10+
// won't set it
11+
updateMask := []string{"status.ingressPolicies", "etag"}
12+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
13+
if err != nil {
14+
return err
15+
}

0 commit comments

Comments
 (0)