The core change is moving the context out of the `ServiceRunner` struct to be a local variable, and using a channel to notify about shutdown events. Add more synchronization between Run and the moment service started to avoid mis-identifying not running (yet) service as successfully finished. Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com> Co-authored-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
1344 lines
32 KiB
Protocol Buffer
1344 lines
32 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package machine;
|
|
|
|
option go_package = "github.com/siderolabs/talos/pkg/machinery/api/machine";
|
|
|
|
import "common/common.proto";
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
// The machine service definition.
|
|
service MachineService {
|
|
rpc ApplyConfiguration(ApplyConfigurationRequest) returns (ApplyConfigurationResponse);
|
|
// Bootstrap method makes control plane node enter etcd bootstrap mode.
|
|
// Node aborts etcd join sequence and creates single-node etcd cluster.
|
|
// If recover_etcd argument is specified, etcd is recovered from a snapshot
|
|
// uploaded with EtcdRecover.
|
|
rpc Bootstrap(BootstrapRequest) returns (BootstrapResponse);
|
|
rpc Containers(ContainersRequest) returns (ContainersResponse);
|
|
rpc Copy(CopyRequest) returns (stream common.Data);
|
|
rpc CPUInfo(google.protobuf.Empty) returns (CPUInfoResponse);
|
|
rpc DiskStats(google.protobuf.Empty) returns (DiskStatsResponse);
|
|
rpc Dmesg(DmesgRequest) returns (stream common.Data);
|
|
rpc Events(EventsRequest) returns (stream Event);
|
|
rpc EtcdMemberList(EtcdMemberListRequest) returns (EtcdMemberListResponse);
|
|
// EtcdRemoveMemberByID removes a member from the etcd cluster identified by member ID.
|
|
// This API should be used to remove members which don't have an associated Talos node anymore.
|
|
// To remove a member with a running Talos node, use EtcdLeaveCluster API on the node to be removed.
|
|
rpc EtcdRemoveMemberByID(EtcdRemoveMemberByIDRequest) returns (EtcdRemoveMemberByIDResponse);
|
|
rpc EtcdLeaveCluster(EtcdLeaveClusterRequest) returns (EtcdLeaveClusterResponse);
|
|
rpc EtcdForfeitLeadership(EtcdForfeitLeadershipRequest) returns (EtcdForfeitLeadershipResponse);
|
|
// EtcdRecover method uploads etcd data snapshot created with EtcdSnapshot
|
|
// to the node.
|
|
// Snapshot can be later used to recover the cluster via Bootstrap method.
|
|
rpc EtcdRecover(stream common.Data) returns (EtcdRecoverResponse);
|
|
// EtcdSnapshot method creates etcd data snapshot (backup) from the local etcd instance
|
|
// and streams it back to the client.
|
|
// This method is available only on control plane nodes (which run etcd).
|
|
rpc EtcdSnapshot(EtcdSnapshotRequest) returns (stream common.Data);
|
|
// EtcdAlarmList lists etcd alarms for the current node.
|
|
// This method is available only on control plane nodes (which run etcd).
|
|
rpc EtcdAlarmList(google.protobuf.Empty) returns (EtcdAlarmListResponse);
|
|
// EtcdAlarmDisarm disarms etcd alarms for the current node.
|
|
// This method is available only on control plane nodes (which run etcd).
|
|
rpc EtcdAlarmDisarm(google.protobuf.Empty) returns (EtcdAlarmDisarmResponse);
|
|
// EtcdDefragment defragments etcd data directory for the current node.
|
|
// Defragmentation is a resource-heavy operation, so it should only run on a specific
|
|
// node.
|
|
// This method is available only on control plane nodes (which run etcd).
|
|
rpc EtcdDefragment(google.protobuf.Empty) returns (EtcdDefragmentResponse);
|
|
// EtcdStatus returns etcd status for the current member.
|
|
// This method is available only on control plane nodes (which run etcd).
|
|
rpc EtcdStatus(google.protobuf.Empty) returns (EtcdStatusResponse);
|
|
rpc GenerateConfiguration(GenerateConfigurationRequest) returns (GenerateConfigurationResponse);
|
|
rpc Hostname(google.protobuf.Empty) returns (HostnameResponse);
|
|
rpc Kubeconfig(google.protobuf.Empty) returns (stream common.Data);
|
|
rpc List(ListRequest) returns (stream FileInfo);
|
|
rpc DiskUsage(DiskUsageRequest) returns (stream DiskUsageInfo);
|
|
rpc LoadAvg(google.protobuf.Empty) returns (LoadAvgResponse);
|
|
rpc Logs(LogsRequest) returns (stream common.Data);
|
|
rpc LogsContainers(google.protobuf.Empty) returns (LogsContainersResponse);
|
|
rpc Memory(google.protobuf.Empty) returns (MemoryResponse);
|
|
rpc Mounts(google.protobuf.Empty) returns (MountsResponse);
|
|
rpc NetworkDeviceStats(google.protobuf.Empty) returns (NetworkDeviceStatsResponse);
|
|
rpc Processes(google.protobuf.Empty) returns (ProcessesResponse);
|
|
rpc Read(ReadRequest) returns (stream common.Data);
|
|
rpc Reboot(RebootRequest) returns (RebootResponse);
|
|
rpc Restart(RestartRequest) returns (RestartResponse);
|
|
rpc Rollback(RollbackRequest) returns (RollbackResponse);
|
|
rpc Reset(ResetRequest) returns (ResetResponse);
|
|
rpc ServiceList(google.protobuf.Empty) returns (ServiceListResponse);
|
|
rpc ServiceRestart(ServiceRestartRequest) returns (ServiceRestartResponse);
|
|
rpc ServiceStart(ServiceStartRequest) returns (ServiceStartResponse);
|
|
rpc ServiceStop(ServiceStopRequest) returns (ServiceStopResponse);
|
|
rpc Shutdown(ShutdownRequest) returns (ShutdownResponse);
|
|
rpc Stats(StatsRequest) returns (StatsResponse);
|
|
rpc SystemStat(google.protobuf.Empty) returns (SystemStatResponse);
|
|
rpc Upgrade(UpgradeRequest) returns (UpgradeResponse);
|
|
rpc Version(google.protobuf.Empty) returns (VersionResponse);
|
|
// GenerateClientConfiguration generates talosctl client configuration (talosconfig).
|
|
rpc GenerateClientConfiguration(GenerateClientConfigurationRequest) returns (GenerateClientConfigurationResponse);
|
|
// PacketCapture performs packet capture and streams back pcap file.
|
|
rpc PacketCapture(PacketCaptureRequest) returns (stream common.Data);
|
|
// Netstat provides information about network connections.
|
|
rpc Netstat(NetstatRequest) returns (NetstatResponse);
|
|
// MetaWrite writes a META key-value pair.
|
|
rpc MetaWrite(MetaWriteRequest) returns (MetaWriteResponse);
|
|
// MetaDelete deletes a META key.
|
|
rpc MetaDelete(MetaDeleteRequest) returns (MetaDeleteResponse);
|
|
// ImageList lists images in the CRI.
|
|
rpc ImageList(ImageListRequest) returns (stream ImageListResponse);
|
|
// ImagePull pulls an image into the CRI.
|
|
rpc ImagePull(ImagePullRequest) returns (ImagePullResponse);
|
|
}
|
|
|
|
// rpc applyConfiguration
|
|
// ApplyConfiguration describes a request to assert a new configuration upon a
|
|
// node.
|
|
message ApplyConfigurationRequest {
|
|
enum Mode {
|
|
REBOOT = 0;
|
|
AUTO = 1;
|
|
NO_REBOOT = 2;
|
|
STAGED = 3;
|
|
TRY = 4;
|
|
}
|
|
bytes data = 1;
|
|
Mode mode = 4;
|
|
bool dry_run = 5;
|
|
google.protobuf.Duration try_mode_timeout = 6;
|
|
}
|
|
|
|
// ApplyConfigurationResponse describes the response to a configuration request.
|
|
message ApplyConfiguration {
|
|
common.Metadata metadata = 1;
|
|
// Configuration validation warnings.
|
|
repeated string warnings = 2;
|
|
// States which mode was actually chosen.
|
|
ApplyConfigurationRequest.Mode mode = 3;
|
|
// Human-readable message explaining the result of the apply configuration call.
|
|
string mode_details = 4;
|
|
}
|
|
|
|
message ApplyConfigurationResponse {
|
|
repeated ApplyConfiguration messages = 1;
|
|
}
|
|
|
|
// rpc reboot
|
|
message RebootRequest {
|
|
enum Mode {
|
|
DEFAULT = 0;
|
|
POWERCYCLE = 1;
|
|
}
|
|
Mode mode = 1;
|
|
}
|
|
|
|
// The reboot message containing the reboot status.
|
|
message Reboot {
|
|
common.Metadata metadata = 1;
|
|
string actor_id = 2;
|
|
}
|
|
|
|
message RebootResponse {
|
|
repeated Reboot messages = 1;
|
|
}
|
|
|
|
// rpc Bootstrap
|
|
message BootstrapRequest {
|
|
// Enable etcd recovery from the snapshot.
|
|
// Snapshot should be uploaded before this call via EtcdRecover RPC.
|
|
bool recover_etcd = 1;
|
|
// Skip hash check on the snapshot (etcd).
|
|
// Enable this when recovering from data directory copy to skip integrity check.
|
|
bool recover_skip_hash_check = 2;
|
|
}
|
|
|
|
// The bootstrap message containing the bootstrap status.
|
|
message Bootstrap {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message BootstrapResponse {
|
|
repeated Bootstrap messages = 1;
|
|
}
|
|
|
|
// rpc events
|
|
message SequenceEvent {
|
|
string sequence = 1;
|
|
enum Action {
|
|
NOOP = 0;
|
|
START = 1;
|
|
STOP = 2;
|
|
}
|
|
Action action = 2;
|
|
common.Error error = 3;
|
|
}
|
|
|
|
message PhaseEvent {
|
|
string phase = 1;
|
|
enum Action {
|
|
START = 0;
|
|
STOP = 1;
|
|
}
|
|
Action action = 2;
|
|
}
|
|
|
|
message TaskEvent {
|
|
string task = 1;
|
|
enum Action {
|
|
START = 0;
|
|
STOP = 1;
|
|
}
|
|
Action action = 2;
|
|
}
|
|
|
|
message ServiceStateEvent {
|
|
string service = 1;
|
|
enum Action {
|
|
INITIALIZED = 0;
|
|
PREPARING = 1;
|
|
WAITING = 2;
|
|
RUNNING = 3;
|
|
STOPPING = 4;
|
|
FINISHED = 5;
|
|
FAILED = 6;
|
|
SKIPPED = 7;
|
|
STARTING = 8;
|
|
}
|
|
Action action = 2;
|
|
string message = 3;
|
|
ServiceHealth health = 4;
|
|
}
|
|
|
|
message RestartEvent {
|
|
int64 cmd = 1;
|
|
}
|
|
|
|
// ConfigLoadErrorEvent is reported when the config loading has failed.
|
|
message ConfigLoadErrorEvent {
|
|
string error = 1;
|
|
}
|
|
|
|
// ConfigValidationErrorEvent is reported when config validation has failed.
|
|
message ConfigValidationErrorEvent {
|
|
string error = 1;
|
|
}
|
|
|
|
// AddressEvent reports node endpoints aggregated from k8s.Endpoints and network.Hostname.
|
|
message AddressEvent {
|
|
string hostname = 1;
|
|
repeated string addresses = 2;
|
|
}
|
|
|
|
// MachineStatusEvent reports changes to the MachineStatus resource.
|
|
message MachineStatusEvent {
|
|
message MachineStatus {
|
|
message UnmetCondition {
|
|
string name = 1;
|
|
string reason = 2;
|
|
}
|
|
bool ready = 1;
|
|
repeated UnmetCondition unmet_conditions = 2;
|
|
}
|
|
enum MachineStage {
|
|
UNKNOWN = 0;
|
|
BOOTING = 1;
|
|
INSTALLING = 2;
|
|
MAINTENANCE = 3;
|
|
RUNNING = 4;
|
|
REBOOTING = 5;
|
|
SHUTTING_DOWN = 6;
|
|
RESETTING = 7;
|
|
UPGRADING = 8;
|
|
}
|
|
MachineStage stage = 1;
|
|
MachineStatus status = 2;
|
|
}
|
|
|
|
message EventsRequest {
|
|
int32 tail_events = 1;
|
|
string tail_id = 2;
|
|
int32 tail_seconds = 3;
|
|
string with_actor_id = 4;
|
|
}
|
|
|
|
message Event {
|
|
common.Metadata metadata = 1;
|
|
google.protobuf.Any data = 2;
|
|
string id = 3;
|
|
string actor_id = 4;
|
|
}
|
|
|
|
// rpc reset
|
|
message ResetPartitionSpec {
|
|
string label = 1;
|
|
bool wipe = 2;
|
|
}
|
|
|
|
message ResetRequest {
|
|
enum WipeMode {
|
|
ALL = 0;
|
|
SYSTEM_DISK = 1;
|
|
USER_DISKS = 2;
|
|
}
|
|
// Graceful indicates whether node should leave etcd before the upgrade, it also
|
|
// enforces etcd checks before leaving.
|
|
bool graceful = 1;
|
|
// Reboot indicates whether node should reboot or halt after resetting.
|
|
bool reboot = 2;
|
|
// System_partitions_to_wipe lists specific system disk partitions to be reset (wiped).
|
|
// If system_partitions_to_wipe is empty, all the partitions are erased.
|
|
repeated ResetPartitionSpec system_partitions_to_wipe = 3;
|
|
// UserDisksToWipe lists specific connected block devices to be reset (wiped).
|
|
repeated string user_disks_to_wipe = 4;
|
|
// WipeMode defines which devices should be wiped.
|
|
WipeMode mode = 5;
|
|
}
|
|
|
|
// The reset message containing the restart status.
|
|
message Reset {
|
|
common.Metadata metadata = 1;
|
|
string actor_id = 2;
|
|
}
|
|
|
|
message ResetResponse {
|
|
repeated Reset messages = 1;
|
|
}
|
|
|
|
// rpc shutdown
|
|
// The messages message containing the shutdown status.
|
|
message Shutdown {
|
|
common.Metadata metadata = 1;
|
|
string actor_id = 2;
|
|
}
|
|
|
|
message ShutdownRequest {
|
|
// Force indicates whether node should shutdown without first cordening and draining
|
|
bool force = 1;
|
|
}
|
|
|
|
message ShutdownResponse {
|
|
repeated Shutdown messages = 1;
|
|
}
|
|
|
|
// rpc upgrade
|
|
message UpgradeRequest {
|
|
enum RebootMode {
|
|
DEFAULT = 0;
|
|
POWERCYCLE = 1;
|
|
}
|
|
string image = 1;
|
|
bool preserve = 2;
|
|
bool stage = 3;
|
|
bool force = 4;
|
|
RebootMode reboot_mode = 5;
|
|
}
|
|
|
|
message Upgrade {
|
|
common.Metadata metadata = 1;
|
|
string ack = 2;
|
|
string actor_id = 3;
|
|
}
|
|
|
|
message UpgradeResponse {
|
|
repeated Upgrade messages = 1;
|
|
}
|
|
|
|
// rpc servicelist
|
|
message ServiceList {
|
|
common.Metadata metadata = 1;
|
|
repeated ServiceInfo services = 2;
|
|
}
|
|
|
|
message ServiceListResponse {
|
|
repeated ServiceList messages = 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 ServiceStart {
|
|
common.Metadata metadata = 1;
|
|
string resp = 2;
|
|
}
|
|
|
|
message ServiceStartResponse {
|
|
repeated ServiceStart messages = 1;
|
|
}
|
|
|
|
message ServiceStopRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message ServiceStop {
|
|
common.Metadata metadata = 1;
|
|
string resp = 2;
|
|
}
|
|
|
|
message ServiceStopResponse {
|
|
repeated ServiceStop messages = 1;
|
|
}
|
|
|
|
message ServiceRestartRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message ServiceRestart {
|
|
common.Metadata metadata = 1;
|
|
string resp = 2;
|
|
}
|
|
|
|
message ServiceRestartResponse {
|
|
repeated ServiceRestart messages = 1;
|
|
}
|
|
|
|
// CopyRequest describes a request to copy data out of Talos node
|
|
//
|
|
// Copy produces .tar.gz archive which is streamed back to the caller
|
|
message CopyRequest {
|
|
// Root path to start copying data out, it might be either a file or directory
|
|
string root_path = 1;
|
|
}
|
|
|
|
// ListRequest describes a request to list the contents of a directory.
|
|
message ListRequest {
|
|
// 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;
|
|
// File type.
|
|
enum Type {
|
|
// Regular file (not directory, symlink, etc).
|
|
REGULAR = 0;
|
|
// Directory.
|
|
DIRECTORY = 1;
|
|
// Symbolic link.
|
|
SYMLINK = 2;
|
|
}
|
|
// Types indicates what file type should be returned. If not indicated,
|
|
// all files will be returned.
|
|
repeated Type types = 4;
|
|
}
|
|
|
|
// DiskUsageRequest describes a request to list disk usage of directories and regular files
|
|
message DiskUsageRequest {
|
|
// RecursionDepth indicates how many levels of subdirectories should be
|
|
// recursed. The default (0) indicates that no limit should be enforced.
|
|
int32 recursion_depth = 1;
|
|
// All write sizes for all files, not just directories.
|
|
bool all = 2;
|
|
// Threshold exclude entries smaller than SIZE if positive,
|
|
// or entries greater than SIZE if negative.
|
|
int64 threshold = 3;
|
|
// DiskUsagePaths is the list of directories to calculate disk usage for.
|
|
repeated string paths = 4;
|
|
}
|
|
|
|
// FileInfo describes a file or directory's information
|
|
message FileInfo {
|
|
common.Metadata 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;
|
|
// 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;
|
|
// Owner uid
|
|
uint32 uid = 10;
|
|
// Owner gid
|
|
uint32 gid = 11;
|
|
}
|
|
|
|
// DiskUsageInfo describes a file or directory's information for du command
|
|
message DiskUsageInfo {
|
|
common.Metadata 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;
|
|
// Error describes any error encountered while trying to read the file
|
|
// information.
|
|
string error = 4;
|
|
// RelativeName is the name of the file or directory relative to the RootPath
|
|
string relative_name = 5;
|
|
}
|
|
|
|
// The messages message containing the requested df stats.
|
|
message Mounts {
|
|
common.Metadata metadata = 1;
|
|
repeated MountStat stats = 2;
|
|
}
|
|
|
|
message MountsResponse {
|
|
repeated Mounts messages = 1;
|
|
}
|
|
|
|
// The messages message containing the requested processes.
|
|
message MountStat {
|
|
string filesystem = 1;
|
|
uint64 size = 2;
|
|
uint64 available = 3;
|
|
string mounted_on = 4;
|
|
}
|
|
|
|
message Version {
|
|
common.Metadata metadata = 1;
|
|
VersionInfo version = 2;
|
|
PlatformInfo platform = 3;
|
|
// Features describe individual Talos features that can be switched on or off.
|
|
FeaturesInfo features = 4;
|
|
}
|
|
|
|
message VersionResponse {
|
|
repeated Version messages = 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;
|
|
}
|
|
|
|
// FeaturesInfo describes individual Talos features that can be switched on or off.
|
|
message FeaturesInfo {
|
|
// RBAC is true if role-based access control is enabled.
|
|
bool rbac = 1;
|
|
}
|
|
|
|
// 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;
|
|
int32 tail_lines = 5;
|
|
}
|
|
|
|
message ReadRequest {
|
|
string path = 1;
|
|
}
|
|
|
|
// LogsContainer desribes all avalaible registered log containers.
|
|
message LogsContainer {
|
|
common.Metadata metadata = 1;
|
|
repeated string ids = 2;
|
|
}
|
|
|
|
message LogsContainersResponse {
|
|
repeated LogsContainer messages = 1;
|
|
}
|
|
|
|
// rpc rollback
|
|
message RollbackRequest {}
|
|
|
|
message Rollback {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message RollbackResponse {
|
|
repeated Rollback messages = 1;
|
|
}
|
|
|
|
// rpc Containers
|
|
|
|
message ContainersRequest {
|
|
string namespace = 1;
|
|
// driver might be default "containerd" or "cri"
|
|
common.ContainerDriver driver = 2;
|
|
}
|
|
|
|
// The messages message containing the requested containers.
|
|
message ContainerInfo {
|
|
string namespace = 1;
|
|
string id = 2;
|
|
string image = 3;
|
|
uint32 pid = 4;
|
|
string status = 5;
|
|
string pod_id = 6;
|
|
string name = 7;
|
|
string network_namespace = 8;
|
|
}
|
|
|
|
// The messages message containing the requested containers.
|
|
message Container {
|
|
common.Metadata metadata = 1;
|
|
repeated ContainerInfo containers = 2;
|
|
}
|
|
|
|
message ContainersResponse {
|
|
repeated Container messages = 1;
|
|
}
|
|
|
|
// dmesg
|
|
message DmesgRequest {
|
|
bool follow = 1;
|
|
bool tail = 2;
|
|
}
|
|
|
|
// rpc processes
|
|
message ProcessesResponse {
|
|
repeated Process messages = 1;
|
|
}
|
|
|
|
message Process {
|
|
common.Metadata metadata = 1;
|
|
repeated ProcessInfo processes = 2;
|
|
}
|
|
|
|
message ProcessInfo {
|
|
int32 pid = 1;
|
|
int32 ppid = 2;
|
|
string state = 3;
|
|
int32 threads = 4;
|
|
double cpu_time = 5;
|
|
uint64 virtual_memory = 6;
|
|
uint64 resident_memory = 7;
|
|
string command = 8;
|
|
string executable = 9;
|
|
string args = 10;
|
|
}
|
|
|
|
// rpc restart
|
|
// The request message containing the process to restart.
|
|
message RestartRequest {
|
|
string namespace = 1;
|
|
string id = 2;
|
|
// driver might be default "containerd" or "cri"
|
|
common.ContainerDriver driver = 3;
|
|
}
|
|
|
|
message Restart {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
// The messages message containing the restart status.
|
|
message RestartResponse {
|
|
repeated Restart messages = 1;
|
|
}
|
|
|
|
// rpc stats
|
|
|
|
// The request message containing the containerd namespace.
|
|
message StatsRequest {
|
|
string namespace = 1;
|
|
// driver might be default "containerd" or "cri"
|
|
common.ContainerDriver driver = 2;
|
|
}
|
|
|
|
// The messages message containing the requested stats.
|
|
message Stats {
|
|
common.Metadata metadata = 1;
|
|
repeated Stat stats = 2;
|
|
}
|
|
|
|
message StatsResponse {
|
|
repeated Stats messages = 1;
|
|
}
|
|
|
|
// The messages message containing the requested stat.
|
|
message Stat {
|
|
string namespace = 1;
|
|
string id = 2;
|
|
uint64 memory_usage = 4;
|
|
uint64 cpu_usage = 5;
|
|
string pod_id = 6;
|
|
string name = 7;
|
|
}
|
|
|
|
message Memory {
|
|
common.Metadata metadata = 1;
|
|
MemInfo meminfo = 2;
|
|
}
|
|
|
|
message MemoryResponse {
|
|
repeated Memory messages = 1;
|
|
}
|
|
|
|
message MemInfo {
|
|
uint64 memtotal = 1;
|
|
uint64 memfree = 2;
|
|
uint64 memavailable = 3;
|
|
uint64 buffers = 4;
|
|
uint64 cached = 5;
|
|
uint64 swapcached = 6;
|
|
uint64 active = 7;
|
|
uint64 inactive = 8;
|
|
uint64 activeanon = 9;
|
|
uint64 inactiveanon = 10;
|
|
uint64 activefile = 11;
|
|
uint64 inactivefile = 12;
|
|
uint64 unevictable = 13;
|
|
uint64 mlocked = 14;
|
|
uint64 swaptotal = 15;
|
|
uint64 swapfree = 16;
|
|
uint64 dirty = 17;
|
|
uint64 writeback = 18;
|
|
uint64 anonpages = 19;
|
|
uint64 mapped = 20;
|
|
uint64 shmem = 21;
|
|
uint64 slab = 22;
|
|
uint64 sreclaimable = 23;
|
|
uint64 sunreclaim = 24;
|
|
uint64 kernelstack = 25;
|
|
uint64 pagetables = 26;
|
|
uint64 nfsunstable = 27;
|
|
uint64 bounce = 28;
|
|
uint64 writebacktmp = 29;
|
|
uint64 commitlimit = 30;
|
|
uint64 committedas = 31;
|
|
uint64 vmalloctotal = 32;
|
|
uint64 vmallocused = 33;
|
|
uint64 vmallocchunk = 34;
|
|
uint64 hardwarecorrupted = 35;
|
|
uint64 anonhugepages = 36;
|
|
uint64 shmemhugepages = 37;
|
|
uint64 shmempmdmapped = 38;
|
|
uint64 cmatotal = 39;
|
|
uint64 cmafree = 40;
|
|
uint64 hugepagestotal = 41;
|
|
uint64 hugepagesfree = 42;
|
|
uint64 hugepagesrsvd = 43;
|
|
uint64 hugepagessurp = 44;
|
|
uint64 hugepagesize = 45;
|
|
uint64 directmap4k = 46;
|
|
uint64 directmap2m = 47;
|
|
uint64 directmap1g = 48;
|
|
}
|
|
|
|
// rpc Hostname
|
|
|
|
message HostnameResponse {
|
|
repeated Hostname messages = 1;
|
|
}
|
|
|
|
message Hostname {
|
|
common.Metadata metadata = 1;
|
|
string hostname = 2;
|
|
}
|
|
|
|
// rpc LoadAvg
|
|
|
|
message LoadAvgResponse {
|
|
repeated LoadAvg messages = 1;
|
|
}
|
|
|
|
message LoadAvg {
|
|
common.Metadata metadata = 1;
|
|
double load1 = 2;
|
|
double load5 = 3;
|
|
double load15 = 4;
|
|
}
|
|
|
|
// rpc SystemStat
|
|
|
|
message SystemStatResponse {
|
|
repeated SystemStat messages = 1;
|
|
}
|
|
|
|
message SystemStat {
|
|
common.Metadata metadata = 1;
|
|
uint64 boot_time = 2;
|
|
CPUStat cpu_total = 3;
|
|
repeated CPUStat cpu = 4;
|
|
uint64 irq_total = 5;
|
|
repeated uint64 irq = 6;
|
|
uint64 context_switches = 7;
|
|
uint64 process_created = 8;
|
|
uint64 process_running = 9;
|
|
uint64 process_blocked = 10;
|
|
uint64 soft_irq_total = 11;
|
|
SoftIRQStat soft_irq = 12;
|
|
}
|
|
|
|
message CPUStat {
|
|
double user = 1;
|
|
double nice = 2;
|
|
double system = 3;
|
|
double idle = 4;
|
|
double iowait = 5;
|
|
double irq = 6;
|
|
double soft_irq = 7;
|
|
double steal = 8;
|
|
double guest = 9;
|
|
double guest_nice = 10;
|
|
}
|
|
|
|
message SoftIRQStat {
|
|
uint64 hi = 1;
|
|
uint64 timer = 2;
|
|
uint64 net_tx = 3;
|
|
uint64 net_rx = 4;
|
|
uint64 block = 5;
|
|
uint64 block_io_poll = 6;
|
|
uint64 tasklet = 7;
|
|
uint64 sched = 8;
|
|
uint64 hrtimer = 9;
|
|
uint64 rcu = 10;
|
|
}
|
|
|
|
// rpc CPUInfo
|
|
|
|
message CPUInfoResponse {
|
|
repeated CPUsInfo messages = 1;
|
|
}
|
|
|
|
message CPUsInfo {
|
|
common.Metadata metadata = 1;
|
|
repeated CPUInfo cpu_info = 2;
|
|
}
|
|
|
|
message CPUInfo {
|
|
uint32 processor = 1;
|
|
string vendor_id = 2;
|
|
string cpu_family = 3;
|
|
string model = 4;
|
|
string model_name = 5;
|
|
string stepping = 6;
|
|
string microcode = 7;
|
|
double cpu_mhz = 8;
|
|
string cache_size = 9;
|
|
string physical_id = 10;
|
|
uint32 siblings = 11;
|
|
string core_id = 12;
|
|
uint32 cpu_cores = 13;
|
|
string apic_id = 14;
|
|
string initial_apic_id = 15;
|
|
string fpu = 16;
|
|
string fpu_exception = 17;
|
|
uint32 cpu_id_level = 18;
|
|
string wp = 19;
|
|
repeated string flags = 20;
|
|
repeated string bugs = 21;
|
|
double bogo_mips = 22;
|
|
uint32 cl_flush_size = 23;
|
|
uint32 cache_alignment = 24;
|
|
string address_sizes = 25;
|
|
string power_management = 26;
|
|
}
|
|
|
|
// rpc NetworkDeviceStats
|
|
|
|
message NetworkDeviceStatsResponse {
|
|
repeated NetworkDeviceStats messages = 1;
|
|
}
|
|
|
|
message NetworkDeviceStats {
|
|
common.Metadata metadata = 1;
|
|
NetDev total = 2;
|
|
repeated NetDev devices = 3;
|
|
}
|
|
|
|
message NetDev {
|
|
string name = 1;
|
|
uint64 rx_bytes = 2;
|
|
uint64 rx_packets = 3;
|
|
uint64 rx_errors = 4;
|
|
uint64 rx_dropped = 5;
|
|
uint64 rx_fifo = 6;
|
|
uint64 rx_frame = 7;
|
|
uint64 rx_compressed = 8;
|
|
uint64 rx_multicast = 9;
|
|
uint64 tx_bytes = 10;
|
|
uint64 tx_packets = 11;
|
|
uint64 tx_errors = 12;
|
|
uint64 tx_dropped = 13;
|
|
uint64 tx_fifo = 14;
|
|
uint64 tx_collisions = 15;
|
|
uint64 tx_carrier = 16;
|
|
uint64 tx_compressed = 17;
|
|
}
|
|
|
|
// rpc DiskStats
|
|
|
|
message DiskStatsResponse {
|
|
repeated DiskStats messages = 1;
|
|
}
|
|
|
|
message DiskStats {
|
|
common.Metadata metadata = 1;
|
|
DiskStat total = 2;
|
|
repeated DiskStat devices = 3;
|
|
}
|
|
|
|
message DiskStat {
|
|
string name = 1;
|
|
uint64 read_completed = 2;
|
|
uint64 read_merged = 3;
|
|
uint64 read_sectors = 4;
|
|
uint64 read_time_ms = 5;
|
|
uint64 write_completed = 6;
|
|
uint64 write_merged = 7;
|
|
uint64 write_sectors = 8;
|
|
uint64 write_time_ms = 9;
|
|
uint64 io_in_progress = 10;
|
|
uint64 io_time_ms = 11;
|
|
uint64 io_time_weighted_ms = 12;
|
|
uint64 discard_completed = 13;
|
|
uint64 discard_merged = 14;
|
|
uint64 discard_sectors = 15;
|
|
uint64 discard_time_ms = 16;
|
|
}
|
|
|
|
message EtcdLeaveClusterRequest {}
|
|
|
|
message EtcdLeaveCluster {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message EtcdLeaveClusterResponse {
|
|
repeated EtcdLeaveCluster messages = 1;
|
|
}
|
|
|
|
message EtcdRemoveMemberRequest {
|
|
string member = 1;
|
|
}
|
|
|
|
message EtcdRemoveMember {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message EtcdRemoveMemberResponse {
|
|
repeated EtcdRemoveMember messages = 1;
|
|
}
|
|
|
|
message EtcdRemoveMemberByIDRequest {
|
|
uint64 member_id = 1;
|
|
}
|
|
|
|
message EtcdRemoveMemberByID {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message EtcdRemoveMemberByIDResponse {
|
|
repeated EtcdRemoveMemberByID messages = 1;
|
|
}
|
|
|
|
message EtcdForfeitLeadershipRequest {}
|
|
|
|
message EtcdForfeitLeadership {
|
|
common.Metadata metadata = 1;
|
|
string member = 2;
|
|
}
|
|
|
|
message EtcdForfeitLeadershipResponse {
|
|
repeated EtcdForfeitLeadership messages = 1;
|
|
}
|
|
|
|
message EtcdMemberListRequest {
|
|
bool query_local = 1;
|
|
}
|
|
|
|
// EtcdMember describes a single etcd member.
|
|
message EtcdMember {
|
|
// member ID.
|
|
uint64 id = 2;
|
|
// human-readable name of the member.
|
|
string hostname = 3;
|
|
// the list of URLs the member exposes to clients for communication.
|
|
repeated string peer_urls = 4;
|
|
// the list of URLs the member exposes to the cluster for communication.
|
|
repeated string client_urls = 5;
|
|
// learner flag
|
|
bool is_learner = 6;
|
|
}
|
|
|
|
// EtcdMembers contains the list of members registered on the host.
|
|
message EtcdMembers {
|
|
common.Metadata metadata = 1;
|
|
// list of member hostnames.
|
|
repeated string legacy_members = 2;
|
|
// the list of etcd members registered on the node.
|
|
repeated EtcdMember members = 3;
|
|
}
|
|
|
|
message EtcdMemberListResponse {
|
|
repeated EtcdMembers messages = 1;
|
|
}
|
|
|
|
message EtcdSnapshotRequest {}
|
|
|
|
message EtcdRecover {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message EtcdRecoverResponse {
|
|
repeated EtcdRecover messages = 1;
|
|
}
|
|
|
|
message EtcdAlarmListResponse {
|
|
repeated EtcdAlarm messages = 1;
|
|
}
|
|
|
|
message EtcdAlarm {
|
|
common.Metadata metadata = 1;
|
|
repeated EtcdMemberAlarm member_alarms = 2;
|
|
}
|
|
|
|
message EtcdMemberAlarm {
|
|
enum AlarmType {
|
|
NONE = 0;
|
|
NOSPACE = 1;
|
|
CORRUPT = 2;
|
|
}
|
|
uint64 member_id = 1;
|
|
AlarmType alarm = 2;
|
|
}
|
|
|
|
message EtcdAlarmDisarmResponse {
|
|
repeated EtcdAlarmDisarm messages = 1;
|
|
}
|
|
|
|
message EtcdAlarmDisarm {
|
|
common.Metadata metadata = 1;
|
|
repeated EtcdMemberAlarm member_alarms = 2;
|
|
}
|
|
|
|
message EtcdDefragmentResponse {
|
|
repeated EtcdDefragment messages = 1;
|
|
}
|
|
|
|
message EtcdDefragment {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message EtcdStatusResponse {
|
|
repeated EtcdStatus messages = 1;
|
|
}
|
|
|
|
message EtcdStatus {
|
|
common.Metadata metadata = 1;
|
|
EtcdMemberStatus member_status = 2;
|
|
}
|
|
|
|
message EtcdMemberStatus {
|
|
uint64 member_id = 10;
|
|
string protocol_version = 1;
|
|
int64 db_size = 2;
|
|
int64 db_size_in_use = 3;
|
|
uint64 leader = 4;
|
|
uint64 raft_index = 5;
|
|
uint64 raft_term = 6;
|
|
uint64 raft_applied_index = 7;
|
|
repeated string errors = 8;
|
|
bool is_learner = 9;
|
|
}
|
|
|
|
// rpc generateConfiguration
|
|
|
|
message RouteConfig {
|
|
string network = 1;
|
|
string gateway = 2;
|
|
uint32 metric = 3;
|
|
}
|
|
|
|
message DHCPOptionsConfig {
|
|
uint32 route_metric = 1;
|
|
}
|
|
|
|
message NetworkDeviceConfig {
|
|
string interface = 1;
|
|
string cidr = 2;
|
|
int32 mtu = 3;
|
|
bool dhcp = 4;
|
|
bool ignore = 5;
|
|
DHCPOptionsConfig dhcp_options = 6;
|
|
repeated RouteConfig routes = 7;
|
|
}
|
|
|
|
message NetworkConfig {
|
|
string hostname = 1;
|
|
repeated NetworkDeviceConfig interfaces = 2;
|
|
}
|
|
|
|
message InstallConfig {
|
|
string install_disk = 1;
|
|
string install_image = 2;
|
|
}
|
|
|
|
message MachineConfig {
|
|
enum MachineType {
|
|
TYPE_UNKNOWN = 0;
|
|
TYPE_INIT = 1;
|
|
TYPE_CONTROL_PLANE = 2;
|
|
TYPE_WORKER = 3;
|
|
}
|
|
MachineType type = 1;
|
|
InstallConfig install_config = 2;
|
|
NetworkConfig network_config = 3;
|
|
string kubernetes_version = 4;
|
|
}
|
|
|
|
message ControlPlaneConfig {
|
|
string endpoint = 1;
|
|
}
|
|
|
|
message CNIConfig {
|
|
string name = 1;
|
|
repeated string urls = 2;
|
|
}
|
|
|
|
message ClusterNetworkConfig {
|
|
string dns_domain = 1;
|
|
CNIConfig cni_config = 2;
|
|
}
|
|
|
|
message ClusterConfig {
|
|
string name = 1;
|
|
ControlPlaneConfig control_plane = 2;
|
|
ClusterNetworkConfig cluster_network = 3;
|
|
bool allow_scheduling_on_control_planes = 4;
|
|
}
|
|
|
|
// GenerateConfigurationRequest describes a request to generate a new configuration
|
|
// on a node.
|
|
message GenerateConfigurationRequest {
|
|
string config_version = 1;
|
|
ClusterConfig cluster_config = 2;
|
|
MachineConfig machine_config = 3;
|
|
google.protobuf.Timestamp override_time = 4;
|
|
}
|
|
|
|
// GenerateConfiguration describes the response to a generate configuration request.
|
|
message GenerateConfiguration {
|
|
common.Metadata metadata = 1;
|
|
repeated bytes data = 2;
|
|
bytes talosconfig = 3;
|
|
}
|
|
|
|
message GenerateConfigurationResponse {
|
|
repeated GenerateConfiguration messages = 1;
|
|
}
|
|
|
|
message GenerateClientConfigurationRequest {
|
|
// Roles in the generated client certificate.
|
|
repeated string roles = 1;
|
|
// Client certificate TTL.
|
|
google.protobuf.Duration crt_ttl = 2;
|
|
}
|
|
|
|
message GenerateClientConfiguration {
|
|
common.Metadata metadata = 1;
|
|
// PEM-encoded CA certificate.
|
|
bytes ca = 2;
|
|
// PEM-encoded generated client certificate.
|
|
bytes crt = 3;
|
|
// PEM-encoded generated client key.
|
|
bytes key = 4;
|
|
// Client configuration (talosconfig) file content.
|
|
bytes talosconfig = 5;
|
|
}
|
|
|
|
message GenerateClientConfigurationResponse {
|
|
repeated GenerateClientConfiguration messages = 1;
|
|
}
|
|
|
|
message PacketCaptureRequest {
|
|
// Interface name to perform packet capture on.
|
|
string interface = 1;
|
|
// Enable promiscuous mode.
|
|
bool promiscuous = 2;
|
|
// Snap length in bytes.
|
|
uint32 snap_len = 3;
|
|
// BPF filter.
|
|
repeated BPFInstruction bpf_filter = 4;
|
|
}
|
|
|
|
message BPFInstruction {
|
|
uint32 op = 1;
|
|
uint32 jt = 2;
|
|
uint32 jf = 3;
|
|
uint32 k = 4;
|
|
}
|
|
|
|
message NetstatRequest {
|
|
enum Filter {
|
|
ALL = 0;
|
|
CONNECTED = 1;
|
|
LISTENING = 2;
|
|
}
|
|
Filter filter = 1;
|
|
message Feature {
|
|
bool pid = 1;
|
|
}
|
|
Feature feature = 2;
|
|
message L4proto {
|
|
bool tcp = 1;
|
|
bool tcp6 = 2;
|
|
bool udp = 3;
|
|
bool udp6 = 4;
|
|
bool udplite = 5;
|
|
bool udplite6 = 6;
|
|
bool raw = 7;
|
|
bool raw6 = 8;
|
|
}
|
|
L4proto l4proto = 3;
|
|
message NetNS {
|
|
bool hostnetwork = 1;
|
|
repeated string netns = 2;
|
|
bool allnetns = 3;
|
|
}
|
|
NetNS netns = 4;
|
|
}
|
|
|
|
message ConnectRecord {
|
|
string l4proto = 1;
|
|
string localip = 2;
|
|
uint32 localport = 3;
|
|
string remoteip = 4;
|
|
uint32 remoteport = 5;
|
|
enum State {
|
|
RESERVED = 0;
|
|
ESTABLISHED = 1;
|
|
SYN_SENT = 2;
|
|
SYN_RECV = 3;
|
|
FIN_WAIT1 = 4;
|
|
FIN_WAIT2 = 5;
|
|
TIME_WAIT = 6;
|
|
CLOSE = 7;
|
|
CLOSEWAIT = 8;
|
|
LASTACK = 9;
|
|
LISTEN = 10;
|
|
CLOSING = 11;
|
|
}
|
|
State state = 6;
|
|
uint64 txqueue = 7;
|
|
uint64 rxqueue = 8;
|
|
enum TimerActive {
|
|
OFF = 0;
|
|
ON = 1;
|
|
KEEPALIVE = 2;
|
|
TIMEWAIT = 3;
|
|
PROBE = 4;
|
|
}
|
|
TimerActive tr = 9;
|
|
uint64 timerwhen = 10;
|
|
uint64 retrnsmt = 11;
|
|
uint32 uid = 12;
|
|
uint64 timeout = 13;
|
|
uint64 inode = 14;
|
|
uint64 ref = 15;
|
|
uint64 pointer = 16;
|
|
message Process {
|
|
uint32 pid = 1;
|
|
string name = 2;
|
|
}
|
|
Process process = 17;
|
|
string netns = 18;
|
|
}
|
|
|
|
message Netstat {
|
|
common.Metadata metadata = 1;
|
|
repeated ConnectRecord connectrecord = 2;
|
|
}
|
|
|
|
message NetstatResponse {
|
|
repeated Netstat messages = 1;
|
|
}
|
|
|
|
message MetaWriteRequest {
|
|
uint32 key = 1;
|
|
bytes value = 2;
|
|
}
|
|
|
|
message MetaWrite {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message MetaWriteResponse {
|
|
repeated MetaWrite messages = 1;
|
|
}
|
|
|
|
message MetaDeleteRequest {
|
|
uint32 key = 1;
|
|
}
|
|
|
|
message MetaDelete {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message MetaDeleteResponse {
|
|
repeated MetaDelete messages = 1;
|
|
}
|
|
|
|
message ImageListRequest {
|
|
// Containerd namespace to use.
|
|
common.ContainerdNamespace namespace = 1;
|
|
}
|
|
|
|
message ImageListResponse {
|
|
common.Metadata metadata = 1;
|
|
string name = 2;
|
|
string digest = 3;
|
|
int64 size = 4;
|
|
google.protobuf.Timestamp created_at = 5;
|
|
}
|
|
|
|
message ImagePullRequest {
|
|
// Containerd namespace to use.
|
|
common.ContainerdNamespace namespace = 1;
|
|
// Image reference to pull.
|
|
string reference = 2;
|
|
}
|
|
|
|
message ImagePull {
|
|
common.Metadata metadata = 1;
|
|
}
|
|
|
|
message ImagePullResponse {
|
|
repeated ImagePull messages = 1;
|
|
}
|