This change brings back component outputs to the overall system again. In doing so, it generally overhauls the way we do resource RPCs a bit: * Instead of RegisterResource and CompleteResource, we call these BeginRegisterResource and EndRegisterResource, which begins to model these as effectively "asynchronous" resource requests. This should also help with parallelism (https://github.com/pulumi/pulumi/issues/106). * Flip the CLI/engine a little on its head. Rather than it driving the planning and deployment process, we move more to a model where it simply observes it. This is done by implementing an event handler interface with three events: OnResourceStepPre, OnResourceStepPost, and OnResourceComplete. The first two are invoked immediately before and after any step operation, and the latter is invoked whenever a EndRegisterResource comes in. The reason for the asymmetry here is that the checkpointing logic in the deployment engine is largely untouched (intentionally, as this is a sensitive part of the system), and so the "begin"/"end" nature doesn't flow through faithfully. * Also make the engine more event-oriented in its terminology and the way it handles the incoming BeginRegisterResource and EndRegisterResource events from the language host. This is the first step down a long road of incrementally refactoring the engine to work this way, a necessary prerequisite for parallelism. |
||
---|---|---|
.. | ||
go | ||
nodejs | ||
analyzer.proto | ||
engine.proto | ||
generate.sh | ||
language.proto | ||
provider.proto | ||
resource.proto |