Fix inconsistencies in how IAM policies are stored in state #12652
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Partially fixes #8701
This PR changes how the
google_iam_policy
data source stores the user-entered data in its computedpolicy_data
attribute. It is addressing the first issue I describe in this comment on the original issue.I've updated how the
google_iam_policy
data source processes itsbinding
blocks into a JSON string which it stores as thepolicy_data
attribute. I've made this processing resemble what happens in the API, so there should not be a mismatch between the JSON of the policy in the data source's state and the resource's state.Manual tests
Using the config I describe in this comment I apply the first plan to create everything and then make this small edit
When I generate a plan with the latest provider version I see lots of unnecessary diffs as reported in the original issue:
When I generate a plan using this PR's changes the diff is much smaller:
👆 The extra diffs for setting an empty description are another issue I'm thinking of handling in a separate PR to this one
Checklist
If this PR is for Terraform, I acknowledge that I have:
make test
andmake lint
to ensure it passes unit and linter tests.Ensured that all new fields I added that can be set by a user appear in at least one example (for generated resources) or third_party test (for handwritten resources or update tests).N/ATestAccArtifactRegistryRepositoryIamPolicyGenerated
acceptance test that uses thegoogle_iam_policy
data source and it passed okRelease Note Template for Downstream PRs (will be copied)
Derived from GoogleCloudPlatform/magic-modules#6466