pulumi/pkg
Will Jones 98d7246ea8
Don't rewrite step operations following failure (#16292)
When displaying the progress of a Pulumi operation to the user, we want
the operation being displayed to reflect what is actually happening at
that moment in time. Most of the time, this means "just display the
operation in question" -- if a `create` is being executed, show
"creating", if a `delete` just completed, show "deleted", and so on.
However, there are cases where we can do better than just displaying the
"raw" operation. Specifically, our "replacement-like" operations
comprise a _series_ of steps that must execute for the operation as a
whole to make sense. For create-before-replace, we have:

* `create replacement` resource
* `replace` the old resource
* `delete original` resource

Other sequences, such as delete-before-replace, are similar (in the case
of delete-before-replace, the `delete original` step comes first).

While it might make sense to display the underlying steps as the
operation progresses, when the series of steps has _completed_, it's
(arguably) much clearer to simply render the string `replaced` so that
the user knows what has gone on. Similarly, during a preview, it (again
arguably) makes more sense for us to state that the intention is to
`replace`, rather than any one of `create replacement`/`replace`/`delete
original` and so on.

Alas, there is a case where this is potentially misleading and thus
undesirable behaviour. If an _error_ occurs during execution, the
operation will terminate at the next opportunity. In doing so, it will
enter a "done" state. At this point, we _do not_ want to rewrite the
step that was actually happening before the error interrupted it (e.g.
`create replacement`) with the "end" state (e.g. `replaced`), since the
error may mean we never reached that desired state. We want the display
to be as true to the raw series of steps as possible. This PR implements
this change, so that programs which terminate due to errors do not
rewrite their steps.

This PR addresses some of the confusion in #16270, in which we
incorrectly reported that a delete-before-replace resource had been
`replaced` when in fact we had only completed the deletion before being
interrupted by an error elsewhere.
2024-05-31 10:48:07 +00:00
..
asset Move some asset code to pkg (#15162) 2024-01-17 11:30:37 +00:00
authhelpers Add tests for gcpauth pkg (#13926) 2023-09-13 11:27:03 +00:00
backend Don't rewrite step operations following failure (#16292) 2024-05-31 10:48:07 +00:00
cmd/pulumi Plugin interface cleanup (#16293) 2024-05-31 00:28:48 +00:00
codegen [docs] Fix generating constructor examples for resources that have numeric enums as input (#16223) 2024-05-30 22:43:12 +00:00
display Move sdk/go/common/display to /pkg/display (#13954) 2023-09-18 11:01:28 +00:00
engine fix panic with --continue-on-error on delete after failed create (#16261) 2024-05-30 17:18:34 +00:00
graph Adds a flag to graph command to insert fragment (#14858) 2024-01-08 22:03:08 +00:00
importer [engine/import] Guess ID references of dependant resources when generating code for import operations (#16208) 2024-05-20 17:00:16 +00:00
operations Move resource.URN to urn.URN (#15689) 2024-03-14 15:28:32 +00:00
resource Plugin interface cleanup (#16293) 2024-05-31 00:28:48 +00:00
secrets skip GCP tests if credentials are not set (#16032) 2024-04-23 08:25:14 +00:00
testing/integration upgrade to latest version of golangci-lint (#15977) 2024-04-19 06:20:33 +00:00
util Refactor: move plugin kind to apitype (#15946) 2024-04-25 17:30:30 +00:00
version duplicate version to ensure linking is properly handled 2020-03-19 12:49:34 -07:00
workspace Refactor: move plugin kind to apitype (#15946) 2024-04-25 17:30:30 +00:00
README.md export codegen tests for internal use (#8928) 2022-02-07 12:10:04 +01:00
go.mod Changelog and go.mod updates for v3.117.0 (#16265) 2024-05-25 04:02:38 +00:00
go.sum chore: Upgrade gocloud.dev/secrets/hashivault (#16239) 2024-05-21 06:49:44 +00:00

README.md

pulumi/pkg

While pulumi/sdk maintains strict backwards compatibility guarantees, code under pkg/ is handled more informally: while breaking changes are still discouraged they may happen when they make sense.