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/container/container.proto"; service Shim { rpc Create(CreateRequest) returns (CreateResponse); rpc Start(StartRequest) returns (google.protobuf.Empty); rpc Delete(DeleteRequest) returns (DeleteResponse); rpc Exec(ExecRequest) returns (ExecResponse); rpc Pty(PtyRequest) returns (google.protobuf.Empty); rpc Events(EventsRequest) returns (stream containerd.v1.types.Event); rpc State(StateRequest) returns (StateResponse); rpc Pause(PauseRequest) returns (google.protobuf.Empty); rpc Resume(ResumeRequest) returns (google.protobuf.Empty); rpc Exit(ExitRequest) returns (google.protobuf.Empty); } message CreateRequest { string id = 1 [(gogoproto.customname) = "ID"]; 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; } message CreateResponse { uint32 pid = 1; } message StartRequest { } message DeleteRequest { uint32 pid = 1; } message DeleteResponse { uint32 exit_status = 1; } 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 [(gogoproto.customname) = "ID"]; 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 { }