-
Notifications
You must be signed in to change notification settings - Fork 156
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
Created EKS Addon does not get saved to state if it does not become active #4759
Comments
While working on pulumi/pulumi-eks#1509 I ran into this, but it occurred after updating pulumi-aws from v6.47.0 to v6.63.0: pulumi/pulumi-eks#1519 (comment) This makes me believe that this is actually a regression. I'll do a bisect over the versions to confirm my suspicion |
I bisected the versions and it's indeed a regression that was introduced in That one includes multiple upstream upgrades and a bridge upgrade. Looking into these to find the root cause |
The upstream upgrades |
It's this: pulumi/pulumi-terraform-bridge#2696 We're not returning the partial state to the engine for init errors since enabling PRC. That's why Pulumi doesn't save the Addon to state when it's failing to initialize. |
In the SDKv2 bridge under PlanResourceChange we are not passing any state we receive during TF Apply back to the engine if we also received an error. This causes us to incorrectly miss any resources which were created but encountered errors during the creation process. The engine should see these as `ResourceInitError`, which allows the engine to attempt to update the partially created resource on the next `up`. This PR fixes the issue by passing the state down to the engine in the case when we receive an error and a non-nil state from TF during Apply. related to pulumi/pulumi-gcp#2700 related to pulumi/pulumi-aws#4759 fixes #2696
In the SDKv2 bridge under PlanResourceChange we are not passing any state we receive during TF Apply back to the engine if we also received an error. This causes us to incorrectly miss any resources which were created but encountered errors during the creation process. The engine should see these as ResourceInitError, which allows the engine to attempt to update the partially created resource on the next up. This PR fixes the issue by passing the state down to the engine in the case when we receive an error and a non-nil state from TF during Apply. This is the second attempt at this. The first was #2695 but was reverted because it caused a different panic: #2706. We added a regression test for that in #2710 The reason for that panic was that we were now creating a non-nil `InstanceState` with a nil `stateValue` which causes the `ID` function to panic. This PR fixes both issues by not allowing non-nil states with nil `stateValue`s and by preventing the panic in `ID`. There was also a bit of fun with go nil interfaces along the way, which is the reason why `ApplyResourceChange` now returns a `shim.InstanceState` interface instead of a `*v2InstanceState2`. Otherwise we end up creating a non-nil interface with a nil value. related to pulumi/pulumi-gcp#2700 related to pulumi/pulumi-aws#4759 fixes #2696
This issue has been addressed in PR #4898 and shipped in release v6.65.0. |
Describe what happened
When creating an EKS Addon, the provider will first send the
CreateAddon
API call to AWS and then wait for the addon to become active.Some addons, like corends, take a longer time to become active and might hit wait timeouts.
If the resource creation fails while waiting for the Addon to become active, the resource isn't saved to state.
Re-running
pulumi up
is now guaranteed to fail because Pulumi will wants to create the addon, even though it already exists in the cluster.As a workaround, users either need to delete the addon from the cluster manually or import the Addon into Pulumi state.
Sample program
Log output
n/a
Affected Resource(s)
aws.eks.Addon
Output of
pulumi about
n/a
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).
The text was updated successfully, but these errors were encountered: