talos/api/machine/api.proto
Andrew Rynhard 6efd6fbe08 chore: move gRPC API to public
In order for other projects to make use of our APIs, they must not
reside underneath the internal directory. This moves the protobuf
definitions to a top-level "api" directory and scopes them according to
their domain. This change also removes generated code from the gitignore
file so that users don't have to generate the code themseleves.

Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
2019-09-19 08:55:13 -07:00

183 lines
4.4 KiB
Protocol Buffer

syntax = "proto3";
package proto;
option go_package = "proto";
option java_multiple_files = true;
option java_outer_classname = "ApiProto";
option java_package = "com.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
// The Init service definition.
service Init {
rpc CopyOut(CopyOutRequest) returns (stream StreamingData);
rpc DF(google.protobuf.Empty) returns (DFReply);
rpc LS(LSRequest) returns (stream FileInfo);
rpc Reboot(google.protobuf.Empty) returns (RebootReply);
rpc Reset(google.protobuf.Empty) returns (ResetReply);
rpc Shutdown(google.protobuf.Empty) returns (ShutdownReply);
rpc Upgrade(UpgradeRequest) returns (UpgradeReply);
rpc ServiceList(google.protobuf.Empty) returns (ServiceListReply);
rpc ServiceStart(ServiceStartRequest) returns (ServiceStartReply);
rpc ServiceStop(ServiceStopRequest) returns (ServiceStopReply);
rpc ServiceRestart(ServiceRestartRequest) returns (ServiceRestartReply);
rpc Start(StartRequest) returns (StartReply) {
option deprecated = true;
};
rpc Stop(StopRequest) returns (StopReply) {
option deprecated = true;
};
}
// The response message containing the reboot status.
message RebootReply {}
// The response message containing the restart status.
message ResetReply {}
// The response message containing the shutdown status.
message ShutdownReply {}
message UpgradeRequest {
string image = 1;
}
message UpgradeReply {
string ack = 1;
}
message ServiceListReply {
repeated ServiceInfo services = 1;
}
message ServiceInfo {
string id = 1;
string state = 2;
ServiceEvents events = 3;
ServiceHealth health = 4;
}
message ServiceEvents {
repeated ServiceEvent events = 1;
}
message ServiceEvent {
string msg = 1;
string state = 2;
google.protobuf.Timestamp ts = 3;
}
message ServiceHealth {
bool unknown = 1;
bool healthy = 2;
string last_message = 3;
google.protobuf.Timestamp last_change = 4;
}
message ServiceStartRequest {
string id = 1;
}
message ServiceStartReply {
string resp = 1;
}
message ServiceStopRequest {
string id = 1;
}
message ServiceStopReply {
string resp = 1;
}
message ServiceRestartRequest {
string id = 1;
}
message ServiceRestartReply {
string resp = 1;
}
message StartRequest {
option deprecated = true;
string id = 1;
}
message StartReply {
option deprecated = true;
string resp = 1;
}
message StopRequest {
option deprecated = true;
string id = 1;
}
message StopReply {
option deprecated = true;
string resp = 1;
}
// StreamingData is used to stream back responses
message StreamingData {
bytes bytes = 1;
string errors = 2;
}
// CopyOutRequest describes a request to copy data out of Talos node
//
// CopyOut produces .tar.gz archive which is streamed back to the caller
message CopyOutRequest {
// Root path to start copying data out, it might be either a file or directory
string root_path = 1;
}
// LSRequest describes a request to list the contents of a directory
message LSRequest {
// Root indicates the root directory for the list. If not indicated, '/' is
// presumed.
string root = 1;
// Recurse indicates that subdirectories should be recursed.
bool recurse = 2;
// RecursionDepth indicates how many levels of subdirectories should be
// recursed. The default (0) indicates that no limit should be enforced.
int32 recursion_depth = 3;
}
// FileInfo describes a file or directory's information
message FileInfo {
// Name is the name (including prefixed path) of the file or directory
string name = 1;
// Size indicates the number of bytes contained within the file
int64 size = 2;
// Mode is the bitmap of UNIX mode/permission flags of the file
uint32 mode = 3;
// Modified indicates the UNIX timestamp at which the file was last modified
int64 modified = 4; // TODO: unix timestamp or include proto's Date type
// IsDir indicates that the file is a directory
bool is_dir = 5;
// Error describes any error encountered while trying to read the file
// information.
string error = 6;
// Link is filled with symlink target
string link = 7;
// RelativeName is the name of the file or directory relative to the RootPath
string relative_name = 8;
}
// The response message containing the requested df stats.
message DFReply {
repeated DFStat stats = 1;
}
// The response message containing the requested processes.
message DFStat {
string filesystem = 1;
uint64 size = 2;
uint64 available = 3;
string mounted_on = 4;
}