syntax = "proto3"; package containerd.v1; import "google/protobuf/empty.proto"; import "gogoproto/gogo.proto"; service ExecutionService { rpc Create(CreateContainerRequest) returns (CreateContainerResponse); rpc Start(StartContainerRequest) returns (google.protobuf.Empty); rpc Update(UpdateContainerRequest) returns (google.protobuf.Empty); rpc Pause(PauseContainerRequest) returns (google.protobuf.Empty); rpc Resume(ResumeContainerRequest) returns (google.protobuf.Empty); rpc Delete(DeleteContainerRequest) returns (google.protobuf.Empty); rpc Get(GetContainerRequest) returns (GetContainerResponse); rpc List(ListContainersRequest) returns (ListContainersResponse); rpc StartProcess(StartProcessRequest) returns (StartProcessResponse); rpc GetProcess(GetProcessRequest) returns (GetProcessResponse); rpc SignalProcess(SignalProcessRequest) returns (google.protobuf.Empty); rpc DeleteProcess(DeleteProcessRequest) returns (google.protobuf.Empty); rpc ListProcesses(ListProcessesRequest) returns (ListProcessesResponse); } message StartContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; } message CreateContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; string bundle_path = 2; bool console = 3; string stdin = 4; string stdout = 5; string stderr = 6; } message CreateContainerResponse { Container container = 1; Process initProcess = 2; } message DeleteContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; uint32 pid = 2; } message ListContainersRequest { repeated string owner = 1; } message ListContainersResponse { repeated Container containers = 1; } message StartProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; Process process = 2; bool console = 3; string stdin = 4; string stdout = 5; string stderr = 6; } message StartProcessResponse { Process process = 1; } message Container { string id = 1 [(gogoproto.customname) = "ID"]; string bundle = 2; Status status = 4; } message Process { string id = 1 [(gogoproto.customname) = "ID"]; uint32 pid = 2; repeated string args = 3; repeated string env = 4; User user = 5; string cwd = 6; bool terminal = 7; uint32 exit_status = 8; } enum Status { CREATED = 0; RUNNING = 1; STOPPED = 2; PAUSED = 3; } message User { uint32 uid = 1; uint32 gid = 2; repeated uint32 additionalGids = 3; } message GetContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; } message GetContainerResponse { Container container = 1; } message UpdateContainerRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; string bundle_path = 2; } message PauseContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; } message ResumeContainerRequest { string id = 1 [(gogoproto.customname) = "ID"]; } message GetProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; string process_id = 2 [(gogoproto.customname) = "ProcessID"]; } message GetProcessResponse { Process process = 1; } message SignalProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; string process_id = 2 [(gogoproto.customname) = "ProcessID"]; uint32 signal = 3; } message DeleteProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; string process_id = 2 [(gogoproto.customname) = "ProcessID"]; } message ListProcessesRequest { string id = 1 [(gogoproto.customname) = "ID"]; } message ListProcessesResponse { repeated Process processes = 1; }