| syntax = "proto3"; |
| |
| package containerd.v1.services.shim; |
| |
| import "google/protobuf/any.proto"; |
| import "google/protobuf/empty.proto"; |
| import "gogoproto/gogo.proto"; |
| import "github.com/containerd/containerd/api/types/mount/mount.proto"; |
| import "github.com/containerd/containerd/api/types/task/task.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| // 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 { |
| rpc Create(CreateRequest) returns (CreateResponse); |
| rpc Start(StartRequest) returns (google.protobuf.Empty); |
| rpc Delete(DeleteRequest) returns (DeleteResponse); |
| rpc State(StateRequest) returns (StateResponse); |
| rpc Processes(ProcessesRequest) returns (ProcessesResponse); |
| rpc Pause(PauseRequest) returns (google.protobuf.Empty); |
| rpc Resume(ResumeRequest) returns (google.protobuf.Empty); |
| rpc Checkpoint(CheckpointRequest) returns (google.protobuf.Empty); |
| |
| rpc Exit(ExitRequest) returns (google.protobuf.Empty); |
| rpc Events(EventsRequest) returns (stream containerd.v1.types.Event); |
| rpc Kill(KillRequest) returns (google.protobuf.Empty); |
| rpc Exec(ExecRequest) returns (ExecResponse); |
| rpc Pty(PtyRequest) returns (google.protobuf.Empty); |
| rpc CloseStdin(CloseStdinRequest) returns (google.protobuf.Empty); |
| } |
| |
| message CreateRequest { |
| string id = 1; |
| string bundle = 2; |
| string runtime = 3; |
| bool no_pivot = 4; |
| bool terminal = 5; |
| string stdin = 6; |
| string stdout = 7; |
| string stderr = 8; |
| repeated containerd.v1.types.Mount rootfs = 9; |
| string checkpoint = 10; |
| string parent_checkpoint = 11; |
| } |
| |
| message CreateResponse { |
| uint32 pid = 1; |
| } |
| |
| message StartRequest { |
| } |
| |
| message DeleteRequest { |
| uint32 pid = 1; |
| } |
| |
| message DeleteResponse { |
| uint32 exit_status = 1; |
| google.protobuf.Timestamp exited_at = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; |
| } |
| |
| message ExecRequest { |
| bool terminal = 1; |
| string stdin = 2; |
| string stdout = 3; |
| string stderr = 4; |
| google.protobuf.Any spec = 5; |
| } |
| |
| message Rlimit { |
| string type = 1; |
| uint64 hard = 2; |
| uint64 soft = 3; |
| } |
| |
| message ExecResponse { |
| uint32 pid = 1; |
| } |
| |
| message PtyRequest { |
| uint32 pid = 1; |
| uint32 width = 2; |
| uint32 height = 3; |
| } |
| |
| message EventsRequest { |
| } |
| |
| message StateRequest { |
| } |
| |
| message StateResponse { |
| string id = 1; |
| string bundle = 2; |
| uint32 pid = 3; |
| containerd.v1.types.Status status = 4; |
| repeated containerd.v1.types.Process processes = 5; |
| } |
| |
| message PauseRequest { |
| } |
| |
| message ResumeRequest { |
| } |
| |
| message ExitRequest { |
| } |
| |
| message KillRequest { |
| uint32 signal = 1; |
| bool all = 2; |
| uint32 pid = 3; |
| } |
| |
| message CloseStdinRequest { |
| uint32 pid = 1; |
| } |
| |
| message ProcessesRequest { |
| string id = 1; |
| } |
| |
| message ProcessesResponse{ |
| repeated containerd.v1.types.Process processes = 1; |
| } |
| |
| message CheckpointRequest { |
| bool exit = 1; |
| bool allow_tcp = 2; |
| bool allow_unix_sockets = 3; |
| bool allow_terminal = 4; |
| bool file_locks = 5; |
| repeated string empty_namespaces = 6; |
| string image = 7; |
| } |