This changes a few things about "components": * Rename what was previously ExternalResource to CustomResource, and all of the related fields and parameters that this implies. This just seems like a much nicer and expected name for what these represent. I realize I am stealing a name we had thought about using elsewhere, but this seems like an appropriate use. * Introduce ComponentResource, to make initializing resources that merely aggregate other resources easier to do correctly. * Add a withParent and parentScope concept to Resource, to make allocating children less error-prone. Now there's no need to explicitly adopt children as they are allocated; instead, any children allocated as part of the withParent callback will auto-parent to the resource provided. This is used by ComponentResource's initialization function to make initialization easier, including the distinction between inputs and outputs.
54 lines
2.6 KiB
Protocol Buffer
54 lines
2.6 KiB
Protocol Buffer
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
|
|
|
|
syntax = "proto3";
|
|
|
|
import "google/protobuf/struct.proto";
|
|
import "provider.proto";
|
|
|
|
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 pwd = 1; // the program's working directory.
|
|
string program = 2; // the path to the program to execute.
|
|
repeated string args = 3; // any arguments to pass to the program.
|
|
map<string, string> config = 4; // the configuration variables to apply before running.
|
|
bool dryRun = 5; // true if we're only doing a dryrun (preview).
|
|
int32 parallel = 6; // 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.
|
|
}
|
|
|
|
// ResourceMonitor is the interface a source uses to talk back to the planning monitor orchestrating the execution.
|
|
service ResourceMonitor {
|
|
rpc Invoke(InvokeRequest) returns (InvokeResponse) {}
|
|
rpc NewResource(NewResourceRequest) returns (NewResourceResponse) {}
|
|
}
|
|
|
|
// NewResourceRequest contains information about a resource object that was newly allocated.
|
|
message NewResourceRequest {
|
|
string type = 1; // the type of the object allocated.
|
|
string name = 2; // the name, for URN purposes, of the object.
|
|
repeated string children = 3; // an optional list of child URNs belonging to this parent resource.
|
|
bool custom = 4; // true if the resource is a custom, managed by a plugin's CRUD operations.
|
|
google.protobuf.Struct object = 5; // an object produced by the interpreter/source.
|
|
}
|
|
|
|
// NewResourceResponse reflects back the properties initialized during creation, if applicable.
|
|
message NewResourceResponse {
|
|
string id = 1; // the unique ID assigned by the provider.
|
|
string urn = 2; // the URN assigned by the fabric.
|
|
google.protobuf.Struct object = 3; // the resulting object properties, including provider defaults.
|
|
bool stable = 4; // if true, the object's state is stable and may be trusted not to change.
|
|
repeated string stables = 5; // an optional list of guaranteed-stable properties.
|
|
}
|
|
|