pulumi/sdk/proto/engine.proto
Pat Gavlin 905e7353e4
Update the provider RPC interface (#2512)
These changes add two new methods to the provider interface and extend
the results of three others.

The new methods are `CheckConfig` and `DiffConfig`, which fill out the
set of methods required for a complete implementation of the
first-class provider design. Though these methods are optional for
backwards compatibility, they should be implemented by all future
providers for the best possible user experience.

The adjusted result types are `DiffResponse`, `ReadResponse`, and
`ErrorResourceInitFailed`. The first has been updated to include a list
of the properties that changed (if any). The latter two now include
an estimated set of inputs for the resource as well as the resource's
state. Together, these three changes enable the engine to determine the
set of inputs that should be specified by a user in order to match those
that describe the resource's current state.

This contributes to #2453, #1662, #1635, and #1718.
2019-03-05 10:49:24 -08:00

84 lines
3.1 KiB
Protocol Buffer

// Copyright 2016-2018, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
import "google/protobuf/empty.proto";
package pulumirpc;
// Engine is an auxiliary service offered to language and resource provider plugins. Its main purpose today is
// to serve as a common logging endpoint, but it also serves as a state storage mechanism for language hosts
// that can't store their own global state.
service Engine {
// Log logs a global message in the engine, including errors and warnings.
rpc Log(LogRequest) returns (google.protobuf.Empty) {}
// GetRootResource gets the URN of the root resource, the resource that should be the root of all
// otherwise-unparented resources.
rpc GetRootResource(GetRootResourceRequest) returns (GetRootResourceResponse) {}
// SetRootResource sets the URN of the root resource.
rpc SetRootResource(SetRootResourceRequest) returns (SetRootResourceResponse) {}
}
// LogSeverity is the severity level of a log message. Errors are fatal; all others are informational.
enum LogSeverity {
DEBUG = 0; // a debug-level message not displayed to end-users (the default).
INFO = 1; // an informational message printed to output during resource operations.
WARNING = 2; // a warning to indicate that something went wrong.
ERROR = 3; // a fatal error indicating that the tool should stop processing subsequent resource operations.
}
message LogRequest {
// the logging level of this message.
LogSeverity severity = 1;
// the contents of the logged message.
string message = 2;
// the (optional) resource urn this log is associated with.
string urn = 3;
// the (optional) stream id that a stream of log messages can be associated with. This allows
// clients to not have to buffer a large set of log messages that they all want to be
// conceptually connected. Instead the messages can be sent as chunks (with the same stream id)
// and the end display can show the messages as they arrive, while still stitching them together
// into one total log message.
//
// 0/not-given means: do not associate with any stream.
int32 streamId = 4;
// Optional value indicating whether this is a status message.
bool ephemeral = 5;
}
message GetRootResourceRequest {
// empty.
}
message GetRootResourceResponse {
// the URN of the root resource, or the empty string if one was not set.
string urn = 1;
}
message SetRootResourceRequest {
// the URN of the root resource, or the empty string.
string urn = 1;
}
message SetRootResourceResponse {
// empty.
}