Skip to content

Commit c78d1c3

Browse files
Use updated policy to update, not empty policy for DEPRIVILEGE (#4293) (#2771)
Signed-off-by: Modular Magician <[email protected]>
1 parent 67cd158 commit c78d1c3

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

.changelog/4293.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 where `google_project_default_service_accounts` would delete all IAM bindings on a project when run with `action = "DEPRIVILEGE"`
3+
```

google-beta/resource_google_project_default_service_accounts.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,11 @@ func resourceGoogleProjectDefaultServiceAccountsDoAction(d *schema.ResourceData,
119119
}
120120
bind.Members = newMembers
121121
}
122-
_, err = config.NewResourceManagerClient(userAgent).Projects.SetIamPolicy(project, &cloudresourcemanager.SetIamPolicyRequest{}).Do()
122+
updateRequest := &cloudresourcemanager.SetIamPolicyRequest{
123+
Policy: iamPolicy,
124+
UpdateMask: "bindings,etag,auditConfigs",
125+
}
126+
_, err = config.NewResourceManagerClient(userAgent).Projects.SetIamPolicy(project, updateRequest).Do()
123127
if err != nil {
124128
return fmt.Errorf("cannot update IAM policy on project %s: %v", project, err)
125129
}
@@ -139,7 +143,7 @@ func resourceGoogleProjectDefaultServiceAccountsCreate(d *schema.ResourceData, m
139143
pid := d.Get("project").(string)
140144
action := d.Get("action").(string)
141145

142-
serviceAccounts, err := resourceGoogleProjectDefaultServiceAccountsList(config, d, userAgent)
146+
serviceAccounts, err := listServiceAccounts(config, d, userAgent)
143147
if err != nil {
144148
return fmt.Errorf("error listing service accounts on project %s: %v", pid, err)
145149
}
@@ -164,7 +168,7 @@ func resourceGoogleProjectDefaultServiceAccountsCreate(d *schema.ResourceData, m
164168
return nil
165169
}
166170

167-
func resourceGoogleProjectDefaultServiceAccountsList(config *Config, d *schema.ResourceData, userAgent string) ([]*iam.ServiceAccount, error) {
171+
func listServiceAccounts(config *Config, d *schema.ResourceData, userAgent string) ([]*iam.ServiceAccount, error) {
168172
pid := d.Get("project").(string)
169173
response, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.List(prefixedProject(pid)).Do()
170174
if err != nil {

0 commit comments

Comments
 (0)