api/types/mount: bring back the mount type
The mount type is used across common GRPC services to express a deferred access of a filesystem. Right now, they are generated by snapshotters, but eventually, they can be passed for containers for creation at runtime. With this flow, we can separate the generation and use of a root container filesystem. Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
		
							
								
								
									
										3
									
								
								api/types/mount/gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								api/types/mount/gen.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package mount | ||||
|  | ||||
| //go:generate protoc -I.:../../../vendor:../../../vendor/github.com/gogo/protobuf:../../../../../..:/usr/local/include --gogoctrd_out=plugins=grpc,import_path=github.com/docker/containerd/api/types/mount,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:. mount.proto | ||||
							
								
								
									
										529
									
								
								api/types/mount/mount.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										529
									
								
								api/types/mount/mount.pb.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,529 @@ | ||||
| // Code generated by protoc-gen-gogo. | ||||
| // source: mount.proto | ||||
| // DO NOT EDIT! | ||||
|  | ||||
| /* | ||||
| 	Package mount is a generated protocol buffer package. | ||||
|  | ||||
| 	It is generated from these files: | ||||
| 		mount.proto | ||||
|  | ||||
| 	It has these top-level messages: | ||||
| 		Mount | ||||
| */ | ||||
| package mount | ||||
|  | ||||
| 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 | ||||
|  | ||||
| // This is a compile-time assertion to ensure that this generated file | ||||
| // is compatible with the proto package it is being compiled against. | ||||
| // A compilation error at this line likely means your copy of the | ||||
| // proto package needs to be updated. | ||||
| const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package | ||||
|  | ||||
| // Mount describes mounts for a container. | ||||
| // | ||||
| // This type is the lingua franca of ContainerD. All services provide mounts | ||||
| // to be used with the container at creation time. | ||||
| // | ||||
| // The Mount type follows the structure of the mount syscall, including a type, | ||||
| // source, target and options. | ||||
| type Mount struct { | ||||
| 	// Type defines the nature of the mount. | ||||
| 	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` | ||||
| 	// Source specifies the name of the mount. Depending on mount type, this | ||||
| 	// may be a volume name or a host path, or even ignored. | ||||
| 	Source string `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` | ||||
| 	// Target path in container | ||||
| 	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` | ||||
| 	// Options specifies zero or more fstab style mount options. | ||||
| 	Options []string `protobuf:"bytes,4,rep,name=options" json:"options,omitempty"` | ||||
| } | ||||
|  | ||||
| func (m *Mount) Reset()                    { *m = Mount{} } | ||||
| func (*Mount) ProtoMessage()               {} | ||||
| func (*Mount) Descriptor() ([]byte, []int) { return fileDescriptorMount, []int{0} } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterType((*Mount)(nil), "containerd.v1.types.Mount") | ||||
| } | ||||
| func (this *Mount) GoString() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 8) | ||||
| 	s = append(s, "&mount.Mount{") | ||||
| 	s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") | ||||
| 	s = append(s, "Source: "+fmt.Sprintf("%#v", this.Source)+",\n") | ||||
| 	s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") | ||||
| 	s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
| func valueToGoStringMount(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 extensionToGoStringMount(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 *Mount) 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 *Mount) MarshalTo(dAtA []byte) (int, error) { | ||||
| 	var i int | ||||
| 	_ = i | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	if len(m.Type) > 0 { | ||||
| 		dAtA[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintMount(dAtA, i, uint64(len(m.Type))) | ||||
| 		i += copy(dAtA[i:], m.Type) | ||||
| 	} | ||||
| 	if len(m.Source) > 0 { | ||||
| 		dAtA[i] = 0x12 | ||||
| 		i++ | ||||
| 		i = encodeVarintMount(dAtA, i, uint64(len(m.Source))) | ||||
| 		i += copy(dAtA[i:], m.Source) | ||||
| 	} | ||||
| 	if len(m.Target) > 0 { | ||||
| 		dAtA[i] = 0x1a | ||||
| 		i++ | ||||
| 		i = encodeVarintMount(dAtA, i, uint64(len(m.Target))) | ||||
| 		i += copy(dAtA[i:], m.Target) | ||||
| 	} | ||||
| 	if len(m.Options) > 0 { | ||||
| 		for _, s := range m.Options { | ||||
| 			dAtA[i] = 0x22 | ||||
| 			i++ | ||||
| 			l = len(s) | ||||
| 			for l >= 1<<7 { | ||||
| 				dAtA[i] = uint8(uint64(l)&0x7f | 0x80) | ||||
| 				l >>= 7 | ||||
| 				i++ | ||||
| 			} | ||||
| 			dAtA[i] = uint8(l) | ||||
| 			i++ | ||||
| 			i += copy(dAtA[i:], s) | ||||
| 		} | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | ||||
| func encodeFixed64Mount(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 encodeFixed32Mount(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 encodeVarintMount(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 *Mount) Size() (n int) { | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	l = len(m.Type) | ||||
| 	if l > 0 { | ||||
| 		n += 1 + l + sovMount(uint64(l)) | ||||
| 	} | ||||
| 	l = len(m.Source) | ||||
| 	if l > 0 { | ||||
| 		n += 1 + l + sovMount(uint64(l)) | ||||
| 	} | ||||
| 	l = len(m.Target) | ||||
| 	if l > 0 { | ||||
| 		n += 1 + l + sovMount(uint64(l)) | ||||
| 	} | ||||
| 	if len(m.Options) > 0 { | ||||
| 		for _, s := range m.Options { | ||||
| 			l = len(s) | ||||
| 			n += 1 + l + sovMount(uint64(l)) | ||||
| 		} | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
|  | ||||
| func sovMount(x uint64) (n int) { | ||||
| 	for { | ||||
| 		n++ | ||||
| 		x >>= 7 | ||||
| 		if x == 0 { | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| func sozMount(x uint64) (n int) { | ||||
| 	return sovMount(uint64((x << 1) ^ uint64((int64(x) >> 63)))) | ||||
| } | ||||
| func (this *Mount) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := strings.Join([]string{`&Mount{`, | ||||
| 		`Type:` + fmt.Sprintf("%v", this.Type) + `,`, | ||||
| 		`Source:` + fmt.Sprintf("%v", this.Source) + `,`, | ||||
| 		`Target:` + fmt.Sprintf("%v", this.Target) + `,`, | ||||
| 		`Options:` + fmt.Sprintf("%v", this.Options) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func valueToStringMount(v interface{}) string { | ||||
| 	rv := reflect.ValueOf(v) | ||||
| 	if rv.IsNil() { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	pv := reflect.Indirect(rv).Interface() | ||||
| 	return fmt.Sprintf("*%v", pv) | ||||
| } | ||||
| func (m *Mount) 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 ErrIntOverflowMount | ||||
| 			} | ||||
| 			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: Mount: wiretype end group for non-group") | ||||
| 		} | ||||
| 		if fieldNum <= 0 { | ||||
| 			return fmt.Errorf("proto: Mount: illegal tag %d (wire type %d)", fieldNum, wire) | ||||
| 		} | ||||
| 		switch fieldNum { | ||||
| 		case 1: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) | ||||
| 			} | ||||
| 			var stringLen uint64 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMount | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				stringLen |= (uint64(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			intStringLen := int(stringLen) | ||||
| 			if intStringLen < 0 { | ||||
| 				return ErrInvalidLengthMount | ||||
| 			} | ||||
| 			postIndex := iNdEx + intStringLen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			m.Type = string(dAtA[iNdEx:postIndex]) | ||||
| 			iNdEx = postIndex | ||||
| 		case 2: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) | ||||
| 			} | ||||
| 			var stringLen uint64 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMount | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				stringLen |= (uint64(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			intStringLen := int(stringLen) | ||||
| 			if intStringLen < 0 { | ||||
| 				return ErrInvalidLengthMount | ||||
| 			} | ||||
| 			postIndex := iNdEx + intStringLen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			m.Source = string(dAtA[iNdEx:postIndex]) | ||||
| 			iNdEx = postIndex | ||||
| 		case 3: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) | ||||
| 			} | ||||
| 			var stringLen uint64 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMount | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				stringLen |= (uint64(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			intStringLen := int(stringLen) | ||||
| 			if intStringLen < 0 { | ||||
| 				return ErrInvalidLengthMount | ||||
| 			} | ||||
| 			postIndex := iNdEx + intStringLen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			m.Target = string(dAtA[iNdEx:postIndex]) | ||||
| 			iNdEx = postIndex | ||||
| 		case 4: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) | ||||
| 			} | ||||
| 			var stringLen uint64 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMount | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				stringLen |= (uint64(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			intStringLen := int(stringLen) | ||||
| 			if intStringLen < 0 { | ||||
| 				return ErrInvalidLengthMount | ||||
| 			} | ||||
| 			postIndex := iNdEx + intStringLen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			m.Options = append(m.Options, string(dAtA[iNdEx:postIndex])) | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipMount(dAtA[iNdEx:]) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthMount | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			iNdEx += skippy | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if iNdEx > l { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func skipMount(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, ErrIntOverflowMount | ||||
| 			} | ||||
| 			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, ErrIntOverflowMount | ||||
| 				} | ||||
| 				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, ErrIntOverflowMount | ||||
| 				} | ||||
| 				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, ErrInvalidLengthMount | ||||
| 			} | ||||
| 			return iNdEx, nil | ||||
| 		case 3: | ||||
| 			for { | ||||
| 				var innerWire uint64 | ||||
| 				var start int = iNdEx | ||||
| 				for shift := uint(0); ; shift += 7 { | ||||
| 					if shift >= 64 { | ||||
| 						return 0, ErrIntOverflowMount | ||||
| 					} | ||||
| 					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 := skipMount(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 ( | ||||
| 	ErrInvalidLengthMount = fmt.Errorf("proto: negative length found during unmarshaling") | ||||
| 	ErrIntOverflowMount   = fmt.Errorf("proto: integer overflow") | ||||
| ) | ||||
|  | ||||
| func init() { proto.RegisterFile("mount.proto", fileDescriptorMount) } | ||||
|  | ||||
| var fileDescriptorMount = []byte{ | ||||
| 	// 196 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0xcd, 0x2f, 0xcd, | ||||
| 	0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4e, 0xce, 0xcf, 0x2b, 0x49, 0xcc, 0xcc, | ||||
| 	0x4b, 0x2d, 0x4a, 0xd1, 0x2b, 0x33, 0xd4, 0x2b, 0xa9, 0x2c, 0x48, 0x2d, 0x96, 0xd2, 0x4d, 0xcf, | ||||
| 	0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0x4f, 0xcf, 0xd7, 0x07, 0xab, | ||||
| 	0x4d, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, 0x62, 0x86, 0x52, 0x2a, 0x17, 0xab, 0x2f, | ||||
| 	0xc8, 0x48, 0x21, 0x21, 0x2e, 0x16, 0x90, 0x01, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x60, | ||||
| 	0xb6, 0x90, 0x18, 0x17, 0x5b, 0x71, 0x7e, 0x69, 0x51, 0x72, 0xaa, 0x04, 0x13, 0x58, 0x14, 0xca, | ||||
| 	0x03, 0x89, 0x97, 0x24, 0x16, 0xa5, 0xa7, 0x96, 0x48, 0x30, 0x43, 0xc4, 0x21, 0x3c, 0x21, 0x09, | ||||
| 	0x2e, 0xf6, 0xfc, 0x82, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x09, 0x16, 0x05, 0x66, 0x0d, 0xce, 0x20, | ||||
| 	0x18, 0xd7, 0x49, 0xe6, 0xc4, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, 0x94, 0x63, | ||||
| 	0x6c, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, | ||||
| 	0x31, 0x26, 0xb1, 0x81, 0xdd, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xce, 0xd6, 0xd6, 0x24, | ||||
| 	0xde, 0x00, 0x00, 0x00, | ||||
| } | ||||
							
								
								
									
										27
									
								
								api/types/mount/mount.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								api/types/mount/mount.proto
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| syntax = "proto3"; | ||||
|  | ||||
| package containerd.v1.types; | ||||
|  | ||||
| import "github.com/gogo/protobuf/gogoproto/gogo.proto"; | ||||
|  | ||||
| // Mount describes mounts for a container. | ||||
| // | ||||
| // This type is the lingua franca of ContainerD. All services provide mounts | ||||
| // to be used with the container at creation time. | ||||
| // | ||||
| // The Mount type follows the structure of the mount syscall, including a type, | ||||
| // source, target and options. | ||||
| message Mount { | ||||
|        // Type defines the nature of the mount. | ||||
|        string type = 1; | ||||
|  | ||||
|        // Source specifies the name of the mount. Depending on mount type, this | ||||
|        // may be a volume name or a host path, or even ignored. | ||||
|        string source = 2; | ||||
|  | ||||
|        // Target path in container | ||||
|        string target = 3; | ||||
|  | ||||
|        // Options specifies zero or more fstab style mount options. | ||||
|        repeated string options = 4; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Stephen J Day
					Stephen J Day