pulumi/pkg/backend/display/testdata
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
..
json-yaml Fix JSON/YAML diffs (#15171) 2024-01-18 14:19:54 +00:00
not-truncated Don't rewrite step operations following failure (#16292) 2024-05-31 10:48:07 +00:00
truncated Never show property diffs for OpSame (#16024) 2024-05-02 12:28:43 +00:00
.gitattributes [cli] Refactor the diff printer. (#9367) 2022-04-09 16:04:35 -07:00