Update execution and container services

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby 2016-12-02 10:27:51 -08:00
parent 052a18f5a4
commit d0e2f3778a
13 changed files with 4710 additions and 8241 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,118 @@
syntax = "proto3";
package containerd.v1;
import "empty.proto";
import "gogoproto/gogo.proto";
service ContainerService {
rpc Get(GetContainerRequest) returns (GetContainerResponse);
rpc Update(UpdateContainerRequest) returns (Empty);
rpc Pause(PauseContainerRequest) returns (Empty);
rpc Resume(ResumeContainerRequest) returns (Empty);
rpc CreateProcess(CreateProcessRequest) returns (CreateProcessResponse);
rpc GetProcess(GetProcessRequest) returns (GetProcessResponse);
rpc StartProcess(StartProcessRequest) returns (StartProcessResponse);
rpc SignalProcess(SignalProcessRequest) returns (Empty);
rpc DeleteProcess(DeleteProcessRequest) returns (Empty);
rpc ListProcesses(ListProcessesRequest) returns (ListProcessesResponse);
}
message CreateProcessRequest {
Process process = 1;
string stdin = 2;
string stdout = 3;
string stderr = 4;
}
message CreateProcessResponse {
Process process = 1;
}
message Container {
string id = 1 [(gogoproto.customname) = "ID"];
string bundle_path = 2;
Process process = 3;
Status status = 4;
}
message Process {
string id = 1 [(gogoproto.customname) = "ID"];
uint64 pid = 2;
repeated string args = 3;
repeated string env = 4;
User user = 5;
string cwd = 6;
bool terminal = 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 {
Container container = 1;
string bundle_path = 2;
}
message PauseContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message ResumeContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message StartProcessRequest {
Process process = 1;
}
message StartProcessResponse {
Process process = 1;
}
message GetProcessRequest {
Container container = 1;
string process_id = 2;
}
message GetProcessResponse {
Process process = 1;
}
message SignalProcessRequest {
Process process = 1;
uint32 signal = 2;
}
message DeleteProcessRequest {
Process process = 1;
}
message ListProcessesRequest {
Container container = 1;
}
message ListProcessesResponse {
repeated Process processes = 1;
}

317
api/execution/empty.pb.go Normal file
View file

@ -0,0 +1,317 @@
// Code generated by protoc-gen-gogo.
// source: empty.proto
// DO NOT EDIT!
package execution
import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "github.com/gogo/protobuf/gogoproto"
import strings "strings"
import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto"
import sort "sort"
import strconv "strconv"
import reflect "reflect"
import io "io"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
type Empty struct {
}
func (m *Empty) Reset() { *m = Empty{} }
func (*Empty) ProtoMessage() {}
func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptorEmpty, []int{0} }
func init() {
proto.RegisterType((*Empty)(nil), "containerd.v1.Empty")
}
func (this *Empty) GoString() string {
if this == nil {
return "nil"
}
s := make([]string, 0, 4)
s = append(s, "&execution.Empty{")
s = append(s, "}")
return strings.Join(s, "")
}
func valueToGoStringEmpty(v interface{}, typ string) string {
rv := reflect.ValueOf(v)
if rv.IsNil() {
return "nil"
}
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv)
}
func extensionToGoStringEmpty(m github_com_gogo_protobuf_proto.Message) string {
e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m)
if e == nil {
return "nil"
}
s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{"
keys := make([]int, 0, len(e))
for k := range e {
keys = append(keys, int(k))
}
sort.Ints(keys)
ss := []string{}
for _, k := range keys {
ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString())
}
s += strings.Join(ss, ",") + "})"
return s
}
func (m *Empty) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *Empty) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
return i, nil
}
func encodeFixed64Empty(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v)
dAtA[offset+1] = uint8(v >> 8)
dAtA[offset+2] = uint8(v >> 16)
dAtA[offset+3] = uint8(v >> 24)
dAtA[offset+4] = uint8(v >> 32)
dAtA[offset+5] = uint8(v >> 40)
dAtA[offset+6] = uint8(v >> 48)
dAtA[offset+7] = uint8(v >> 56)
return offset + 8
}
func encodeFixed32Empty(dAtA []byte, offset int, v uint32) int {
dAtA[offset] = uint8(v)
dAtA[offset+1] = uint8(v >> 8)
dAtA[offset+2] = uint8(v >> 16)
dAtA[offset+3] = uint8(v >> 24)
return offset + 4
}
func encodeVarintEmpty(dAtA []byte, offset int, v uint64) int {
for v >= 1<<7 {
dAtA[offset] = uint8(v&0x7f | 0x80)
v >>= 7
offset++
}
dAtA[offset] = uint8(v)
return offset + 1
}
func (m *Empty) Size() (n int) {
var l int
_ = l
return n
}
func sovEmpty(x uint64) (n int) {
for {
n++
x >>= 7
if x == 0 {
break
}
}
return n
}
func sozEmpty(x uint64) (n int) {
return sovEmpty(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (this *Empty) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&Empty{`,
`}`,
}, "")
return s
}
func valueToStringEmpty(v interface{}) string {
rv := reflect.ValueOf(v)
if rv.IsNil() {
return "nil"
}
pv := reflect.Indirect(rv).Interface()
return fmt.Sprintf("*%v", pv)
}
func (m *Empty) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowEmpty
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: Empty: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: Empty: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := skipEmpty(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthEmpty
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipEmpty(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowEmpty
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
wireType := int(wire & 0x7)
switch wireType {
case 0:
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowEmpty
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
iNdEx++
if dAtA[iNdEx-1] < 0x80 {
break
}
}
return iNdEx, nil
case 1:
iNdEx += 8
return iNdEx, nil
case 2:
var length int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowEmpty
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
length |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
iNdEx += length
if length < 0 {
return 0, ErrInvalidLengthEmpty
}
return iNdEx, nil
case 3:
for {
var innerWire uint64
var start int = iNdEx
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowEmpty
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
innerWire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
innerWireType := int(innerWire & 0x7)
if innerWireType == 4 {
break
}
next, err := skipEmpty(dAtA[start:])
if err != nil {
return 0, err
}
iNdEx = start + next
}
return iNdEx, nil
case 4:
return iNdEx, nil
case 5:
iNdEx += 4
return iNdEx, nil
default:
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
}
}
panic("unreachable")
}
var (
ErrInvalidLengthEmpty = fmt.Errorf("proto: negative length found during unmarshaling")
ErrIntOverflowEmpty = fmt.Errorf("proto: integer overflow")
)
func init() { proto.RegisterFile("empty.proto", fileDescriptorEmpty) }
var fileDescriptorEmpty = []byte{
// 108 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0xcd, 0x2d, 0x28,
0xa9, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4d, 0xce, 0xcf, 0x2b, 0x49, 0xcc, 0xcc,
0x4b, 0x2d, 0x4a, 0xd1, 0x2b, 0x33, 0x94, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xcb, 0xe8, 0x83,
0x58, 0x10, 0x45, 0x4a, 0xec, 0x5c, 0xac, 0xae, 0x20, 0x3d, 0x4e, 0x32, 0x27, 0x1e, 0xca, 0x31,
0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, 0xa1, 0x1c, 0x63, 0xc3, 0x23, 0x39, 0xc6, 0x13, 0x8f, 0xe4,
0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x31, 0x89, 0x0d, 0xac, 0xda, 0x18, 0x10,
0x00, 0x00, 0xff, 0xff, 0xe0, 0x96, 0x22, 0x83, 0x61, 0x00, 0x00, 0x00,
}

View file

@ -0,0 +1,8 @@
syntax = "proto3";
package containerd.v1;
import "gogoproto/gogo.proto";
message Empty {
}

File diff suppressed because it is too large Load diff

View file

@ -2,86 +2,28 @@ syntax = "proto3";
package containerd.v1;
import "api/mount/mount.proto";
import "container.proto";
import "empty.proto";
import "gogoproto/gogo.proto";
service Execution {
rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse);
rpc StartContainer(StartContainerRequest) returns (StartContainerResponse);
rpc DeleteContainer(DeleteContainerRequest) returns (DeleteContainerResponse);
rpc StateContainer(StateContainerRequest) returns (StateContainerResponse);
rpc UpdateContainer(UpdateContainerRequest) returns (UpdateContainerResponse);
rpc PauseContainer(PauseContainerRequest) returns (PauseContainerResponse);
rpc ResumeContainer(ResumeContainerRequest) returns (ResumeContainerResponse);
rpc ContainerList(ContainerListRequest) returns (ContainerListResponse);
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);
rpc ProcessList(ProcessListRequest) returns (ProcessListResponse);
rpc Events(EventsRequest) returns (stream EventsResponse);
}
message Container {
string id = 1 [(gogoproto.customname) = "ID"];
repeated Mount mounts = 2;
string owner = 3;
Process process = 4;
}
message Process {
uint64 pid = 1;
repeated string args = 2;
repeated string env = 3;
User user = 4;
string cwd = 5;
bool terminal = 6;
}
message ProcessSpec {
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 User {
uint32 uid = 1;
uint32 gid = 2;
repeated uint32 additionalGids = 3;
service ExecutionService{
rpc Create(CreateContainerRequest) returns (CreateContainerResponse);
rpc Delete(DeleteContainerRequest) returns (Empty);
rpc List(ListContainersRequest) returns (ListContainersResponse);
}
message CreateContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
ProcessSpec process = 2;
repeated Mount mounts = 3;
string owner = 4;
string config_path = 5;
string bundle_path = 2;
string stdin = 3;
string stdout = 4;
string stderr = 5;
}
message CreateContainerResponse {
Container container = 1;
}
message StartContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message State {
}
message StartContainerResponse {
State state = 1;
}
message DeleteContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
@ -89,95 +31,10 @@ message DeleteContainerRequest {
message DeleteContainerResponse {
}
message ContainerListRequest {
message ListContainersRequest {
repeated string owner = 1;
}
message ContainerListResponse {
message ListContainersResponse {
repeated Container containers = 1;
}
message StateContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message StateContainerResponse {
Container container = 1;
}
message UpdateContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message UpdateContainerResponse {
}
message PauseContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message PauseContainerResponse {
}
message ResumeContainerRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message ResumeContainerResponse {
}
message CreateProcessRequest {
string id = 1 [(gogoproto.customname) = "ID"];
ProcessSpec spec = 2;
}
message CreateProcessResponse {
}
message StartProcessRequest {
string cid = 1;
string pid = 2;
}
message StartProcessResponse {
uint32 pid = 1;
}
message ProcessStateRequest {
string cid = 1;
string pid = 2;
}
message ProcessStateResponse {
State state = 1;
}
message SignalProcessRequest {
string cid = 1;
string pid = 2;
uint32 signal = 3;
}
message SignalProcessResponse {
}
message DeleteProcessRequest {
string cid = 1;
string pid = 2;
}
message DeleteProcessResponse {
}
message ProcessListRequest {
string id = 1 [(gogoproto.customname) = "ID"];
}
message ProcessListResponse {
}
message EventsRequest {
}
message EventsResponse {
}

View file

@ -1,3 +1,3 @@
package execution
//go:generate protoc -I.:../..:../../../../../github.com/gogo/protobuf:/usr/local/include --gogoctrd_out=plugins=grpc,import_path=github.com/docker/containerd/api/execution,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mapi/mount/mount.proto=github.com/docker/containerd/api/mount:. execution.proto
//go:generate protoc -I.:../..:../../../../../github.com/gogo/protobuf:/usr/local/include --gogoctrd_out=plugins=grpc,import_path=github.com/docker/containerd/api/execution,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:. execution.proto empty.proto container.proto