199 lines
5.6 KiB
Protocol Buffer
199 lines
5.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "common.proto";
|
|
import "server.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
package controller;
|
|
|
|
service IsolateController {
|
|
// Run the given function on the specified environment. Streams logs
|
|
// and the result originating from that function.
|
|
rpc Run (HostedRun) returns (stream HostedRunResult) {}
|
|
// Run the given function in parallel with the given inputs
|
|
rpc Map (HostedMap) returns (stream HostedRunResult) {}
|
|
// Schedule the given function to be run with the specified cron.
|
|
rpc Schedule (HostedRunCron) returns (ScheduleInfo) {}
|
|
// List scheduled runs.
|
|
rpc ListScheduledRuns (ListScheduledRunsRequest) returns (ListScheduledRunsResponse) {}
|
|
// Cancel a scheduled run.
|
|
rpc CancelScheduledRun (CancelScheduledRunRequest) returns (CancelScheduledRunResponse) {}
|
|
// List all the activations of one scheduled run.
|
|
rpc ListScheduledRunActivations (ListScheduledRunActivationsRequest) returns (ListScheduledRunActivationsResponse) {}
|
|
// Get logs from a particular activation of a scheduled run.
|
|
rpc GetScheduledActivationLogs (GetScheduledActivationLogsRequest) returns (GetScheduledActivationLogsResponse) {}
|
|
// Creates an authentication key for a user
|
|
rpc CreateUserKey (CreateUserKeyRequest) returns (CreateUserKeyResponse) {}
|
|
// Lists the user's authentication keys
|
|
rpc ListUserKeys (ListUserKeysRequest) returns (ListUserKeysResponse) {}
|
|
// Revokes an authentication key for a user
|
|
rpc RevokeUserKey (RevokeUserKeyRequest) returns (RevokeUserKeyResponse) {}
|
|
}
|
|
|
|
message HostedMap {
|
|
// Environment definitions.
|
|
repeated EnvironmentDefinition environments = 1;
|
|
// Machine requirements
|
|
optional MachineRequirements machine_requirements = 2;
|
|
// Function to run.
|
|
SerializedObject function = 3;
|
|
// Inputs to the function
|
|
repeated SerializedObject inputs = 4;
|
|
}
|
|
|
|
message HostedRun {
|
|
// Environment definitions.
|
|
repeated EnvironmentDefinition environments = 1;
|
|
// Machine requirements
|
|
optional MachineRequirements machine_requirements = 2;
|
|
// Function to run.
|
|
SerializedObject function = 3;
|
|
// Optional setup function to pass as the first argument to the function.
|
|
optional SerializedObject setup_func = 4;
|
|
}
|
|
|
|
message HostedRunCron {
|
|
// Environment definitions.
|
|
repeated EnvironmentDefinition environments = 1;
|
|
// Machine requirements
|
|
optional MachineRequirements machine_requirements = 2;
|
|
// Function to run.
|
|
SerializedObject function = 3;
|
|
// cron string to represent the run schedule
|
|
string cron = 4;
|
|
}
|
|
|
|
message CancelScheduledRunRequest {
|
|
// The id of the scheduled run to cancel.
|
|
string run_id = 1;
|
|
}
|
|
|
|
message CancelScheduledRunResponse {
|
|
// Empty. For future use.
|
|
}
|
|
|
|
message ListScheduledRunsRequest {
|
|
// Empty. For future use.
|
|
}
|
|
|
|
message ListScheduledRunActivationsRequest {
|
|
// The id of the scheduled run to list activations for.
|
|
string run_id = 1;
|
|
}
|
|
|
|
message ListScheduledRunActivationsResponse {
|
|
// The list of activations (which correspond to timestamps)
|
|
repeated string activation_ids = 1;
|
|
}
|
|
|
|
message ListScheduledRunsResponse {
|
|
repeated ScheduleInfo scheduled_runs = 1;
|
|
}
|
|
|
|
message GetScheduledActivationLogsRequest {
|
|
// The id of the scheduled run to get.
|
|
string run_id = 1;
|
|
|
|
// The id of the activation to get logs for.
|
|
string activation_id = 2;
|
|
}
|
|
|
|
message GetScheduledActivationLogsResponse {
|
|
// All the logs from this activation (the format is TBD, currently raw strings).
|
|
bytes raw_logs = 1;
|
|
}
|
|
|
|
message CreateUserKeyRequest {
|
|
// Empty. For future use.
|
|
}
|
|
|
|
message CreateUserKeyResponse {
|
|
string key_secret = 1;
|
|
string key_id = 2;
|
|
optional string description = 3;
|
|
}
|
|
|
|
message ListUserKeysRequest {
|
|
// Empty. For future use.
|
|
}
|
|
|
|
message ListUserKeysResponse {
|
|
repeated UserKeyInfo user_keys = 1;
|
|
}
|
|
|
|
message RevokeUserKeyRequest {
|
|
string key_id = 1;
|
|
}
|
|
|
|
message RevokeUserKeyResponse {
|
|
// Empty. For future use.
|
|
}
|
|
|
|
message UserKeyInfo {
|
|
string key_id = 1;
|
|
google.protobuf.Timestamp created_at = 2;
|
|
}
|
|
|
|
message ScheduleInfo {
|
|
// Unique run id / token.
|
|
string run_id = 1;
|
|
|
|
enum State {
|
|
// The run has been scheduled.
|
|
SCHEDULED = 0;
|
|
// The run has failed because of isolate.
|
|
INTERNAL_FAILURE = 1;
|
|
// The run has been cancelled.
|
|
CANCELLED = 2;
|
|
}
|
|
|
|
// The state of the run.
|
|
State state = 2;
|
|
|
|
// Cron string to represent the run schedule.
|
|
string cron = 3;
|
|
}
|
|
|
|
message HostedRunResult {
|
|
// Unique run id / token.
|
|
string run_id = 1;
|
|
|
|
// Optionally the status of the current run (in terms of
|
|
// fal cloud).
|
|
optional HostedRunStatus status = 2;
|
|
|
|
// The most recent logs from the run.
|
|
repeated Log logs = 3;
|
|
|
|
// The result of the run, if it is complete (indicated by
|
|
// status.is_complete).
|
|
optional SerializedObject return_value = 4;
|
|
}
|
|
|
|
message HostedRunStatus {
|
|
enum State {
|
|
// The run is in progress.
|
|
IN_PROGRESS = 0;
|
|
// The run has completed successfully.
|
|
SUCCESS = 1;
|
|
// The run has failed because of isolate.
|
|
INTERNAL_FAILURE = 2;
|
|
// TODO: probably QUEUED, etc.
|
|
}
|
|
|
|
// The state of the run.
|
|
State state = 1;
|
|
|
|
// TODO: probably a free form struct for more detailed
|
|
// information (how it crashed, position in queue, etc).
|
|
}
|
|
|
|
message MachineRequirements {
|
|
// Machine type. It is not an enum because we want to be able
|
|
// to dynamically add new machine types without regenerating
|
|
// both the client and the server. Validation is done at the
|
|
// server side.
|
|
string machine_type = 1;
|
|
optional int32 keep_alive = 2;
|
|
}
|