Add support for provider actions #3226
Draft
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.
This adds support for terraform provider actions, exposing them as invokes. Every invoke takes the parameters for the action plus a resource URN so that we can log the action output messages against a specific resource.
The intention of these is to use them inside resource lifecycle hooks (where you'll have access to the resource URN), and is very similar to how terraform intends to use these actions. Of course being invokes users could also make use of these anywhere else as well, but as their generally mutating/side-effectful operations you probably don't want to do that.
This prototype currently has a "preview" flag being passed to the invoke as well. This is so we can call PlanAction rather than InvokeAction at preview time. I'm going to look at adding that directly to the engine-provider invoke interface as that would allow pulumi to have side-effectful invokes in general. (pulumi/pulumi#20827)