-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[EPIC] Rollout PlanResourceChange #1785
Comments
#1822 is likely the GCP Meta handling issue - it does have a repro. |
Possible issue in GCP bucket: pulumi/pulumi-gcp#1952 - I attempted to enroll it in PlanResourceChange to check if it fixes an issue. Did not fix the original issue but caused a lot of test failures. At least one was legitimate - the resource started refreshing dirty when no labels are specified. |
Recent changes in hashicorp/terraform-provider-aws#37111 introduced a Diff customizer that leads to errors in the Pulumi version of the provider due to discrepancies in the order in which Diff customizer functions are applied between Pulumi and Terraform. This change fixes the problem by applying the experimental PlanResourceChange flag to the affected resource. A regression test is included. See also: pulumi/pulumi-terraform-bridge#1785
…3888) Recent changes in hashicorp/terraform-provider-aws#37111 introduced a Diff customizer that leads to errors in the Pulumi version of the provider due to discrepancies in the order in which Diff customizer functions are applied between Pulumi and Terraform. This change fixes the problem by applying the experimental PlanResourceChange flag to the affected resource. Fixes #3887 A regression test is included. See also: pulumi/pulumi-terraform-bridge#1785
Some updates. There's still some very basic issues around unknown handling (#1943) causing customer P1s in AWS (pulumi/pulumi-aws@8c302b9) for resources where this was speculatively rolled out to fix other P1s or diff issues like in the case of LaunchTemplate. Given this situation, after #1943 it would be great to open a bridge PR that runs all the downstream tests with this feature turned on to see if we can spot any more basic simple failures and proactively fix them. The issue in question could have been located by #1858 but I would bet also regular integration tests would flag it somewhere. |
ON a positive note we landed #1927 which together with this flag is shown to close 4 resource cycling issues in AWS, and likely actually fixes a lot more. |
We could add an env var which default enables this perhaps? Then run downstream tests with the env var enabled. Iterate until all downstream tests succeed? EDIT: This was done in fb50112
|
Exactly. The issues from actual integration tests likely cover the most important basics. |
As discussed today:
For failing downstream checks do not over-index on upgrade tests flagging Updates, this is not unexpected and we can weaken the tests to just weed out replacements. |
part of #1785 This change adds a normalisation step for collections when recovering cty values to pass to terraform. This ensures we represent them similarly to terraform. In practice this means that all block collections need to be passed to TF providers as an empty collection instead of nil. This should get rid of quite a few subtle discrepancies in the data we pass to the TF provider code. These sometimes result in panics since we pass unexpected nils. This gets rid of all known input discrepancies discovered so far through cross-testing. The full rules for what is a block are [here](https://github.com/hashicorp/terraform-plugin-sdk/blob/1f499688ebd9420768f501d4ed622a51b2135ced/helper/schema/core_schema.go#L60). It is essentially properties with schema: typeList or typeSet with a Resource Elem. fixes #1970 fixes #1915 fixes #1964 fixes #1767 fixes #1762 TODO: [DONE] remove the MaxItemsOne default hacks introduced in #1725 (opened #2049) --------- Co-authored-by: Anton Tayanovskyy <[email protected]> Co-authored-by: Ian Wahbe <[email protected]>
Discovered a new issue with GCP and PRC: pulumi/pulumi-gcp#2078 |
#2039 reproes on non-PRC, removing it from the list. |
pulumi/pulumi-gcp#2078 is actually an upstream bug/behaviour uncovered by PRC |
Azure is done: pulumi/pulumi-azure#2306 |
Investigating PRC test failures in AWS here: pulumi/pulumi-aws#4410 |
Started on the bridge cleanup #2380 so that we can base other work off of that. |
Possible issue with user-defined timeout overrides for Create under PRC: #2386 |
Progress this week on fixing the emergent custom timeouts issue 2386; next up: roll out to AWS, cleanup and close. AWS rollout delayed as waiting for a bridge release to pass all downstream tests. |
pulumi/pulumi-aws#4457 is a consequence we believe, but it is quite tricky. The low-level behavior is more inline with matching TF (our goal) but at the higher level we have gaps to make the users be able to get unstuck. |
pulumi/pulumi-gcp#2372 is this a consequence of PRC rollout? |
Yes, the behavior is actually more consistent with the upstream behavior with PRC, but this results in unexpected diffs for when there are labels set as "" |
Another persistent diff fixed by PRC: pulumi/pulumi-newrelic#875 |
One more fix possibly: pulumi/pulumi-aws#1784 per @corymhall |
New issue with detailed diff when a set contains an unknown element: #2427 |
This issue has been addressed in PR #2380 and shipped in release v3.91.0. |
possibly fixed with this: pulumi/pulumi-azuread#1338 |
🚧
PlanResourceChange flag enables a rewritten implementation of the lifecycle for SDKv2 based resources that more closely aligns with how TF CLI exercises the providers. Building out a plan to roll it out as the default behavior in the bridge. Currently it is rolled out selectively on a per-resource basis where it is shown to fix significant issues.
aws.ssm.Document
pulumi-aws#2555Bridge does not run TF upgrades from version 0 -> 1 #2039(not a PRC issue, fixed in Fix bridge not running state upgrades from 0 -> 1 #2081)PlanResourceChange issue with empty strings and GCP labels pulumi-gcp#2078(issue in GCP tests, fixed in Fix overfitting label tests pulumi-gcp#2072)Technicalities
What PlanResourceChange flag does: it currently is a partial rewrite of the resource lifecycle methods for bridging the SDKv2-based resources. It ties into as much as possible into TF gRPC implementations to work "exactly-as" TF. Several known areas where this improves things:
Cross-testing is essential to pin down corner cases and get full confidence before broader rollout.
Rollout
We will start the rollout as follows:
Instances of TF behaviour regressing against non-PRC:
The text was updated successfully, but these errors were encountered: