This change, part of pulumi/coconut#105, rearranges support for resource replacement. The old model didn't properly account for the cascading updates and possible replacement of dependencies. Namely, we need to model a replacement as a creation followed by a deletion, inserted into the overall DAG correctly so that any resources that must be updated are updated after the creation but prior to the deletion. This is done by inserting *three* nodes into the graph per replacement: a physical creation step, a physical deletion step, and a logical replacement step. The logical step simply makes it nicer in the output (the plan output shows a single "replacement" rather than the fine-grained outputs, unless they are requested with --show-replace-steps). It also makes it easier to fold all of the edges into a single linchpin node. As part of this, the update step no longer gets to choose whether to recreate the resource. Instead, the engine takes care of orchestrating the replacement through actual create and delete calls. |
||
---|---|---|
.. | ||
engine.proto | ||
generate.sh | ||
provider.proto |