mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
This update exposes the workspace name and owner, and changes authentication methods to be explicit. Implicit authentication added unnecessary complexity and introduced inconsistency.
153 lines
3.5 KiB
Protocol Buffer
153 lines
3.5 KiB
Protocol Buffer
|
|
syntax = "proto3";
|
|
option go_package = "github.com/coder/coder/provisionersdk/proto";
|
|
|
|
package provisioner;
|
|
|
|
// Empty indicates a successful request/response.
|
|
message Empty {}
|
|
|
|
// ParameterSource represents the source location for a parameter to get it's value from.
|
|
message ParameterSource {
|
|
enum Scheme {
|
|
DATA = 0;
|
|
}
|
|
Scheme scheme = 1;
|
|
string value = 2;
|
|
}
|
|
|
|
// ParameterDestination represents the target location for a provisioner to set the value.
|
|
message ParameterDestination {
|
|
enum Scheme {
|
|
ENVIRONMENT_VARIABLE = 0;
|
|
PROVISIONER_VARIABLE = 1;
|
|
}
|
|
Scheme scheme = 1;
|
|
}
|
|
|
|
// ParameterValue represents the resolved source and destination of a parameter.
|
|
message ParameterValue {
|
|
ParameterDestination.Scheme destination_scheme = 1;
|
|
string name = 2;
|
|
string value = 3;
|
|
}
|
|
|
|
// ParameterSchema represents validation and type information for a parsed parameter.
|
|
message ParameterSchema {
|
|
string name = 1;
|
|
string description = 2;
|
|
ParameterSource default_source = 3;
|
|
bool allow_override_source = 4;
|
|
ParameterDestination default_destination = 5;
|
|
bool allow_override_destination = 6;
|
|
bool redisplay_value = 7;
|
|
|
|
enum TypeSystem {
|
|
None = 0;
|
|
HCL = 1;
|
|
}
|
|
TypeSystem validation_type_system = 8;
|
|
string validation_value_type = 9;
|
|
string validation_error = 10;
|
|
string validation_condition = 11;
|
|
}
|
|
|
|
// LogLevel represents severity of the log.
|
|
enum LogLevel {
|
|
TRACE = 0;
|
|
DEBUG = 1;
|
|
INFO = 2;
|
|
WARN = 3;
|
|
ERROR = 4;
|
|
}
|
|
|
|
// Log represents output from a request.
|
|
message Log {
|
|
LogLevel level = 1;
|
|
string output = 2;
|
|
}
|
|
|
|
message GoogleInstanceIdentityAuth {
|
|
string instance_id = 1;
|
|
}
|
|
|
|
// Agent represents a running agent on the workspace.
|
|
message Agent {
|
|
string id = 1;
|
|
map<string, string> env = 2;
|
|
string startup_script = 3;
|
|
oneof auth {
|
|
string token = 4;
|
|
string instance_id = 5;
|
|
}
|
|
}
|
|
|
|
// Resource represents created infrastructure.
|
|
message Resource {
|
|
string name = 1;
|
|
string type = 2;
|
|
Agent agent = 3;
|
|
}
|
|
|
|
// Parse consumes source-code from a directory to produce inputs.
|
|
message Parse {
|
|
message Request {
|
|
string directory = 1;
|
|
}
|
|
message Complete {
|
|
repeated ParameterSchema parameter_schemas = 2;
|
|
}
|
|
message Response {
|
|
oneof type {
|
|
Log log = 1;
|
|
Complete complete = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
enum WorkspaceTransition {
|
|
START = 0;
|
|
STOP = 1;
|
|
DESTROY = 2;
|
|
}
|
|
|
|
// Provision consumes source-code from a directory to produce resources.
|
|
message Provision {
|
|
message Metadata {
|
|
string coder_url = 1;
|
|
WorkspaceTransition workspace_transition = 2;
|
|
string workspace_name = 3;
|
|
string workspace_owner = 4;
|
|
}
|
|
message Start {
|
|
string directory = 1;
|
|
repeated ParameterValue parameter_values = 2;
|
|
Metadata metadata = 3;
|
|
bytes state = 4;
|
|
bool dry_run = 5;
|
|
}
|
|
message Cancel {}
|
|
message Request {
|
|
oneof type {
|
|
Start start = 1;
|
|
Cancel cancel = 2;
|
|
}
|
|
}
|
|
message Complete {
|
|
bytes state = 1;
|
|
string error = 2;
|
|
repeated Resource resources = 3;
|
|
}
|
|
message Response {
|
|
oneof type {
|
|
Log log = 1;
|
|
Complete complete = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
service Provisioner {
|
|
rpc Parse(Parse.Request) returns (stream Parse.Response);
|
|
rpc Provision(stream Provision.Request) returns (stream Provision.Response);
|
|
}
|