syntax = "proto3"; package containerd.task.v2; import "google/protobuf/any.proto"; import "google/protobuf/empty.proto"; import weak "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/runtime/v2/task;task"; // 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 Task { rpc State(StateRequest) returns (StateResponse); rpc Create(CreateTaskRequest) returns (CreateTaskResponse); rpc Start(StartRequest) returns (StartResponse); rpc Delete(DeleteRequest) returns (DeleteResponse); rpc Pids(PidsRequest) returns (PidsResponse); rpc Pause(PauseRequest) returns (google.protobuf.Empty); rpc Resume(ResumeRequest) 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); rpc Update(UpdateTaskRequest) returns (google.protobuf.Empty); rpc Wait(WaitRequest) returns (WaitResponse); rpc Stats(StatsRequest) returns (StatsResponse); rpc Connect(ConnectRequest) returns (ConnectResponse); rpc Shutdown(ShutdownRequest) returns (google.protobuf.Empty); } message CreateTaskRequest { string id = 1; string bundle = 2; repeated containerd.types.Mount rootfs = 3; bool terminal = 4; string stdin = 5; string stdout = 6; string stderr = 7; string checkpoint = 8; string parent_checkpoint = 9; google.protobuf.Any options = 10; } message CreateTaskResponse { uint32 pid = 1; } message DeleteRequest { string id = 1; string exec_id = 2; } message DeleteResponse { uint32 pid = 1; uint32 exit_status = 2; google.protobuf.Timestamp exited_at = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message ExecProcessRequest { string id = 1; string exec_id = 2; bool terminal = 3; string stdin = 4; string stdout = 5; string stderr = 6; google.protobuf.Any spec = 7; } message ExecProcessResponse { } message ResizePtyRequest { string id = 1; string exec_id = 2; uint32 width = 3; uint32 height = 4; } message StateRequest { string id = 1; string exec_id = 2; } 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; google.protobuf.Timestamp exited_at = 10 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; string exec_id = 11; } message KillRequest { string id = 1; string exec_id = 2; uint32 signal = 3; bool all = 4; } message CloseIORequest { string id = 1; string exec_id = 2; bool stdin = 3; } message PidsRequest { string id = 1; } message PidsResponse { repeated containerd.v1.types.ProcessInfo processes = 1; } message CheckpointTaskRequest { string id = 1; string path = 2; google.protobuf.Any options = 3; } message UpdateTaskRequest { string id = 1; google.protobuf.Any resources = 2; } message StartRequest { string id = 1; string exec_id = 2; } message StartResponse { uint32 pid = 1; } message WaitRequest { string id = 1; string exec_id = 2; } message WaitResponse { uint32 exit_status = 1; google.protobuf.Timestamp exited_at = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message StatsRequest { string id = 1; } message StatsResponse { google.protobuf.Any stats = 1; } message ConnectRequest { string id = 1; } message ConnectResponse { uint32 shim_pid = 1; uint32 task_pid = 2; string version = 3; } message ShutdownRequest { string id = 1; bool now = 2; } message PauseRequest { string id = 1; } message ResumeRequest { string id = 1; }