Skip to content

Commit f26f8b0

Browse files
Update project to project_id in project access settings (#4383) (#2852)
* Update project to project_id * Spacing Signed-off-by: Modular Magician <[email protected]>
1 parent 1996d12 commit f26f8b0

File tree

3 files changed

+56
-47
lines changed

3 files changed

+56
-47
lines changed

.changelog/4383.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
project: fixed a bug in `google_project_access_approval_settings` where the default `project` was used rather than `project_id`
3+
```

google-beta/resource_access_approval_project_settings.go

Lines changed: 46 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ resources of that resource. A maximum of 50 email addresses are allowed.`,
7373
},
7474
Set: schema.HashString,
7575
},
76+
"project": {
77+
Type: schema.TypeString,
78+
Optional: true,
79+
Deprecated: "Deprecated in favor of `project_id`",
80+
Description: `Deprecated in favor of 'project_id'`,
81+
},
7682
"enrolled_ancestor": {
7783
Type: schema.TypeBool,
7884
Computed: true,
@@ -81,13 +87,7 @@ resources of that resource. A maximum of 50 email addresses are allowed.`,
8187
"name": {
8288
Type: schema.TypeString,
8389
Computed: true,
84-
Description: `The resource name of the settings. Format is "projects/{project_id/accessApprovalSettings"`,
85-
},
86-
"project": {
87-
Type: schema.TypeString,
88-
Optional: true,
89-
Computed: true,
90-
ForceNew: true,
90+
Description: `The resource name of the settings. Format is "projects/{project_id}/accessApprovalSettings"`,
9191
},
9292
},
9393
UseJSONNumber: true,
@@ -143,21 +143,21 @@ func resourceAccessApprovalProjectSettingsCreate(d *schema.ResourceData, meta in
143143
} else if v, ok := d.GetOkExists("enrolled_services"); !isEmptyValue(reflect.ValueOf(enrolledServicesProp)) && (ok || !reflect.DeepEqual(v, enrolledServicesProp)) {
144144
obj["enrolledServices"] = enrolledServicesProp
145145
}
146+
projectProp, err := expandAccessApprovalProjectSettingsProject(d.Get("project"), d, config)
147+
if err != nil {
148+
return err
149+
} else if v, ok := d.GetOkExists("project"); !isEmptyValue(reflect.ValueOf(projectProp)) && (ok || !reflect.DeepEqual(v, projectProp)) {
150+
obj["project"] = projectProp
151+
}
146152

147-
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project}}/accessApprovalSettings")
153+
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project_id}}/accessApprovalSettings")
148154
if err != nil {
149155
return err
150156
}
151157

152158
log.Printf("[DEBUG] Creating new ProjectSettings: %#v", obj)
153159
billingProject := ""
154160

155-
project, err := getProject(d, config)
156-
if err != nil {
157-
return fmt.Errorf("Error fetching project for ProjectSettings: %s", err)
158-
}
159-
billingProject = project
160-
161161
// err == nil indicates that the billing_project value was found
162162
if bp, err := getBillingProject(d, config); err == nil {
163163
billingProject = bp
@@ -172,6 +172,10 @@ func resourceAccessApprovalProjectSettingsCreate(d *schema.ResourceData, meta in
172172
if d.HasChange("enrolled_services") {
173173
updateMask = append(updateMask, "enrolledServices")
174174
}
175+
176+
if d.HasChange("project") {
177+
updateMask = append(updateMask, "project")
178+
}
175179
// updateMask is a URL parameter but not present in the schema, so replaceVars
176180
// won't set it
177181
url, err = addQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
@@ -187,7 +191,7 @@ func resourceAccessApprovalProjectSettingsCreate(d *schema.ResourceData, meta in
187191
}
188192

189193
// Store the ID now
190-
id, err := replaceVars(d, config, "projects/{{project}}/accessApprovalSettings")
194+
id, err := replaceVars(d, config, "projects/{{project_id}}/accessApprovalSettings")
191195
if err != nil {
192196
return fmt.Errorf("Error constructing id: %s", err)
193197
}
@@ -205,19 +209,13 @@ func resourceAccessApprovalProjectSettingsRead(d *schema.ResourceData, meta inte
205209
return err
206210
}
207211

208-
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project}}/accessApprovalSettings")
212+
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project_id}}/accessApprovalSettings")
209213
if err != nil {
210214
return err
211215
}
212216

213217
billingProject := ""
214218

215-
project, err := getProject(d, config)
216-
if err != nil {
217-
return fmt.Errorf("Error fetching project for ProjectSettings: %s", err)
218-
}
219-
billingProject = project
220-
221219
// err == nil indicates that the billing_project value was found
222220
if bp, err := getBillingProject(d, config); err == nil {
223221
billingProject = bp
@@ -228,10 +226,6 @@ func resourceAccessApprovalProjectSettingsRead(d *schema.ResourceData, meta inte
228226
return handleNotFoundError(err, d, fmt.Sprintf("AccessApprovalProjectSettings %q", d.Id()))
229227
}
230228

231-
if err := d.Set("project", project); err != nil {
232-
return fmt.Errorf("Error reading ProjectSettings: %s", err)
233-
}
234-
235229
if err := d.Set("name", flattenAccessApprovalProjectSettingsName(res["name"], d, config)); err != nil {
236230
return fmt.Errorf("Error reading ProjectSettings: %s", err)
237231
}
@@ -244,6 +238,9 @@ func resourceAccessApprovalProjectSettingsRead(d *schema.ResourceData, meta inte
244238
if err := d.Set("enrolled_ancestor", flattenAccessApprovalProjectSettingsEnrolledAncestor(res["enrolledAncestor"], d, config)); err != nil {
245239
return fmt.Errorf("Error reading ProjectSettings: %s", err)
246240
}
241+
if err := d.Set("project", flattenAccessApprovalProjectSettingsProject(res["project"], d, config)); err != nil {
242+
return fmt.Errorf("Error reading ProjectSettings: %s", err)
243+
}
247244

248245
return nil
249246
}
@@ -257,12 +254,6 @@ func resourceAccessApprovalProjectSettingsUpdate(d *schema.ResourceData, meta in
257254

258255
billingProject := ""
259256

260-
project, err := getProject(d, config)
261-
if err != nil {
262-
return fmt.Errorf("Error fetching project for ProjectSettings: %s", err)
263-
}
264-
billingProject = project
265-
266257
obj := make(map[string]interface{})
267258
notificationEmailsProp, err := expandAccessApprovalProjectSettingsNotificationEmails(d.Get("notification_emails"), d, config)
268259
if err != nil {
@@ -276,8 +267,14 @@ func resourceAccessApprovalProjectSettingsUpdate(d *schema.ResourceData, meta in
276267
} else if v, ok := d.GetOkExists("enrolled_services"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, enrolledServicesProp)) {
277268
obj["enrolledServices"] = enrolledServicesProp
278269
}
270+
projectProp, err := expandAccessApprovalProjectSettingsProject(d.Get("project"), d, config)
271+
if err != nil {
272+
return err
273+
} else if v, ok := d.GetOkExists("project"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, projectProp)) {
274+
obj["project"] = projectProp
275+
}
279276

280-
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project}}/accessApprovalSettings")
277+
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project_id}}/accessApprovalSettings")
281278
if err != nil {
282279
return err
283280
}
@@ -292,6 +289,10 @@ func resourceAccessApprovalProjectSettingsUpdate(d *schema.ResourceData, meta in
292289
if d.HasChange("enrolled_services") {
293290
updateMask = append(updateMask, "enrolledServices")
294291
}
292+
293+
if d.HasChange("project") {
294+
updateMask = append(updateMask, "project")
295+
}
295296
// updateMask is a URL parameter but not present in the schema, so replaceVars
296297
// won't set it
297298
url, err = addQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
@@ -326,7 +327,7 @@ func resourceAccessApprovalProjectSettingsDelete(d *schema.ResourceData, meta in
326327
obj["notificationEmails"] = []string{}
327328
obj["enrolledServices"] = []string{}
328329

329-
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project}}/accessApprovalSettings")
330+
url, err := replaceVars(d, config, "{{AccessApprovalBasePath}}projects/{{project_id}}/accessApprovalSettings")
330331
if err != nil {
331332
return err
332333
}
@@ -358,14 +359,14 @@ func resourceAccessApprovalProjectSettingsDelete(d *schema.ResourceData, meta in
358359
func resourceAccessApprovalProjectSettingsImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
359360
config := meta.(*Config)
360361
if err := parseImportId([]string{
361-
"projects/(?P<project>[^/]+)/accessApprovalSettings",
362-
"(?P<project>[^/]+)",
362+
"projects/(?P<project_id>[^/]+)/accessApprovalSettings",
363+
"(?P<project_id>[^/]+)",
363364
}, d, config); err != nil {
364365
return nil, err
365366
}
366367

367368
// Replace import id for the resource id
368-
id, err := replaceVars(d, config, "projects/{{project}}/accessApprovalSettings")
369+
id, err := replaceVars(d, config, "projects/{{project_id}}/accessApprovalSettings")
369370
if err != nil {
370371
return nil, fmt.Errorf("Error constructing id: %s", err)
371372
}
@@ -416,6 +417,10 @@ func flattenAccessApprovalProjectSettingsEnrolledAncestor(v interface{}, d *sche
416417
return v
417418
}
418419

420+
func flattenAccessApprovalProjectSettingsProject(v interface{}, d *schema.ResourceData, config *Config) interface{} {
421+
return v
422+
}
423+
419424
func expandAccessApprovalProjectSettingsNotificationEmails(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
420425
v = v.(*schema.Set).List()
421426
return v, nil
@@ -458,3 +463,7 @@ func expandAccessApprovalProjectSettingsEnrolledServicesCloudProduct(v interface
458463
func expandAccessApprovalProjectSettingsEnrolledServicesEnrollmentLevel(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
459464
return v, nil
460465
}
466+
467+
func expandAccessApprovalProjectSettingsProject(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
468+
return v, nil
469+
}

website/docs/r/access_approval_project_settings.html.markdown

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,19 @@ The `enrolled_services` block supports:
9393
Notifications relating to a resource will be sent to all emails in the settings of ancestor
9494
resources of that resource. A maximum of 50 email addresses are allowed.
9595

96-
* `project` - (Optional) The ID of the project in which the resource belongs.
97-
If it is not provided, the provider project is used.
96+
* `project` -
97+
(Optional, Deprecated)
98+
Deprecated in favor of `project_id`
9899

99100

100101
## Attributes Reference
101102

102103
In addition to the arguments listed above, the following computed attributes are exported:
103104

104-
* `id` - an identifier for the resource with format `projects/{{project}}/accessApprovalSettings`
105+
* `id` - an identifier for the resource with format `projects/{{project_id}}/accessApprovalSettings`
105106

106107
* `name` -
107-
The resource name of the settings. Format is "projects/{project_id/accessApprovalSettings"
108+
The resource name of the settings. Format is "projects/{project_id}/accessApprovalSettings"
108109

109110
* `enrolled_ancestor` -
110111
If the field is true, that indicates that at least one service is enrolled for Access Approval in one or more ancestors of the Project.
@@ -125,10 +126,6 @@ This resource provides the following
125126
ProjectSettings can be imported using any of these accepted formats:
126127

127128
```
128-
$ terraform import google_project_access_approval_settings.default projects/{{project}}/accessApprovalSettings
129-
$ terraform import google_project_access_approval_settings.default {{project}}
129+
$ terraform import google_project_access_approval_settings.default projects/{{project_id}}/accessApprovalSettings
130+
$ terraform import google_project_access_approval_settings.default {{project_id}}
130131
```
131-
132-
## User Project Overrides
133-
134-
This resource supports [User Project Overrides](https://www.terraform.io/docs/providers/google/guides/provider_reference.html#user_project_override).

0 commit comments

Comments
 (0)