343 lines
9.2 KiB
Protocol Buffer
343 lines
9.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package types;
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
service API {
|
|
rpc GetServerVersion(GetServerVersionRequest) returns (GetServerVersionResponse) {}
|
|
rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {}
|
|
rpc UpdateContainer(UpdateContainerRequest) returns (UpdateContainerResponse) {}
|
|
rpc Signal(SignalRequest) returns (SignalResponse) {}
|
|
rpc UpdateProcess(UpdateProcessRequest) returns (UpdateProcessResponse) {}
|
|
rpc AddProcess(AddProcessRequest) returns (AddProcessResponse) {}
|
|
rpc CreateCheckpoint(CreateCheckpointRequest) returns (CreateCheckpointResponse) {}
|
|
rpc DeleteCheckpoint(DeleteCheckpointRequest) returns (DeleteCheckpointResponse) {}
|
|
rpc ListCheckpoint(ListCheckpointRequest) returns (ListCheckpointResponse) {}
|
|
rpc State(StateRequest) returns (StateResponse) {}
|
|
rpc Events(EventsRequest) returns (stream Event) {}
|
|
rpc Stats(StatsRequest) returns (StatsResponse) {}
|
|
}
|
|
|
|
message GetServerVersionRequest {
|
|
}
|
|
|
|
message GetServerVersionResponse {
|
|
uint32 major = 1;
|
|
uint32 minor = 2;
|
|
uint32 patch = 3;
|
|
string revision = 4;
|
|
}
|
|
|
|
message UpdateProcessRequest {
|
|
string id = 1;
|
|
string pid = 2;
|
|
bool closeStdin = 3; // Close stdin of the container
|
|
uint32 width = 4;
|
|
uint32 height = 5;
|
|
}
|
|
|
|
message UpdateProcessResponse {
|
|
}
|
|
|
|
message CreateContainerRequest {
|
|
string id = 1; // ID of container
|
|
string bundlePath = 2; // path to OCI bundle
|
|
string checkpoint = 3; // checkpoint name if you want to create immediate checkpoint (optional)
|
|
string stdin = 4; // path to the file where stdin will be read (optional)
|
|
string stdout = 5; // path to file where stdout will be written (optional)
|
|
string stderr = 6; // path to file where stderr will be written (optional)
|
|
repeated string labels = 7;
|
|
bool noPivotRoot = 8;
|
|
string runtime = 9;
|
|
repeated string runtimeArgs = 10;
|
|
string checkpointDir = 11; // Directory where checkpoints are stored
|
|
}
|
|
|
|
message CreateContainerResponse {
|
|
Container container = 1;
|
|
}
|
|
|
|
message SignalRequest {
|
|
string id = 1; // ID of container
|
|
string pid = 2; // PID of process inside container
|
|
uint32 signal = 3; // Signal which will be sent, you can find value in "man 7 signal"
|
|
}
|
|
|
|
message SignalResponse {
|
|
}
|
|
|
|
message AddProcessRequest {
|
|
string id = 1; // ID of container
|
|
bool terminal = 2; // Use tty for container stdio
|
|
User user = 3; // User under which process will be run
|
|
repeated string args = 4; // Arguments for process, first is binary path itself
|
|
repeated string env = 5; // List of environment variables for process
|
|
string cwd = 6; // Workind directory of process
|
|
string pid = 7; // Process ID
|
|
string stdin = 8; // path to the file where stdin will be read (optional)
|
|
string stdout = 9; // path to file where stdout will be written (optional)
|
|
string stderr = 10; // path to file where stderr will be written (optional)
|
|
repeated string capabilities = 11;
|
|
string apparmorProfile = 12;
|
|
string selinuxLabel = 13;
|
|
bool noNewPrivileges = 14;
|
|
repeated Rlimit rlimits = 15;
|
|
}
|
|
|
|
message Rlimit {
|
|
string type = 1;
|
|
uint64 soft = 2;
|
|
uint64 hard = 3;
|
|
}
|
|
|
|
message User {
|
|
uint32 uid = 1; // UID of user
|
|
uint32 gid = 2; // GID of user
|
|
repeated uint32 additionalGids = 3; // Additional groups to which user will be added
|
|
}
|
|
|
|
message AddProcessResponse {
|
|
}
|
|
|
|
message CreateCheckpointRequest {
|
|
string id = 1; // ID of container
|
|
Checkpoint checkpoint = 2; // Checkpoint configuration
|
|
string checkpointDir = 3; // Directory where checkpoints are stored
|
|
}
|
|
|
|
message CreateCheckpointResponse {
|
|
}
|
|
|
|
message DeleteCheckpointRequest {
|
|
string id = 1; // ID of container
|
|
string name = 2; // Name of checkpoint
|
|
string checkpointDir = 3; // Directory where checkpoints are stored
|
|
}
|
|
|
|
message DeleteCheckpointResponse {
|
|
}
|
|
|
|
message ListCheckpointRequest {
|
|
string id = 1; // ID of container
|
|
string checkpointDir = 2; // Directory where checkpoints are stored
|
|
}
|
|
|
|
message Checkpoint {
|
|
string name = 1; // Name of checkpoint
|
|
bool exit = 2; // checkpoint configuration: should container exit on checkpoint or not
|
|
bool tcp = 3; // allow open tcp connections
|
|
bool unixSockets = 4; // allow external unix sockets
|
|
bool shell = 5; // allow shell-jobs
|
|
repeated string emptyNS = 6;
|
|
}
|
|
|
|
message ListCheckpointResponse {
|
|
repeated Checkpoint checkpoints = 1; // List of checkpoints
|
|
}
|
|
|
|
message StateRequest {
|
|
string id = 1; // container id for a single container
|
|
}
|
|
|
|
message ContainerState {
|
|
string status = 1;
|
|
}
|
|
|
|
message Process {
|
|
string pid = 1;
|
|
bool terminal = 2; // Use tty for container stdio
|
|
User user = 3; // User under which process will be run
|
|
repeated string args = 4; // Arguments for process, first is binary path itself
|
|
repeated string env = 5; // List of environment variables for process
|
|
string cwd = 6; // Workind directory of process
|
|
uint32 systemPid = 7;
|
|
string stdin = 8; // path to the file where stdin will be read (optional)
|
|
string stdout = 9; // path to file where stdout will be written (optional)
|
|
string stderr = 10; // path to file where stderr will be written (optional)
|
|
repeated string capabilities = 11;
|
|
string apparmorProfile = 12;
|
|
string selinuxLabel = 13;
|
|
bool noNewPrivileges = 14;
|
|
repeated Rlimit rlimits = 15;
|
|
}
|
|
|
|
message Container {
|
|
string id = 1; // ID of container
|
|
string bundlePath = 2; // Path to OCI bundle
|
|
repeated Process processes = 3; // List of processes which run in container
|
|
string status = 4; // Container status ("running", "paused", etc.)
|
|
repeated string labels = 5;
|
|
repeated uint32 pids = 6;
|
|
string runtime = 7; // runtime used to execute the container
|
|
}
|
|
|
|
// Machine is information about machine on which containerd is run
|
|
message Machine {
|
|
uint32 cpus = 1; // number of cpus
|
|
uint64 memory = 2; // amount of memory
|
|
}
|
|
|
|
// StateResponse is information about containerd daemon
|
|
message StateResponse {
|
|
repeated Container containers = 1;
|
|
Machine machine = 2;
|
|
}
|
|
|
|
message UpdateContainerRequest {
|
|
string id = 1; // ID of container
|
|
string pid = 2;
|
|
string status = 3; // Status to which containerd will try to change
|
|
UpdateResource resources =4;
|
|
}
|
|
|
|
message UpdateResource {
|
|
uint64 blkioWeight = 1;
|
|
uint64 cpuShares = 2;
|
|
uint64 cpuPeriod = 3;
|
|
uint64 cpuQuota = 4;
|
|
string cpusetCpus = 5;
|
|
string cpusetMems = 6;
|
|
uint64 memoryLimit = 7;
|
|
uint64 memorySwap = 8;
|
|
uint64 memoryReservation = 9;
|
|
uint64 kernelMemoryLimit = 10;
|
|
uint64 kernelTCPMemoryLimit = 11;
|
|
uint64 blkioLeafWeight = 12;
|
|
repeated WeightDevice blkioWeightDevice = 13;
|
|
repeated ThrottleDevice blkioThrottleReadBpsDevice = 14;
|
|
repeated ThrottleDevice blkioThrottleWriteBpsDevice = 15;
|
|
repeated ThrottleDevice blkioThrottleReadIopsDevice = 16;
|
|
repeated ThrottleDevice blkioThrottleWriteIopsDevice = 17;
|
|
}
|
|
|
|
message BlockIODevice {
|
|
int64 major = 1;
|
|
int64 minor = 2;
|
|
}
|
|
|
|
message WeightDevice {
|
|
BlockIODevice blkIODevice = 1;
|
|
uint32 weight = 2;
|
|
uint32 leafWeight = 3;
|
|
}
|
|
|
|
message ThrottleDevice {
|
|
BlockIODevice blkIODevice = 1;
|
|
uint64 rate = 2;
|
|
}
|
|
|
|
message UpdateContainerResponse {
|
|
}
|
|
|
|
message EventsRequest {
|
|
// Tag 1 is deprecated (old uint64 timestamp)
|
|
google.protobuf.Timestamp timestamp = 2;
|
|
bool storedOnly = 3;
|
|
string id = 4;
|
|
}
|
|
|
|
message Event {
|
|
string type = 1;
|
|
string id = 2;
|
|
uint32 status = 3;
|
|
string pid = 4;
|
|
// Tag 5 is deprecated (old uint64 timestamp)
|
|
google.protobuf.Timestamp timestamp = 6;
|
|
}
|
|
|
|
message NetworkStats {
|
|
string name = 1; // name of network interface
|
|
uint64 rx_bytes = 2;
|
|
uint64 rx_Packets = 3;
|
|
uint64 Rx_errors = 4;
|
|
uint64 Rx_dropped = 5;
|
|
uint64 Tx_bytes = 6;
|
|
uint64 Tx_packets = 7;
|
|
uint64 Tx_errors = 8;
|
|
uint64 Tx_dropped = 9;
|
|
}
|
|
|
|
message CpuUsage {
|
|
uint64 total_usage = 1;
|
|
repeated uint64 percpu_usage = 2;
|
|
uint64 usage_in_kernelmode = 3;
|
|
uint64 usage_in_usermode = 4;
|
|
}
|
|
|
|
message ThrottlingData {
|
|
uint64 periods = 1;
|
|
uint64 throttled_periods = 2;
|
|
uint64 throttled_time = 3;
|
|
}
|
|
|
|
message CpuStats {
|
|
CpuUsage cpu_usage = 1;
|
|
ThrottlingData throttling_data = 2;
|
|
uint64 system_usage = 3;
|
|
}
|
|
|
|
message PidsStats {
|
|
uint64 current = 1;
|
|
uint64 limit = 2;
|
|
}
|
|
|
|
message MemoryData {
|
|
uint64 usage = 1;
|
|
uint64 max_usage = 2;
|
|
uint64 failcnt = 3;
|
|
uint64 limit = 4;
|
|
}
|
|
|
|
message MemoryStats {
|
|
uint64 cache = 1;
|
|
MemoryData usage = 2;
|
|
MemoryData swap_usage = 3;
|
|
MemoryData kernel_usage = 4;
|
|
map<string, uint64> stats = 5;
|
|
}
|
|
|
|
message BlkioStatsEntry {
|
|
uint64 major = 1;
|
|
uint64 minor = 2;
|
|
string op = 3;
|
|
uint64 value = 4;
|
|
}
|
|
|
|
message BlkioStats {
|
|
repeated BlkioStatsEntry io_service_bytes_recursive = 1; // number of bytes transferred to and from the block device
|
|
repeated BlkioStatsEntry io_serviced_recursive = 2;
|
|
repeated BlkioStatsEntry io_queued_recursive = 3;
|
|
repeated BlkioStatsEntry io_service_time_recursive = 4;
|
|
repeated BlkioStatsEntry io_wait_time_recursive = 5;
|
|
repeated BlkioStatsEntry io_merged_recursive = 6;
|
|
repeated BlkioStatsEntry io_time_recursive = 7;
|
|
repeated BlkioStatsEntry sectors_recursive = 8;
|
|
}
|
|
|
|
message HugetlbStats {
|
|
uint64 usage = 1;
|
|
uint64 max_usage = 2;
|
|
uint64 failcnt = 3;
|
|
uint64 limit = 4;
|
|
}
|
|
|
|
message CgroupStats {
|
|
CpuStats cpu_stats = 1;
|
|
MemoryStats memory_stats = 2;
|
|
BlkioStats blkio_stats = 3;
|
|
map<string, HugetlbStats> hugetlb_stats = 4; // the map is in the format "size of hugepage: stats of the hugepage"
|
|
PidsStats pids_stats = 5;
|
|
}
|
|
|
|
message StatsResponse {
|
|
repeated NetworkStats network_stats = 1;
|
|
CgroupStats cgroup_stats = 2;
|
|
// Tag 3 is deprecated (old uint64 timestamp)
|
|
google.protobuf.Timestamp timestamp = 4;
|
|
};
|
|
|
|
message StatsRequest {
|
|
string id = 1;
|
|
}
|