Skip to content

Commit 708b4c7

Browse files
Etag support for ACM service perimeters (#12363) (#20455)
[upstream:161220adfef1dbc0001daaad10c29a87d71ee39e] Signed-off-by: Modular Magician <[email protected]>
1 parent 157fda6 commit 708b4c7

6 files changed

+77
-0
lines changed

.changelog/12363.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
accesscontextmanager: added `etag` to `google_access_context_manager_service_perimeter` and `google_access_context_manager_service_perimeters`
3+
```

google/services/accesscontextmanager/resource_access_context_manager_service_perimeter.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,13 @@ bet set to True if any of the fields in the spec are set to non-default values.`
909909
Computed: true,
910910
Description: `Time the AccessPolicy was created in UTC.`,
911911
},
912+
"etag": {
913+
Type: schema.TypeString,
914+
Computed: true,
915+
Description: `An opaque identifier for the current version of the ServicePerimeter. This
916+
identifier does not follow any specific format. If an etag is not provided, the
917+
operation will be performed as if a valid etag is provided.`,
918+
},
912919
"update_time": {
913920
Type: schema.TypeString,
914921
Computed: true,
@@ -963,6 +970,12 @@ func resourceAccessContextManagerServicePerimeterCreate(d *schema.ResourceData,
963970
} else if v, ok := d.GetOkExists("use_explicit_dry_run_spec"); !tpgresource.IsEmptyValue(reflect.ValueOf(useExplicitDryRunSpecProp)) && (ok || !reflect.DeepEqual(v, useExplicitDryRunSpecProp)) {
964971
obj["useExplicitDryRunSpec"] = useExplicitDryRunSpecProp
965972
}
973+
etagProp, err := expandAccessContextManagerServicePerimeterEtag(d.Get("etag"), d, config)
974+
if err != nil {
975+
return err
976+
} else if v, ok := d.GetOkExists("etag"); !tpgresource.IsEmptyValue(reflect.ValueOf(etagProp)) && (ok || !reflect.DeepEqual(v, etagProp)) {
977+
obj["etag"] = etagProp
978+
}
966979
parentProp, err := expandAccessContextManagerServicePerimeterParent(d.Get("parent"), d, config)
967980
if err != nil {
968981
return err
@@ -1108,6 +1121,9 @@ func resourceAccessContextManagerServicePerimeterRead(d *schema.ResourceData, me
11081121
if err := d.Set("use_explicit_dry_run_spec", flattenAccessContextManagerServicePerimeterUseExplicitDryRunSpec(res["useExplicitDryRunSpec"], d, config)); err != nil {
11091122
return fmt.Errorf("Error reading ServicePerimeter: %s", err)
11101123
}
1124+
if err := d.Set("etag", flattenAccessContextManagerServicePerimeterEtag(res["etag"], d, config)); err != nil {
1125+
return fmt.Errorf("Error reading ServicePerimeter: %s", err)
1126+
}
11111127
if err := d.Set("name", flattenAccessContextManagerServicePerimeterName(res["name"], d, config)); err != nil {
11121128
return fmt.Errorf("Error reading ServicePerimeter: %s", err)
11131129
}
@@ -1155,6 +1171,12 @@ func resourceAccessContextManagerServicePerimeterUpdate(d *schema.ResourceData,
11551171
} else if v, ok := d.GetOkExists("use_explicit_dry_run_spec"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, useExplicitDryRunSpecProp)) {
11561172
obj["useExplicitDryRunSpec"] = useExplicitDryRunSpecProp
11571173
}
1174+
etagProp, err := expandAccessContextManagerServicePerimeterEtag(d.Get("etag"), d, config)
1175+
if err != nil {
1176+
return err
1177+
} else if v, ok := d.GetOkExists("etag"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, etagProp)) {
1178+
obj["etag"] = etagProp
1179+
}
11581180

11591181
obj, err = resourceAccessContextManagerServicePerimeterEncoder(d, meta, obj)
11601182
if err != nil {
@@ -1196,12 +1218,21 @@ func resourceAccessContextManagerServicePerimeterUpdate(d *schema.ResourceData,
11961218
if d.HasChange("use_explicit_dry_run_spec") {
11971219
updateMask = append(updateMask, "useExplicitDryRunSpec")
11981220
}
1221+
1222+
if d.HasChange("etag") {
1223+
updateMask = append(updateMask, "etag")
1224+
}
11991225
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
12001226
// won't set it
12011227
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
12021228
if err != nil {
12031229
return err
12041230
}
1231+
if _, ok := d.GetOkExists("etag"); ok {
1232+
updateMask = append(updateMask, "etag")
1233+
1234+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
1235+
}
12051236

12061237
// err == nil indicates that the billing_project value was found
12071238
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
@@ -2085,6 +2116,10 @@ func flattenAccessContextManagerServicePerimeterUseExplicitDryRunSpec(v interfac
20852116
return v
20862117
}
20872118

2119+
func flattenAccessContextManagerServicePerimeterEtag(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
2120+
return v
2121+
}
2122+
20882123
func flattenAccessContextManagerServicePerimeterName(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
20892124
return v
20902125
}
@@ -3173,6 +3208,10 @@ func expandAccessContextManagerServicePerimeterUseExplicitDryRunSpec(v interface
31733208
return v, nil
31743209
}
31753210

3211+
func expandAccessContextManagerServicePerimeterEtag(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
3212+
return v, nil
3213+
}
3214+
31763215
func expandAccessContextManagerServicePerimeterParent(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
31773216
return v, nil
31783217
}

google/services/accesscontextmanager/resource_access_context_manager_service_perimeter_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func testAccAccessContextManagerServicePerimeter_basicTest(t *testing.T) {
2828
Steps: []resource.TestStep{
2929
{
3030
Config: testAccAccessContextManagerServicePerimeter_basic(org, "my policy", "level", "perimeter"),
31+
Check: resource.TestCheckResourceAttrSet("google_access_context_manager_service_perimeter.test-access", "etag"),
3132
},
3233
{
3334
ResourceName: "google_access_context_manager_service_perimeter.test-access",

google/services/accesscontextmanager/resource_access_context_manager_service_perimeters.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,13 @@ bet set to True if any of the fields in the spec are set to non-default values.`
715715
Computed: true,
716716
Description: `Time the AccessPolicy was created in UTC.`,
717717
},
718+
"etag": {
719+
Type: schema.TypeString,
720+
Computed: true,
721+
Description: `An opaque identifier for the current version of the ServicePerimeter. This
722+
identifier does not follow any specific format. If an etag is not provided, the
723+
operation will be performed as if a valid etag is provided.`,
724+
},
718725
"update_time": {
719726
Type: schema.TypeString,
720727
Computed: true,
@@ -1116,6 +1123,7 @@ func flattenAccessContextManagerServicePerimetersServicePerimeters(v interface{}
11161123
"perimeter_type": flattenAccessContextManagerServicePerimetersServicePerimetersPerimeterType(original["perimeterType"], d, config),
11171124
"status": flattenAccessContextManagerServicePerimetersServicePerimetersStatus(original["status"], d, config),
11181125
"spec": flattenAccessContextManagerServicePerimetersServicePerimetersSpec(original["spec"], d, config),
1126+
"etag": flattenAccessContextManagerServicePerimetersServicePerimetersEtag(original["etag"], d, config),
11191127
"use_explicit_dry_run_spec": flattenAccessContextManagerServicePerimetersServicePerimetersUseExplicitDryRunSpec(original["useExplicitDryRunSpec"], d, config),
11201128
})
11211129
}
@@ -1136,6 +1144,10 @@ func flattenAccessContextManagerServicePerimetersServicePerimetersName(v interfa
11361144
return v
11371145
}
11381146

1147+
func flattenAccessContextManagerServicePerimetersServicePerimetersEtag(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1148+
return v
1149+
}
1150+
11391151
func flattenAccessContextManagerServicePerimetersServicePerimetersTitle(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
11401152
return v
11411153
}
@@ -1939,6 +1951,13 @@ func expandAccessContextManagerServicePerimetersServicePerimeters(v interface{},
19391951
transformed["description"] = transformedDescription
19401952
}
19411953

1954+
transformedEtag, err := expandAccessContextManagerServicePerimetersServicePerimetersEtag(original["etag"], d, config)
1955+
if err != nil {
1956+
return nil, err
1957+
} else if val := reflect.ValueOf(transformedEtag); val.IsValid() && !tpgresource.IsEmptyValue(val) {
1958+
transformed["etag"] = transformedEtag
1959+
}
1960+
19421961
transformedCreateTime, err := expandAccessContextManagerServicePerimetersServicePerimetersCreateTime(original["create_time"], d, config)
19431962
if err != nil {
19441963
return nil, err
@@ -1998,6 +2017,10 @@ func expandAccessContextManagerServicePerimetersServicePerimetersDescription(v i
19982017
return v, nil
19992018
}
20002019

2020+
func expandAccessContextManagerServicePerimetersServicePerimetersEtag(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2021+
return v, nil
2022+
}
2023+
20012024
func expandAccessContextManagerServicePerimetersServicePerimetersCreateTime(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
20022025
return v, nil
20032026
}

website/docs/r/access_context_manager_service_perimeter.html.markdown

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,11 @@ In addition to the arguments listed above, the following computed attributes are
860860
* `update_time` -
861861
Time the AccessPolicy was updated in UTC.
862862

863+
* `etag` -
864+
An opaque identifier for the current version of the ServicePerimeter. This
865+
identifier does not follow any specific format. If an etag is not provided, the
866+
operation will be performed as if a valid etag is provided.
867+
863868

864869
## Timeouts
865870

website/docs/r/access_context_manager_service_perimeters.html.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ The following arguments are supported:
119119
Description of the ServicePerimeter and its use. Does not affect
120120
behavior.
121121

122+
* `etag` -
123+
(Output)
124+
An opaque identifier for the current version of the ServicePerimeter. This
125+
identifier does not follow any specific format. If an etag is not provided, the
126+
operation will be performed as if a valid etag is provided.
127+
122128
* `create_time` -
123129
(Output)
124130
Time the AccessPolicy was created in UTC.

0 commit comments

Comments
 (0)