You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
func resourcePermissionUpdate(d *schema.ResourceData, meta interface{}) error {
159
162
client := meta.(*cfclient.Client)
160
-
161
163
permission := *mapResourceToPermission(d)
162
-
resp, err := client.CreatePermission(&permission)
163
-
if err != nil {
164
-
return err
165
-
}
166
164
167
-
deleteErr := resourcePermissionDelete(d, meta)
168
-
if deleteErr != nil {
169
-
log.Printf("[WARN] failed to delete permission %v: %v", permission, deleteErr)
165
+
// In case team, action or relatedResource or resource have changed - a new permission needs to be created (but without recreating the terraform resource as destruction of resources is alarming for end users)
166
+
if d.HasChanges("team", "action", "related_resource", "resource") {
167
+
deleteErr := resourcePermissionDelete(d, meta)
168
+
169
+
if deleteErr != nil {
170
+
log.Printf("[WARN] failed to delete permission %v: %v", permission, deleteErr)
171
+
}
172
+
173
+
resp, err := client.CreatePermission(&permission)
174
+
175
+
if err != nil {
176
+
return err
177
+
}
178
+
179
+
d.SetId(resp.ID)
180
+
// Only tags can be updated
181
+
} else if d.HasChange("tags") {
182
+
err := client.UpdatePermissionTags(&permission)
183
+
if err != nil {
184
+
return err
185
+
}
170
186
}
171
-
d.SetId(resp.ID)
172
187
173
188
return resourcePermissionRead(d, meta)
174
189
}
@@ -206,6 +221,11 @@ func mapPermissionToResource(permission *cfclient.Permission, d *schema.Resource
0 commit comments