talos/api/machine/machine.proto
Andrey Smirnov edb40437ec feat: add support for osctl logs -f
Now default is not to follow the logs (which is similar to `kubectl logs`).

Integration test was added for `Logs()` API and `osctl logs` command.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2019-12-05 13:58:52 -08:00

266 lines
6.5 KiB
Protocol Buffer

syntax = "proto3";
package machine;
option go_package = "github.com/talos-systems/talos/api/machine";
option java_multiple_files = true;
option java_outer_classname = "MachineApi";
option java_package = "com.machine.api";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
import "common/common.proto";
// The machine service definition.
service Machine {
rpc CopyOut(CopyOutRequest) returns (stream common.DataResponse);
rpc Kubeconfig(google.protobuf.Empty) returns (stream common.DataResponse);
rpc LS(LSRequest) returns (stream FileInfo);
rpc Logs(LogsRequest) returns (stream common.DataResponse);
rpc Mounts(google.protobuf.Empty) returns (MountsReply);
rpc Read(ReadRequest) returns (stream common.DataResponse);
rpc Reboot(google.protobuf.Empty) returns (RebootReply);
rpc Reset(google.protobuf.Empty) returns (ResetReply);
rpc ServiceList(google.protobuf.Empty) returns (ServiceListReply);
rpc ServiceRestart(ServiceRestartRequest) returns (ServiceRestartReply);
rpc ServiceStart(ServiceStartRequest) returns (ServiceStartReply);
rpc ServiceStop(ServiceStopRequest) returns (ServiceStopReply);
rpc Shutdown(google.protobuf.Empty) returns (ShutdownReply);
rpc Upgrade(UpgradeRequest) returns (UpgradeReply);
rpc Start(StartRequest) returns (StartReply) {
option deprecated = true;
};
rpc Stop(StopRequest) returns (StopReply) {
option deprecated = true;
};
rpc Version(google.protobuf.Empty) returns (VersionReply);
}
// rpc reboot
// The response message containing the reboot status.
message RebootResponse {
common.ResponseMetadata metadata = 1;
}
message RebootReply {
repeated RebootResponse response = 1;
}
// rpc reset
// The response message containing the restart status.
message ResetResponse {
common.ResponseMetadata metadata = 1;
}
message ResetReply {
repeated ResetResponse response = 1;
}
// rpc shutdown
// The response message containing the shutdown status.
message ShutdownResponse {
common.ResponseMetadata metadata = 1;
}
message ShutdownReply {
repeated ShutdownResponse response = 1;
}
// rpc upgrade
message UpgradeRequest {
string image = 1;
}
message UpgradeResponse {
common.ResponseMetadata metadata = 1;
string ack = 2;
}
message UpgradeReply {
repeated UpgradeResponse response = 1;
}
// rpc servicelist
message ServiceListResponse {
common.ResponseMetadata metadata = 1;
repeated ServiceInfo services = 2;
}
message ServiceListReply {
repeated ServiceListResponse response = 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;
}
// rpc servicestart
message ServiceStartRequest {
string id = 1;
}
message ServiceStartResponse {
common.ResponseMetadata metadata = 1;
string resp = 2;
}
message ServiceStartReply {
repeated ServiceStartResponse response = 1;
}
message ServiceStopRequest {
string id = 1;
}
message ServiceStopResponse {
common.ResponseMetadata metadata = 1;
string resp = 2;
}
message ServiceStopReply {
repeated ServiceStopResponse response = 1;
}
message ServiceRestartRequest {
string id = 1;
}
message ServiceRestartResponse {
common.ResponseMetadata metadata = 1;
string resp = 2;
}
message ServiceRestartReply {
repeated ServiceRestartResponse response = 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;
}
// 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 {
common.ResponseMetadata metadata = 1;
// Name is the name (including prefixed path) of the file or directory
string name = 2;
// Size indicates the number of bytes contained within the file
int64 size = 3;
// Mode is the bitmap of UNIX mode/permission flags of the file
uint32 mode = 4;
// Modified indicates the UNIX timestamp at which the file was last modified
int64 modified = 5; // TODO: unix timestamp or include proto's Date type
// IsDir indicates that the file is a directory
bool is_dir = 6;
// Error describes any error encountered while trying to read the file
// information.
string error = 7;
// Link is filled with symlink target
string link = 8;
// RelativeName is the name of the file or directory relative to the RootPath
string relative_name = 9;
}
// The response message containing the requested df stats.
message MountsResponse {
common.ResponseMetadata metadata = 1;
repeated MountStat stats = 2;
}
message MountsReply {
repeated MountsResponse response = 1;
}
// The response message containing the requested processes.
message MountStat {
string filesystem = 1;
uint64 size = 2;
uint64 available = 3;
string mounted_on = 4;
}
message VersionResponse {
common.ResponseMetadata metadata = 1;
VersionInfo version = 2;
PlatformInfo platform = 3;
}
message VersionReply {
repeated VersionResponse response = 1;
}
message VersionInfo {
string tag = 1;
string sha = 2;
string built = 3;
string go_version = 4;
string os = 5;
string arch = 6;
}
message PlatformInfo {
string name = 1;
string mode = 2;
}
// rpc logs
// The request message containing the process name.
message LogsRequest {
string namespace = 1;
string id = 2;
// driver might be default "containerd" or "cri"
common.ContainerDriver driver = 3;
bool follow = 4;
}
message ReadRequest {
string path = 1;
}