
This changes Wait() from returning an error whenever you call wait on a stopped process/task to returning the exit status from the process. This also adds the exit status to the Status() call on a process/task so that a user can Wait(), check status, then cancel the wait to avoid races in event handling. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
154 lines
3.3 KiB
Protocol Buffer
154 lines
3.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package containerd.runtime.linux.shim.v1;
|
|
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "gogoproto/gogo.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "github.com/containerd/containerd/api/types/mount.proto";
|
|
import "github.com/containerd/containerd/api/types/task/task.proto";
|
|
|
|
option go_package = "github.com/containerd/containerd/linux/shim/v1;shim";
|
|
|
|
// Shim service is launched for each container and is responsible for owning the IO
|
|
// for the container and its additional processes. The shim is also the parent of
|
|
// each container and allows reattaching to the IO and receiving the exit status
|
|
// for the container processes.
|
|
service Shim {
|
|
// State returns shim and task state information.
|
|
rpc State(StateRequest) returns (StateResponse);
|
|
|
|
rpc Create(CreateTaskRequest) returns (CreateTaskResponse);
|
|
|
|
rpc Start(StartRequest) returns (StartResponse);
|
|
|
|
rpc Delete(google.protobuf.Empty) returns (DeleteResponse);
|
|
|
|
rpc DeleteProcess(DeleteProcessRequest) returns (DeleteResponse);
|
|
|
|
rpc ListPids(ListPidsRequest) returns (ListPidsResponse);
|
|
|
|
rpc Pause(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
|
|
rpc Resume(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
|
|
rpc Checkpoint(CheckpointTaskRequest) returns (google.protobuf.Empty);
|
|
|
|
rpc Kill(KillRequest) returns (google.protobuf.Empty);
|
|
|
|
rpc Exec(ExecProcessRequest) returns (google.protobuf.Empty);
|
|
|
|
rpc ResizePty(ResizePtyRequest) returns (google.protobuf.Empty);
|
|
|
|
rpc CloseIO(CloseIORequest) returns (google.protobuf.Empty);
|
|
|
|
// ShimInfo returns information about the shim.
|
|
rpc ShimInfo(google.protobuf.Empty) returns (ShimInfoResponse);
|
|
|
|
rpc Update(UpdateTaskRequest) returns (google.protobuf.Empty);
|
|
}
|
|
|
|
message CreateTaskRequest {
|
|
string id = 1;
|
|
string bundle = 2;
|
|
string runtime = 3;
|
|
repeated containerd.types.Mount rootfs = 4;
|
|
bool terminal = 5;
|
|
string stdin = 6;
|
|
string stdout = 7;
|
|
string stderr = 8;
|
|
string checkpoint = 9;
|
|
string parent_checkpoint = 10;
|
|
google.protobuf.Any options = 11;
|
|
}
|
|
|
|
message CreateTaskResponse {
|
|
uint32 pid = 1;
|
|
}
|
|
|
|
message DeleteResponse {
|
|
uint32 pid = 1;
|
|
uint32 exit_status = 2;
|
|
google.protobuf.Timestamp exited_at = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
|
}
|
|
|
|
message DeleteProcessRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message ExecProcessRequest {
|
|
string id = 1;
|
|
bool terminal = 2;
|
|
string stdin = 3;
|
|
string stdout = 4;
|
|
string stderr = 5;
|
|
google.protobuf.Any spec = 6;
|
|
}
|
|
|
|
message ExecProcessResponse {
|
|
}
|
|
|
|
message ResizePtyRequest {
|
|
string id = 1;
|
|
uint32 width = 2;
|
|
uint32 height = 3;
|
|
}
|
|
|
|
message StateRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message StateResponse {
|
|
string id = 1;
|
|
string bundle = 2;
|
|
uint32 pid = 3;
|
|
containerd.v1.types.Status status = 4;
|
|
string stdin = 5;
|
|
string stdout = 6;
|
|
string stderr = 7;
|
|
bool terminal = 8;
|
|
uint32 exit_status = 9;
|
|
}
|
|
|
|
message KillRequest {
|
|
string id = 1;
|
|
uint32 signal = 2;
|
|
bool all = 3;
|
|
}
|
|
|
|
message CloseIORequest {
|
|
string id = 1;
|
|
bool stdin = 2;
|
|
}
|
|
|
|
message ListPidsRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message ListPidsResponse{
|
|
repeated uint32 pids = 1;
|
|
}
|
|
|
|
message CheckpointTaskRequest {
|
|
string path = 1;
|
|
google.protobuf.Any options = 2;
|
|
}
|
|
|
|
message ShimInfoResponse {
|
|
uint32 shim_pid = 1;
|
|
}
|
|
|
|
message UpdateTaskRequest {
|
|
google.protobuf.Any resources = 1;
|
|
}
|
|
|
|
message StartRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message StartResponse {
|
|
string id = 1;
|
|
uint32 pid = 2;
|
|
}
|