pulumi/sdk/proto/engine.proto
joeduffy d7093188f0 Introduce an interface to read config
This change adds an engine gRPC interface, and associated implementation,
so that plugins may do interesting things that require "phoning home".
Previously, the engine would fire up plugins and talk to them directly,
but there was no way for a plugin to ask the engine to do anything.

The motivation here is so that plugins can read evaluator state, such
as config information, but this change also allows richer logging
functionality than previously possible.  We will still auto-log any
stdout/stderr writes; however, explicit errors, warnings, informational,
and even debug messages may be written over the Log API.
2017-06-20 19:45:07 -07:00

48 lines
2 KiB
Protocol Buffer

// Licensed to Pulumi Corporation ("Pulumi") under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// Pulumi licenses this file to You 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";
import "google/protobuf/struct.proto";
package lumirpc;
// Engine is an interface into the core engine responsible for orchestrating resource operations.
service Engine {
// Log logs a global message in the engine, including errors and warnings.
rpc Log(LogRequest) returns (google.protobuf.Empty) {}
// ReadLocation reads the value from a location identified by a token in the current program.
rpc ReadLocation(ReadLocationRequest) returns (google.protobuf.Value) {}
}
// 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 {
LogSeverity severity = 1; // the logging level of this message.
string message = 2; // the contents of the logged message.
}
message ReadLocationRequest {
string token = 1; // the static or module variable whose value to read.
}