This change switches from child lists to parent pointers, in the way resource ancestries are represented. This cleans up a fair bit of the old parenting logic, including all notion of ambient parent scopes (and will notably address pulumi/pulumi#435). This lets us show a more parent/child display in the output when doing planning and updating. For instance, here is an update of a lambda's text, which is logically part of a cloud timer: * cloud:timer:Timer: (same) [urn=urn:pulumi:malta::lm-cloud:☁️timer:Timer::lm-cts-malta-job-CleanSnapshots] * cloud:function:Function: (same) [urn=urn:pulumi:malta::lm-cloud:☁️function:Function::lm-cts-malta-job-CleanSnapshots] * aws:serverless:Function: (same) [urn=urn:pulumi:malta::lm-cloud::aws:serverless:Function::lm-cts-malta-job-CleanSnapshots] ~ aws:lambda/function:Function: (modify) [id=lm-cts-malta-job-CleanSnapshots-fee4f3bf41280741] [urn=urn:pulumi:malta::lm-cloud::aws:lambda/function:Function::lm-cts-malta-job-CleanSnapshots] - code : archive(assets:2092f44) { // etc etc etc Note that we still get walls of text, but this will be actually quite nice when combined with pulumi/pulumi#454. I've also suppressed printing properties that didn't change during updates when --detailed was not passed, and also suppressed empty strings and zero-length arrays (since TF uses these as defaults in many places and it just makes creation and deletion quite verbose). Note that this is a far cry from everything we can possibly do here as part of pulumi/pulumi#340 (and even pulumi/pulumi#417). But it's a good start towards taming some of our output spew.
28 lines
1.2 KiB
Protocol Buffer
28 lines
1.2 KiB
Protocol Buffer
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
|
|
|
|
syntax = "proto3";
|
|
|
|
package pulumirpc;
|
|
|
|
// LanguageRuntime is the interface that the planning monitor uses to drive execution of an interpreter responsible
|
|
// for confguring and creating resource objects.
|
|
service LanguageRuntime {
|
|
rpc Run(RunRequest) returns (RunResponse) {}
|
|
}
|
|
|
|
// RunRequest asks the interpreter to execute a program.
|
|
message RunRequest {
|
|
string project = 1; // the project name.
|
|
string stack = 2; // the name of the stack being deployed into.
|
|
string pwd = 3; // the program's working directory.
|
|
string program = 4; // the path to the program to execute.
|
|
repeated string args = 5; // any arguments to pass to the program.
|
|
map<string, string> config = 6; // the configuration variables to apply before running.
|
|
bool dryRun = 7; // true if we're only doing a dryrun (preview).
|
|
int32 parallel = 8; // the degree of parallelism for resource operations (<=1 for serial).
|
|
}
|
|
|
|
// RunResponse is the response back from the interpreter/source back to the monitor.
|
|
message RunResponse {
|
|
string error = 1; // an unhandled error if any occurred.
|
|
}
|