syntax = "proto3"; package containerd.v1; import "google/protobuf/empty.proto"; import "gogoproto/gogo.proto"; service ExecutionService { rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse); rpc StartContainer(StartContainerRequest) returns (google.protobuf.Empty); rpc UpdateContainer(UpdateContainerRequest) returns (google.protobuf.Empty); rpc PauseContainer(PauseContainerRequest) returns (google.protobuf.Empty); rpc ResumeContainer(ResumeContainerRequest) returns (google.protobuf.Empty); rpc DeleteContainer(DeleteContainerRequest) returns (google.protobuf.Empty); rpc GetContainer(GetContainerRequest) returns (GetContainerResponse); rpc ListContainers(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"]; } 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 { uint32 pid = 1; repeated string args = 2; repeated string env = 3; User user = 4; string cwd = 5; bool terminal = 6; uint32 exit_status = 7; } 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"]; uint32 pid = 2; } message GetProcessResponse { Process process = 1; } message SignalProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; uint32 pid = 2; uint32 signal = 3; } message DeleteProcessRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; uint32 pid = 2; } message ListProcessesRequest { string container_id = 1 [(gogoproto.customname) = "ContainerID"]; } message ListProcessesResponse { repeated Process processes = 1; }