diff --git a/api/container/container.proto b/api/container/container.proto new file mode 100644 index 0000000..c63257c --- /dev/null +++ b/api/container/container.proto @@ -0,0 +1,123 @@ +syntax = "proto3"; + +package containerd.v1; + +service Containers { + // container level rpcs + rpc Create(CreateRequest) returns (CreateResponse); + rpc Start(StartRequest) returns (StartResponse); + rpc Delete(DeleteRequest) returns (DeleteResponse); + rpc State(StateRequest) returns (StateResponse); + + // container level action rpcs + rpc Update(UpdateRequest) returns (UpdateResponse); + rpc Pause(PauseRequest) returns (PauseResponse); + rpc Resume(ResumeRequest) returns (ResumeResponse); + + // process level rpcs + rpc CreateProcess(CreateProcessRequest) returns (CreateProcessResponse); + rpc StartProcess(StartProcessRequest) returns (StartProcessResponse); + rpc ProcessState(ProcessStateRequest) returns (ProcessStateResponse); + rpc SignalProcess(SignalProcessRequest) returns (SignalProcessResponse); + rpc DeleteProcess(DeleteProcessRequest) returns (DeleteProcessResponse); + + // agg rpcs + rpc List(ListRequest) returns (ListResponse); + rpc ListProcesses(ListProcessesRequest) returns (ListProcessesResponse); + rpc Events(EventsRequest) returns (stream EventsResponse); +} + +message Container { + string id = 1; + repeated Mount mounts = 2; + Process process = 3; + optional string config_path = 4; +} + +message Process { + repeated string args = 1; + repeated string env = 2; + User user = 3; + string cwd = 4; + bool terminal = 5; + string stdin = 6; + string stdout = 7; + string stderr = 8; +} + +message Mount { + +} + +message User { + uint32 uid = 1; + uint32 gid = 2; + repeated uint32 additionalGids = 3; +} + +message CreateRequest { + Container container = 1; +} + +message CreateResponse { +} + +message StartRequest { + string id = 1; +} + +message StartResponse { + +} + +message StopRequest { + string id = 1; + uint32 signal = 2; + uint32 timeout = 3; +} + +message StopResponse { + +} + +message DeleteRequest { + string id = 1; +} + +message DeleteResponse { + +} + +message ListRequest { + +} + +message ListResponse { + repeated Container containers = 1; +} + +message StateRequest { + string id = 1; +} + +message StateResponse { + Container container = 1; +} + +message ExecRequest { + string container_id = 1; + string id = 2; + Process process = 3; +} + +message ExecResponse { + +} + +message UpdateRequest { + string id = 1; +} + +message UpdateResponse { + +} diff --git a/api/registry/registry.proto b/api/registry/registry.proto new file mode 100644 index 0000000..660caa2 --- /dev/null +++ b/api/registry/registry.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; + +package containerd.v1; + +service Registry { + // Pull an image from a registry + rpc Pull(PullRequest) returns (PullResponse); + // Push pushes a new or existing image to a registry + rpc Push(PushRequest) returns (PushResponse); + // Delete deletes an image from the registry + rpc Delete(DeleteRequest) returns (DeleteResponse); + + // Status returns a progress stream of the push or pull operation + rpc Status(StatusRequest) returns (stream StatusResponse); + // Cancel cancels a push or pull operation + rpc Cancel(CancelRequest) returns (CancelResponse); +} + +message PullRequest { + string uri = 1; + Authentication auth = 2; +} + +message PullResponse { + string id = 1; + repeated Layer layers = 2; +} + +message Layer { + string id = 1; + uint64 size = 2; +} + +// TODO: we have no clue what should go here, halp stevvooo +message Authentication { + string username = 1; + string password = 2; +} +