pulumi/pkg/backend
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
..
display Don't rewrite step operations following failure (#16292) 2024-05-31 10:48:07 +00:00
diy Rewrite `DeletedWith` properties when renaming stacks (#16216) 2024-05-16 15:09:32 +00:00
filestate Rename filestate to DIY (#15314) 2024-01-30 15:53:10 +00:00
httpstate Add display to the engine tests (#16050) 2024-05-13 07:18:25 +00:00
state [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
apply.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00
apply_test.go Make `engine.NewEvent` type safe (#14590) 2023-11-16 16:54:03 +00:00
backend.go remove extraneous `ContinueOnError` field (#16182) 2024-05-13 09:24:34 +00:00
backend_test.go Allow anything in resource names (#14107) 2023-11-20 08:59:00 +00:00
cancellation_scope.go Make `engine.NewEvent` type safe (#14590) 2023-11-16 16:54:03 +00:00
doc.go Document Go packages (#6009) 2021-01-11 11:07:59 -07:00
errors.go Clean up uses of .Error() (#14965) 2023-12-20 15:54:06 +00:00
inmemoryPersister.go Revert "Revert "Run integration tests and dev builds with race detection" (#15998)" (#16148) 2024-05-09 16:15:41 +00:00
mock.go Enable finding Pulumi projects created from Templates (#15056) 2024-01-24 16:47:12 +00:00
policypack.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
query.go Rename filestate to DIY (#15314) 2024-01-30 15:53:10 +00:00
snapshot.go [snapshot] Elide writes for RRO with no changes (#15976) 2024-04-18 22:09:08 +00:00
snapshot_test.go [snapshot] Elide writes for RRO with no changes (#15976) 2024-04-18 22:09:08 +00:00
stack.go Implement preview-only refresh (#15330) 2024-02-01 20:30:40 +00:00
updates.go [cli] Include config from ESC in `pulumi config` (#14560) 2023-11-21 10:44:45 +00:00
watch.go Enable perfsprint linter (#14813) 2023-12-12 12:19:42 +00:00