| syntax = "proto3"; |
| |
| package containerd.v1.services.execution; |
| |
| import "google/protobuf/empty.proto"; |
| import "google/protobuf/any.proto"; |
| import "gogoproto/gogo.proto"; |
| import "github.com/containerd/containerd/api/types/mount/mount.proto"; |
| import "github.com/containerd/containerd/api/types/descriptor/descriptor.proto"; |
| import "github.com/containerd/containerd/api/types/task/task.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| service Tasks { |
| rpc Create(CreateRequest) returns (CreateResponse); |
| rpc Start(StartRequest) returns (google.protobuf.Empty); |
| rpc Delete(DeleteRequest) returns (DeleteResponse); |
| rpc Info(InfoRequest) returns (InfoResponse); |
| rpc List(ListRequest) returns (ListResponse); |
| rpc Kill(KillRequest) returns (google.protobuf.Empty); |
| rpc Events(EventsRequest) returns (stream containerd.v1.types.Event); |
| rpc Exec(ExecRequest) returns (ExecResponse); |
| rpc Pty(PtyRequest) returns (google.protobuf.Empty); |
| rpc CloseStdin(CloseStdinRequest) returns (google.protobuf.Empty); |
| rpc Pause(PauseRequest) returns (google.protobuf.Empty); |
| rpc Resume(ResumeRequest) returns (google.protobuf.Empty); |
| rpc Processes(ProcessesRequest) returns (ProcessesResponse); |
| rpc Checkpoint(CheckpointRequest) returns (CheckpointResponse); |
| } |
| |
| message CreateRequest { |
| // ContainerID specifies the container to use for creating this task. |
| // |
| // The spec from the provided container id will be used to create the |
| // task associated with this container. Only one task can be run at a time |
| // per container. |
| // |
| // This should be created using the Containers service. |
| string container_id = 2; |
| |
| // RootFS provides the pre-chroot mounts to perform in the shim before |
| // executing the container task. |
| // |
| // These are for mounts that cannot be performed in the user namespace. |
| // Typically, these mounts should be resolved from snapshots specified on |
| // the container object. |
| repeated containerd.v1.types.Mount rootfs = 3; |
| |
| string stdin = 5; |
| string stdout = 6; |
| string stderr = 7; |
| bool terminal = 8; |
| |
| types.Descriptor checkpoint = 9; |
| } |
| |
| message CreateResponse { |
| // TODO(stevvooe): We no longer have an id for a task since they are bound |
| // to a single container. Although, we should represent each new task with |
| // an ID so one can differentiate between each instance of a container |
| // running. |
| // |
| // Hence, we are leaving this here and reserving the field number in case |
| // we need to move in this direction. |
| // string id = 1; |
| |
| string container_id = 2; |
| uint32 pid = 3; |
| } |
| |
| message StartRequest { |
| string container_id = 1; |
| } |
| |
| message DeleteRequest { |
| string container_id = 1; |
| } |
| |
| message DeleteResponse { |
| string container_id = 1; |
| uint32 exit_status = 2; |
| google.protobuf.Timestamp exited_at = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; |
| } |
| |
| message InfoRequest { |
| string container_id = 1; |
| } |
| |
| message InfoResponse { |
| types.Task task = 1; |
| } |
| |
| message ListRequest { |
| } |
| |
| message ListResponse { |
| repeated containerd.v1.types.Task tasks = 1; |
| } |
| |
| message KillRequest { |
| string container_id = 1; |
| uint32 signal = 2; |
| oneof pid_or_all { |
| bool all = 3; |
| uint32 pid = 4; |
| } |
| } |
| |
| message EventsRequest { |
| } |
| |
| message ExecRequest { |
| // ContainerID specifies the container in which to exec the process. |
| string container_id = 1; |
| bool terminal = 2; |
| string stdin = 3; |
| string stdout = 4; |
| string stderr = 5; |
| |
| // Spec for starting a process in the target container. |
| // |
| // For runc, this is a process spec, for example. |
| google.protobuf.Any spec = 6; |
| } |
| |
| message ExecResponse { |
| uint32 pid = 1; |
| } |
| |
| message PtyRequest { |
| string container_id = 1; |
| uint32 pid = 2; |
| uint32 width = 3; |
| uint32 height = 4; |
| } |
| |
| message CloseStdinRequest { |
| string container_id = 1; |
| uint32 pid = 2; |
| } |
| |
| message PauseRequest { |
| string container_id = 1; |
| } |
| |
| message ResumeRequest { |
| string container_id = 1; |
| } |
| |
| message ProcessesRequest { |
| string container_id = 1; |
| } |
| |
| message ProcessesResponse{ |
| repeated containerd.v1.types.Process processes = 1; |
| } |
| |
| message CheckpointRequest { |
| string container_id = 1; |
| bool allow_tcp = 2; |
| bool allow_unix_sockets = 3; |
| bool allow_terminal = 4; |
| bool file_locks = 5; |
| repeated string empty_namespaces = 6; |
| string parent_checkpoint = 7 [(gogoproto.customtype) = "github.com/opencontainers/go-digest.Digest", (gogoproto.nullable) = false]; |
| bool exit = 8; |
| } |
| |
| message CheckpointResponse { |
| repeated types.Descriptor descriptors = 1; |
| } |