diff --git a/containerz/containerz.pb.go b/containerz/containerz.pb.go index 968c33c..3015357 100644 --- a/containerz/containerz.pb.go +++ b/containerz/containerz.pb.go @@ -70,6 +70,58 @@ func (Driver) EnumDescriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{0} } +type RemoveImageResponse_Code int32 + +const ( + RemoveImageResponse_UNSPECIFIED RemoveImageResponse_Code = 0 + RemoveImageResponse_NOT_FOUND RemoveImageResponse_Code = 1 + RemoveImageResponse_RUNNING RemoveImageResponse_Code = 2 + RemoveImageResponse_SUCCESS RemoveImageResponse_Code = 3 +) + +// Enum value maps for RemoveImageResponse_Code. +var ( + RemoveImageResponse_Code_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NOT_FOUND", + 2: "RUNNING", + 3: "SUCCESS", + } + RemoveImageResponse_Code_value = map[string]int32{ + "UNSPECIFIED": 0, + "NOT_FOUND": 1, + "RUNNING": 2, + "SUCCESS": 3, + } +) + +func (x RemoveImageResponse_Code) Enum() *RemoveImageResponse_Code { + p := new(RemoveImageResponse_Code) + *p = x + return p +} + +func (x RemoveImageResponse_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RemoveImageResponse_Code) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[1].Descriptor() +} + +func (RemoveImageResponse_Code) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[1] +} + +func (x RemoveImageResponse_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RemoveImageResponse_Code.Descriptor instead. +func (RemoveImageResponse_Code) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{8, 0} +} + type RemoveContainerResponse_Code int32 const ( @@ -106,11 +158,11 @@ func (x RemoveContainerResponse_Code) String() string { } func (RemoveContainerResponse_Code) Descriptor() protoreflect.EnumDescriptor { - return file_containerz_containerz_proto_enumTypes[1].Descriptor() + return file_containerz_containerz_proto_enumTypes[2].Descriptor() } func (RemoveContainerResponse_Code) Type() protoreflect.EnumType { - return &file_containerz_containerz_proto_enumTypes[1] + return &file_containerz_containerz_proto_enumTypes[2] } func (x RemoveContainerResponse_Code) Number() protoreflect.EnumNumber { @@ -119,7 +171,7 @@ func (x RemoveContainerResponse_Code) Number() protoreflect.EnumNumber { // Deprecated: Use RemoveContainerResponse_Code.Descriptor instead. func (RemoveContainerResponse_Code) EnumDescriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{8, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{10, 0} } type ListContainerResponse_Status int32 @@ -161,11 +213,11 @@ func (x ListContainerResponse_Status) String() string { } func (ListContainerResponse_Status) Descriptor() protoreflect.EnumDescriptor { - return file_containerz_containerz_proto_enumTypes[2].Descriptor() + return file_containerz_containerz_proto_enumTypes[3].Descriptor() } func (ListContainerResponse_Status) Type() protoreflect.EnumType { - return &file_containerz_containerz_proto_enumTypes[2] + return &file_containerz_containerz_proto_enumTypes[3] } func (x ListContainerResponse_Status) Number() protoreflect.EnumNumber { @@ -174,7 +226,59 @@ func (x ListContainerResponse_Status) Number() protoreflect.EnumNumber { // Deprecated: Use ListContainerResponse_Status.Descriptor instead. func (ListContainerResponse_Status) EnumDescriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{10, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{14, 0} +} + +type StartContainerRequest_Restart_Policy int32 + +const ( + StartContainerRequest_Restart_NONE StartContainerRequest_Restart_Policy = 0 + StartContainerRequest_Restart_ALWAYS StartContainerRequest_Restart_Policy = 1 + StartContainerRequest_Restart_UNLESS_STOPPED StartContainerRequest_Restart_Policy = 2 + StartContainerRequest_Restart_ON_FAILURE StartContainerRequest_Restart_Policy = 3 +) + +// Enum value maps for StartContainerRequest_Restart_Policy. +var ( + StartContainerRequest_Restart_Policy_name = map[int32]string{ + 0: "NONE", + 1: "ALWAYS", + 2: "UNLESS_STOPPED", + 3: "ON_FAILURE", + } + StartContainerRequest_Restart_Policy_value = map[string]int32{ + "NONE": 0, + "ALWAYS": 1, + "UNLESS_STOPPED": 2, + "ON_FAILURE": 3, + } +) + +func (x StartContainerRequest_Restart_Policy) Enum() *StartContainerRequest_Restart_Policy { + p := new(StartContainerRequest_Restart_Policy) + *p = x + return p +} + +func (x StartContainerRequest_Restart_Policy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StartContainerRequest_Restart_Policy) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[4].Descriptor() +} + +func (StartContainerRequest_Restart_Policy) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[4] +} + +func (x StartContainerRequest_Restart_Policy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StartContainerRequest_Restart_Policy.Descriptor instead. +func (StartContainerRequest_Restart_Policy) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 3, 0} } type StartError_Code int32 @@ -210,11 +314,11 @@ func (x StartError_Code) String() string { } func (StartError_Code) Descriptor() protoreflect.EnumDescriptor { - return file_containerz_containerz_proto_enumTypes[3].Descriptor() + return file_containerz_containerz_proto_enumTypes[5].Descriptor() } func (StartError_Code) Type() protoreflect.EnumType { - return &file_containerz_containerz_proto_enumTypes[3] + return &file_containerz_containerz_proto_enumTypes[5] } func (x StartError_Code) Number() protoreflect.EnumNumber { @@ -223,7 +327,7 @@ func (x StartError_Code) Number() protoreflect.EnumNumber { // Deprecated: Use StartError_Code.Descriptor instead. func (StartError_Code) EnumDescriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{15, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{19, 0} } type StopContainerResponse_Code int32 @@ -262,11 +366,11 @@ func (x StopContainerResponse_Code) String() string { } func (StopContainerResponse_Code) Descriptor() protoreflect.EnumDescriptor { - return file_containerz_containerz_proto_enumTypes[4].Descriptor() + return file_containerz_containerz_proto_enumTypes[6].Descriptor() } func (StopContainerResponse_Code) Type() protoreflect.EnumType { - return &file_containerz_containerz_proto_enumTypes[4] + return &file_containerz_containerz_proto_enumTypes[6] } func (x StopContainerResponse_Code) Number() protoreflect.EnumNumber { @@ -275,7 +379,65 @@ func (x StopContainerResponse_Code) Number() protoreflect.EnumNumber { // Deprecated: Use StopContainerResponse_Code.Descriptor instead. func (StopContainerResponse_Code) EnumDescriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{17, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{21, 0} +} + +type UpdateError_Code int32 + +const ( + UpdateError_UNSPECIFIED UpdateError_Code = 0 + UpdateError_NOT_FOUND UpdateError_Code = 1 + UpdateError_PORT_USED UpdateError_Code = 2 + UpdateError_NOT_RUNNING UpdateError_Code = 3 + UpdateError_NOT_UPDATED UpdateError_Code = 4 + UpdateError_FAILURE UpdateError_Code = 5 +) + +// Enum value maps for UpdateError_Code. +var ( + UpdateError_Code_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NOT_FOUND", + 2: "PORT_USED", + 3: "NOT_RUNNING", + 4: "NOT_UPDATED", + 5: "FAILURE", + } + UpdateError_Code_value = map[string]int32{ + "UNSPECIFIED": 0, + "NOT_FOUND": 1, + "PORT_USED": 2, + "NOT_RUNNING": 3, + "NOT_UPDATED": 4, + "FAILURE": 5, + } +) + +func (x UpdateError_Code) Enum() *UpdateError_Code { + p := new(UpdateError_Code) + *p = x + return p +} + +func (x UpdateError_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UpdateError_Code) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[7].Descriptor() +} + +func (UpdateError_Code) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[7] +} + +func (x UpdateError_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UpdateError_Code.Descriptor instead. +func (UpdateError_Code) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{25, 0} } type LocalDriverOptions_Type int32 @@ -308,11 +470,11 @@ func (x LocalDriverOptions_Type) String() string { } func (LocalDriverOptions_Type) Descriptor() protoreflect.EnumDescriptor { - return file_containerz_containerz_proto_enumTypes[5].Descriptor() + return file_containerz_containerz_proto_enumTypes[8].Descriptor() } func (LocalDriverOptions_Type) Type() protoreflect.EnumType { - return &file_containerz_containerz_proto_enumTypes[5] + return &file_containerz_containerz_proto_enumTypes[8] } func (x LocalDriverOptions_Type) Number() protoreflect.EnumNumber { @@ -321,7 +483,7 @@ func (x LocalDriverOptions_Type) Number() protoreflect.EnumNumber { // Deprecated: Use LocalDriverOptions_Type.Descriptor instead. func (LocalDriverOptions_Type) EnumDescriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{20, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{28, 0} } type DeployRequest struct { @@ -794,7 +956,7 @@ func (x *ImageTransferSuccess) GetImageSize() uint64 { return 0 } -type RemoveContainerRequest struct { +type RemoveImageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -804,8 +966,8 @@ type RemoveContainerRequest struct { Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` } -func (x *RemoveContainerRequest) Reset() { - *x = RemoveContainerRequest{} +func (x *RemoveImageRequest) Reset() { + *x = RemoveImageRequest{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -813,13 +975,13 @@ func (x *RemoveContainerRequest) Reset() { } } -func (x *RemoveContainerRequest) String() string { +func (x *RemoveImageRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveContainerRequest) ProtoMessage() {} +func (*RemoveImageRequest) ProtoMessage() {} -func (x *RemoveContainerRequest) ProtoReflect() protoreflect.Message { +func (x *RemoveImageRequest) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -831,43 +993,43 @@ func (x *RemoveContainerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveContainerRequest.ProtoReflect.Descriptor instead. -func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveImageRequest.ProtoReflect.Descriptor instead. +func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{7} } -func (x *RemoveContainerRequest) GetName() string { +func (x *RemoveImageRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *RemoveContainerRequest) GetTag() string { +func (x *RemoveImageRequest) GetTag() string { if x != nil { return x.Tag } return "" } -func (x *RemoveContainerRequest) GetForce() bool { +func (x *RemoveImageRequest) GetForce() bool { if x != nil { return x.Force } return false } -type RemoveContainerResponse struct { +type RemoveImageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code RemoveContainerResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.RemoveContainerResponse_Code" json:"code,omitempty"` - Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` + Code RemoveImageResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.RemoveImageResponse_Code" json:"code,omitempty"` + Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` } -func (x *RemoveContainerResponse) Reset() { - *x = RemoveContainerResponse{} +func (x *RemoveImageResponse) Reset() { + *x = RemoveImageResponse{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -875,13 +1037,13 @@ func (x *RemoveContainerResponse) Reset() { } } -func (x *RemoveContainerResponse) String() string { +func (x *RemoveImageResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveContainerResponse) ProtoMessage() {} +func (*RemoveImageResponse) ProtoMessage() {} -func (x *RemoveContainerResponse) ProtoReflect() protoreflect.Message { +func (x *RemoveImageResponse) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -893,37 +1055,37 @@ func (x *RemoveContainerResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveContainerResponse.ProtoReflect.Descriptor instead. -func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveImageResponse.ProtoReflect.Descriptor instead. +func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{8} } -func (x *RemoveContainerResponse) GetCode() RemoveContainerResponse_Code { +func (x *RemoveImageResponse) GetCode() RemoveImageResponse_Code { if x != nil { return x.Code } - return RemoveContainerResponse_UNSPECIFIED + return RemoveImageResponse_UNSPECIFIED } -func (x *RemoveContainerResponse) GetDetail() string { +func (x *RemoveImageResponse) GetDetail() string { if x != nil { return x.Detail } return "" } -type ListContainerRequest struct { +type RemoveContainerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - All bool `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Filter []*ListContainerRequest_Filter `protobuf:"bytes,3,rep,name=filter,proto3" json:"filter,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` } -func (x *ListContainerRequest) Reset() { - *x = ListContainerRequest{} +func (x *RemoveContainerRequest) Reset() { + *x = RemoveContainerRequest{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -931,13 +1093,13 @@ func (x *ListContainerRequest) Reset() { } } -func (x *ListContainerRequest) String() string { +func (x *RemoveContainerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListContainerRequest) ProtoMessage() {} +func (*RemoveContainerRequest) ProtoMessage() {} -func (x *ListContainerRequest) ProtoReflect() protoreflect.Message { +func (x *RemoveContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -949,45 +1111,43 @@ func (x *ListContainerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListContainerRequest.ProtoReflect.Descriptor instead. -func (*ListContainerRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveContainerRequest.ProtoReflect.Descriptor instead. +func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{9} } -func (x *ListContainerRequest) GetAll() bool { +func (x *RemoveContainerRequest) GetName() string { if x != nil { - return x.All + return x.Name } - return false + return "" } -func (x *ListContainerRequest) GetLimit() int32 { +func (x *RemoveContainerRequest) GetTag() string { if x != nil { - return x.Limit + return x.Tag } - return 0 + return "" } -func (x *ListContainerRequest) GetFilter() []*ListContainerRequest_Filter { +func (x *RemoveContainerRequest) GetForce() bool { if x != nil { - return x.Filter + return x.Force } - return nil + return false } -type ListContainerResponse struct { +type RemoveContainerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ImageName string `protobuf:"bytes,3,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - Status ListContainerResponse_Status `protobuf:"varint,4,opt,name=status,proto3,enum=gnoi.containerz.ListContainerResponse_Status" json:"status,omitempty"` + Code RemoveContainerResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.RemoveContainerResponse_Code" json:"code,omitempty"` + Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` } -func (x *ListContainerResponse) Reset() { - *x = ListContainerResponse{} +func (x *RemoveContainerResponse) Reset() { + *x = RemoveContainerResponse{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -995,13 +1155,13 @@ func (x *ListContainerResponse) Reset() { } } -func (x *ListContainerResponse) String() string { +func (x *RemoveContainerResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListContainerResponse) ProtoMessage() {} +func (*RemoveContainerResponse) ProtoMessage() {} -func (x *ListContainerResponse) ProtoReflect() protoreflect.Message { +func (x *RemoveContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1013,51 +1173,36 @@ func (x *ListContainerResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListContainerResponse.ProtoReflect.Descriptor instead. -func (*ListContainerResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveContainerResponse.ProtoReflect.Descriptor instead. +func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{10} } -func (x *ListContainerResponse) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ListContainerResponse) GetName() string { +func (x *RemoveContainerResponse) GetCode() RemoveContainerResponse_Code { if x != nil { - return x.Name + return x.Code } - return "" + return RemoveContainerResponse_UNSPECIFIED } -func (x *ListContainerResponse) GetImageName() string { +func (x *RemoveContainerResponse) GetDetail() string { if x != nil { - return x.ImageName + return x.Detail } return "" } -func (x *ListContainerResponse) GetStatus() ListContainerResponse_Status { - if x != nil { - return x.Status - } - return ListContainerResponse_UNSPECIFIED -} - -type Volume struct { +type ListImageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - MountPoint string `protobuf:"bytes,2,opt,name=mount_point,json=mountPoint,proto3" json:"mount_point,omitempty"` - ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Filter []*ListImageRequest_Filter `protobuf:"bytes,3,rep,name=filter,proto3" json:"filter,omitempty"` } -func (x *Volume) Reset() { - *x = Volume{} +func (x *ListImageRequest) Reset() { + *x = ListImageRequest{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1065,13 +1210,13 @@ func (x *Volume) Reset() { } } -func (x *Volume) String() string { +func (x *ListImageRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Volume) ProtoMessage() {} +func (*ListImageRequest) ProtoMessage() {} -func (x *Volume) ProtoReflect() protoreflect.Message { +func (x *ListImageRequest) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1083,48 +1228,36 @@ func (x *Volume) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Volume.ProtoReflect.Descriptor instead. -func (*Volume) Descriptor() ([]byte, []int) { +// Deprecated: Use ListImageRequest.ProtoReflect.Descriptor instead. +func (*ListImageRequest) Descriptor() ([]byte, []int) { return file_containerz_containerz_proto_rawDescGZIP(), []int{11} } -func (x *Volume) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Volume) GetMountPoint() string { +func (x *ListImageRequest) GetLimit() int32 { if x != nil { - return x.MountPoint + return x.Limit } - return "" + return 0 } -func (x *Volume) GetReadOnly() bool { +func (x *ListImageRequest) GetFilter() []*ListImageRequest_Filter { if x != nil { - return x.ReadOnly + return x.Filter } - return false + return nil } -type StartContainerRequest struct { +type ListImageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` - Cmd string `protobuf:"bytes,3,opt,name=cmd,proto3" json:"cmd,omitempty"` - InstanceName string `protobuf:"bytes,4,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` - Ports []*StartContainerRequest_Port `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"` - Environment map[string]string `protobuf:"bytes,6,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Volumes []*Volume `protobuf:"bytes,7,rep,name=volumes,proto3" json:"volumes,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` } -func (x *StartContainerRequest) Reset() { - *x = StartContainerRequest{} +func (x *ListImageResponse) Reset() { + *x = ListImageResponse{} if protoimpl.UnsafeEnabled { mi := &file_containerz_containerz_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1132,13 +1265,13 @@ func (x *StartContainerRequest) Reset() { } } -func (x *StartContainerRequest) String() string { +func (x *ListImageResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartContainerRequest) ProtoMessage() {} +func (*ListImageResponse) ProtoMessage() {} -func (x *StartContainerRequest) ProtoReflect() protoreflect.Message { +func (x *ListImageResponse) ProtoReflect() protoreflect.Message { mi := &file_containerz_containerz_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1150,9 +1283,270 @@ func (x *StartContainerRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } +// Deprecated: Use ListImageResponse.ProtoReflect.Descriptor instead. +func (*ListImageResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{12} +} + +func (x *ListImageResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListImageResponse) GetImageName() string { + if x != nil { + return x.ImageName + } + return "" +} + +type ListContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + All bool `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Filter []*ListContainerRequest_Filter `protobuf:"bytes,3,rep,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListContainerRequest) Reset() { + *x = ListContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListContainerRequest) ProtoMessage() {} + +func (x *ListContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListContainerRequest.ProtoReflect.Descriptor instead. +func (*ListContainerRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{13} +} + +func (x *ListContainerRequest) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *ListContainerRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListContainerRequest) GetFilter() []*ListContainerRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +type ListContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ImageName string `protobuf:"bytes,3,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + Status ListContainerResponse_Status `protobuf:"varint,4,opt,name=status,proto3,enum=gnoi.containerz.ListContainerResponse_Status" json:"status,omitempty"` +} + +func (x *ListContainerResponse) Reset() { + *x = ListContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListContainerResponse) ProtoMessage() {} + +func (x *ListContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListContainerResponse.ProtoReflect.Descriptor instead. +func (*ListContainerResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{14} +} + +func (x *ListContainerResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListContainerResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListContainerResponse) GetImageName() string { + if x != nil { + return x.ImageName + } + return "" +} + +func (x *ListContainerResponse) GetStatus() ListContainerResponse_Status { + if x != nil { + return x.Status + } + return ListContainerResponse_UNSPECIFIED +} + +type Volume struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + MountPoint string `protobuf:"bytes,2,opt,name=mount_point,json=mountPoint,proto3" json:"mount_point,omitempty"` + ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` +} + +func (x *Volume) Reset() { + *x = Volume{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Volume) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Volume) ProtoMessage() {} + +func (x *Volume) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Volume.ProtoReflect.Descriptor instead. +func (*Volume) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{15} +} + +func (x *Volume) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Volume) GetMountPoint() string { + if x != nil { + return x.MountPoint + } + return "" +} + +func (x *Volume) GetReadOnly() bool { + if x != nil { + return x.ReadOnly + } + return false +} + +type StartContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + Cmd string `protobuf:"bytes,3,opt,name=cmd,proto3" json:"cmd,omitempty"` + InstanceName string `protobuf:"bytes,4,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + Ports []*StartContainerRequest_Port `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"` + Environment map[string]string `protobuf:"bytes,6,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Volumes []*Volume `protobuf:"bytes,7,rep,name=volumes,proto3" json:"volumes,omitempty"` + Network string `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` + Cap *StartContainerRequest_Capabilities `protobuf:"bytes,9,opt,name=cap,proto3" json:"cap,omitempty"` + Restart *StartContainerRequest_Restart `protobuf:"bytes,10,opt,name=restart,proto3" json:"restart,omitempty"` + RunAs *StartContainerRequest_RunAs `protobuf:"bytes,11,opt,name=run_as,json=runAs,proto3" json:"run_as,omitempty"` +} + +func (x *StartContainerRequest) Reset() { + *x = StartContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartContainerRequest) ProtoMessage() {} + +func (x *StartContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + // Deprecated: Use StartContainerRequest.ProtoReflect.Descriptor instead. func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{12} + return file_containerz_containerz_proto_rawDescGZIP(), []int{16} } func (x *StartContainerRequest) GetImageName() string { @@ -1173,33 +1567,61 @@ func (x *StartContainerRequest) GetCmd() string { if x != nil { return x.Cmd } - return "" + return "" +} + +func (x *StartContainerRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *StartContainerRequest) GetPorts() []*StartContainerRequest_Port { + if x != nil { + return x.Ports + } + return nil +} + +func (x *StartContainerRequest) GetEnvironment() map[string]string { + if x != nil { + return x.Environment + } + return nil +} + +func (x *StartContainerRequest) GetVolumes() []*Volume { + if x != nil { + return x.Volumes + } + return nil } -func (x *StartContainerRequest) GetInstanceName() string { +func (x *StartContainerRequest) GetNetwork() string { if x != nil { - return x.InstanceName + return x.Network } return "" } -func (x *StartContainerRequest) GetPorts() []*StartContainerRequest_Port { +func (x *StartContainerRequest) GetCap() *StartContainerRequest_Capabilities { if x != nil { - return x.Ports + return x.Cap } return nil } -func (x *StartContainerRequest) GetEnvironment() map[string]string { +func (x *StartContainerRequest) GetRestart() *StartContainerRequest_Restart { if x != nil { - return x.Environment + return x.Restart } return nil } -func (x *StartContainerRequest) GetVolumes() []*Volume { +func (x *StartContainerRequest) GetRunAs() *StartContainerRequest_RunAs { if x != nil { - return x.Volumes + return x.RunAs } return nil } @@ -1219,7 +1641,7 @@ type StartContainerResponse struct { func (x *StartContainerResponse) Reset() { *x = StartContainerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[13] + mi := &file_containerz_containerz_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1654,7 @@ func (x *StartContainerResponse) String() string { func (*StartContainerResponse) ProtoMessage() {} func (x *StartContainerResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[13] + mi := &file_containerz_containerz_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1667,7 @@ func (x *StartContainerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartContainerResponse.ProtoReflect.Descriptor instead. func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{13} + return file_containerz_containerz_proto_rawDescGZIP(), []int{17} } func (m *StartContainerResponse) GetResponse() isStartContainerResponse_Response { @@ -1296,7 +1718,7 @@ type StartOK struct { func (x *StartOK) Reset() { *x = StartOK{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[14] + mi := &file_containerz_containerz_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1309,7 +1731,7 @@ func (x *StartOK) String() string { func (*StartOK) ProtoMessage() {} func (x *StartOK) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[14] + mi := &file_containerz_containerz_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1322,7 +1744,7 @@ func (x *StartOK) ProtoReflect() protoreflect.Message { // Deprecated: Use StartOK.ProtoReflect.Descriptor instead. func (*StartOK) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{14} + return file_containerz_containerz_proto_rawDescGZIP(), []int{18} } func (x *StartOK) GetInstanceName() string { @@ -1344,7 +1766,7 @@ type StartError struct { func (x *StartError) Reset() { *x = StartError{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[15] + mi := &file_containerz_containerz_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1357,7 +1779,7 @@ func (x *StartError) String() string { func (*StartError) ProtoMessage() {} func (x *StartError) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[15] + mi := &file_containerz_containerz_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1370,7 +1792,7 @@ func (x *StartError) ProtoReflect() protoreflect.Message { // Deprecated: Use StartError.ProtoReflect.Descriptor instead. func (*StartError) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{15} + return file_containerz_containerz_proto_rawDescGZIP(), []int{19} } func (x *StartError) GetErrorCode() StartError_Code { @@ -1400,7 +1822,7 @@ type StopContainerRequest struct { func (x *StopContainerRequest) Reset() { *x = StopContainerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[16] + mi := &file_containerz_containerz_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1413,7 +1835,7 @@ func (x *StopContainerRequest) String() string { func (*StopContainerRequest) ProtoMessage() {} func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[16] + mi := &file_containerz_containerz_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1426,56 +1848,326 @@ func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopContainerRequest.ProtoReflect.Descriptor instead. func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{16} + return file_containerz_containerz_proto_rawDescGZIP(), []int{20} +} + +func (x *StopContainerRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *StopContainerRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +func (x *StopContainerRequest) GetRestart() bool { + if x != nil { + return x.Restart + } + return false +} + +type StopContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code StopContainerResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.StopContainerResponse_Code" json:"code,omitempty"` + Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *StopContainerResponse) Reset() { + *x = StopContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopContainerResponse) ProtoMessage() {} + +func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopContainerResponse.ProtoReflect.Descriptor instead. +func (*StopContainerResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{21} +} + +func (x *StopContainerResponse) GetCode() StopContainerResponse_Code { + if x != nil { + return x.Code + } + return StopContainerResponse_UNSPECIFIED +} + +func (x *StopContainerResponse) GetDetails() string { + if x != nil { + return x.Details + } + return "" +} + +type UpdateContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageTag string `protobuf:"bytes,3,opt,name=image_tag,json=imageTag,proto3" json:"image_tag,omitempty"` + Params *StartContainerRequest `protobuf:"bytes,4,opt,name=params,proto3" json:"params,omitempty"` + Async bool `protobuf:"varint,5,opt,name=async,proto3" json:"async,omitempty"` +} + +func (x *UpdateContainerRequest) Reset() { + *x = UpdateContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateContainerRequest) ProtoMessage() {} + +func (x *UpdateContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateContainerRequest.ProtoReflect.Descriptor instead. +func (*UpdateContainerRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{22} +} + +func (x *UpdateContainerRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *UpdateContainerRequest) GetImageName() string { + if x != nil { + return x.ImageName + } + return "" +} + +func (x *UpdateContainerRequest) GetImageTag() string { + if x != nil { + return x.ImageTag + } + return "" +} + +func (x *UpdateContainerRequest) GetParams() *StartContainerRequest { + if x != nil { + return x.Params + } + return nil +} + +func (x *UpdateContainerRequest) GetAsync() bool { + if x != nil { + return x.Async + } + return false +} + +type UpdateContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Response: + // + // *UpdateContainerResponse_UpdateOk + // *UpdateContainerResponse_UpdateError + Response isUpdateContainerResponse_Response `protobuf_oneof:"response"` +} + +func (x *UpdateContainerResponse) Reset() { + *x = UpdateContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateContainerResponse) ProtoMessage() {} + +func (x *UpdateContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateContainerResponse.ProtoReflect.Descriptor instead. +func (*UpdateContainerResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{23} +} + +func (m *UpdateContainerResponse) GetResponse() isUpdateContainerResponse_Response { + if m != nil { + return m.Response + } + return nil +} + +func (x *UpdateContainerResponse) GetUpdateOk() *UpdateOK { + if x, ok := x.GetResponse().(*UpdateContainerResponse_UpdateOk); ok { + return x.UpdateOk + } + return nil +} + +func (x *UpdateContainerResponse) GetUpdateError() *UpdateError { + if x, ok := x.GetResponse().(*UpdateContainerResponse_UpdateError); ok { + return x.UpdateError + } + return nil +} + +type isUpdateContainerResponse_Response interface { + isUpdateContainerResponse_Response() +} + +type UpdateContainerResponse_UpdateOk struct { + UpdateOk *UpdateOK `protobuf:"bytes,1,opt,name=update_ok,json=updateOk,proto3,oneof"` +} + +type UpdateContainerResponse_UpdateError struct { + UpdateError *UpdateError `protobuf:"bytes,2,opt,name=update_error,json=updateError,proto3,oneof"` +} + +func (*UpdateContainerResponse_UpdateOk) isUpdateContainerResponse_Response() {} + +func (*UpdateContainerResponse_UpdateError) isUpdateContainerResponse_Response() {} + +type UpdateOK struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + IsAsync bool `protobuf:"varint,2,opt,name=is_async,json=isAsync,proto3" json:"is_async,omitempty"` +} + +func (x *UpdateOK) Reset() { + *x = UpdateOK{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateOK) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateOK) ProtoMessage() {} + +func (x *UpdateOK) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateOK.ProtoReflect.Descriptor instead. +func (*UpdateOK) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{24} } -func (x *StopContainerRequest) GetInstanceName() string { +func (x *UpdateOK) GetInstanceName() string { if x != nil { return x.InstanceName } return "" } -func (x *StopContainerRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -func (x *StopContainerRequest) GetRestart() bool { +func (x *UpdateOK) GetIsAsync() bool { if x != nil { - return x.Restart + return x.IsAsync } return false } -type StopContainerResponse struct { +type UpdateError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code StopContainerResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.StopContainerResponse_Code" json:"code,omitempty"` - Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` + ErrorCode UpdateError_Code `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=gnoi.containerz.UpdateError_Code" json:"error_code,omitempty"` + Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` } -func (x *StopContainerResponse) Reset() { - *x = StopContainerResponse{} +func (x *UpdateError) Reset() { + *x = UpdateError{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[17] + mi := &file_containerz_containerz_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StopContainerResponse) String() string { +func (x *UpdateError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StopContainerResponse) ProtoMessage() {} +func (*UpdateError) ProtoMessage() {} -func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[17] +func (x *UpdateError) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,19 +2178,19 @@ func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StopContainerResponse.ProtoReflect.Descriptor instead. -func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{17} +// Deprecated: Use UpdateError.ProtoReflect.Descriptor instead. +func (*UpdateError) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{25} } -func (x *StopContainerResponse) GetCode() StopContainerResponse_Code { +func (x *UpdateError) GetErrorCode() UpdateError_Code { if x != nil { - return x.Code + return x.ErrorCode } - return StopContainerResponse_UNSPECIFIED + return UpdateError_UNSPECIFIED } -func (x *StopContainerResponse) GetDetails() string { +func (x *UpdateError) GetDetails() string { if x != nil { return x.Details } @@ -1517,7 +2209,7 @@ type LogRequest struct { func (x *LogRequest) Reset() { *x = LogRequest{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[18] + mi := &file_containerz_containerz_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1530,7 +2222,7 @@ func (x *LogRequest) String() string { func (*LogRequest) ProtoMessage() {} func (x *LogRequest) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[18] + mi := &file_containerz_containerz_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1543,7 +2235,7 @@ func (x *LogRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LogRequest.ProtoReflect.Descriptor instead. func (*LogRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{18} + return file_containerz_containerz_proto_rawDescGZIP(), []int{26} } func (x *LogRequest) GetInstanceName() string { @@ -1571,7 +2263,7 @@ type LogResponse struct { func (x *LogResponse) Reset() { *x = LogResponse{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[19] + mi := &file_containerz_containerz_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1584,7 +2276,7 @@ func (x *LogResponse) String() string { func (*LogResponse) ProtoMessage() {} func (x *LogResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[19] + mi := &file_containerz_containerz_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1597,7 +2289,7 @@ func (x *LogResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LogResponse.ProtoReflect.Descriptor instead. func (*LogResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{19} + return file_containerz_containerz_proto_rawDescGZIP(), []int{27} } func (x *LogResponse) GetMsg() string { @@ -1620,7 +2312,7 @@ type LocalDriverOptions struct { func (x *LocalDriverOptions) Reset() { *x = LocalDriverOptions{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[20] + mi := &file_containerz_containerz_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1633,7 +2325,7 @@ func (x *LocalDriverOptions) String() string { func (*LocalDriverOptions) ProtoMessage() {} func (x *LocalDriverOptions) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[20] + mi := &file_containerz_containerz_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1646,7 +2338,7 @@ func (x *LocalDriverOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalDriverOptions.ProtoReflect.Descriptor instead. func (*LocalDriverOptions) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{20} + return file_containerz_containerz_proto_rawDescGZIP(), []int{28} } func (x *LocalDriverOptions) GetType() LocalDriverOptions_Type { @@ -1687,7 +2379,7 @@ type CreateVolumeRequest struct { func (x *CreateVolumeRequest) Reset() { *x = CreateVolumeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[21] + mi := &file_containerz_containerz_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1700,7 +2392,7 @@ func (x *CreateVolumeRequest) String() string { func (*CreateVolumeRequest) ProtoMessage() {} func (x *CreateVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[21] + mi := &file_containerz_containerz_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1713,7 +2405,7 @@ func (x *CreateVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateVolumeRequest.ProtoReflect.Descriptor instead. func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{21} + return file_containerz_containerz_proto_rawDescGZIP(), []int{29} } func (x *CreateVolumeRequest) GetName() string { @@ -1772,7 +2464,7 @@ type CreateVolumeResponse struct { func (x *CreateVolumeResponse) Reset() { *x = CreateVolumeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[22] + mi := &file_containerz_containerz_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1785,7 +2477,7 @@ func (x *CreateVolumeResponse) String() string { func (*CreateVolumeResponse) ProtoMessage() {} func (x *CreateVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[22] + mi := &file_containerz_containerz_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1798,7 +2490,7 @@ func (x *CreateVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateVolumeResponse.ProtoReflect.Descriptor instead. func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{22} + return file_containerz_containerz_proto_rawDescGZIP(), []int{30} } func (x *CreateVolumeResponse) GetName() string { @@ -1820,7 +2512,7 @@ type RemoveVolumeRequest struct { func (x *RemoveVolumeRequest) Reset() { *x = RemoveVolumeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[23] + mi := &file_containerz_containerz_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1833,7 +2525,7 @@ func (x *RemoveVolumeRequest) String() string { func (*RemoveVolumeRequest) ProtoMessage() {} func (x *RemoveVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[23] + mi := &file_containerz_containerz_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1846,7 +2538,7 @@ func (x *RemoveVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveVolumeRequest.ProtoReflect.Descriptor instead. func (*RemoveVolumeRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{23} + return file_containerz_containerz_proto_rawDescGZIP(), []int{31} } func (x *RemoveVolumeRequest) GetName() string { @@ -1872,7 +2564,7 @@ type RemoveVolumeResponse struct { func (x *RemoveVolumeResponse) Reset() { *x = RemoveVolumeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[24] + mi := &file_containerz_containerz_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1885,7 +2577,7 @@ func (x *RemoveVolumeResponse) String() string { func (*RemoveVolumeResponse) ProtoMessage() {} func (x *RemoveVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[24] + mi := &file_containerz_containerz_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1898,7 +2590,7 @@ func (x *RemoveVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveVolumeResponse.ProtoReflect.Descriptor instead. func (*RemoveVolumeResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{24} + return file_containerz_containerz_proto_rawDescGZIP(), []int{32} } type ListVolumeRequest struct { @@ -1912,7 +2604,7 @@ type ListVolumeRequest struct { func (x *ListVolumeRequest) Reset() { *x = ListVolumeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[25] + mi := &file_containerz_containerz_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1925,7 +2617,7 @@ func (x *ListVolumeRequest) String() string { func (*ListVolumeRequest) ProtoMessage() {} func (x *ListVolumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[25] + mi := &file_containerz_containerz_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1938,7 +2630,7 @@ func (x *ListVolumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVolumeRequest.ProtoReflect.Descriptor instead. func (*ListVolumeRequest) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{25} + return file_containerz_containerz_proto_rawDescGZIP(), []int{33} } func (x *ListVolumeRequest) GetFilter() []*ListVolumeRequest_Filter { @@ -1963,7 +2655,7 @@ type ListVolumeResponse struct { func (x *ListVolumeResponse) Reset() { *x = ListVolumeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[26] + mi := &file_containerz_containerz_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1976,7 +2668,7 @@ func (x *ListVolumeResponse) String() string { func (*ListVolumeResponse) ProtoMessage() {} func (x *ListVolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[26] + mi := &file_containerz_containerz_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1989,7 +2681,7 @@ func (x *ListVolumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVolumeResponse.ProtoReflect.Descriptor instead. func (*ListVolumeResponse) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{26} + return file_containerz_containerz_proto_rawDescGZIP(), []int{34} } func (x *ListVolumeResponse) GetName() string { @@ -2003,56 +2695,276 @@ func (x *ListVolumeResponse) GetCreated() *timestamppb.Timestamp { if x != nil { return x.Created } - return nil + return nil +} + +func (x *ListVolumeResponse) GetDriver() string { + if x != nil { + return x.Driver + } + return "" +} + +func (x *ListVolumeResponse) GetOptions() map[string]string { + if x != nil { + return x.Options + } + return nil +} + +func (x *ListVolumeResponse) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +type ListImageRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"` +} + +func (x *ListImageRequest_Filter) Reset() { + *x = ListImageRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListImageRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListImageRequest_Filter) ProtoMessage() {} + +func (x *ListImageRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListImageRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListImageRequest_Filter) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *ListImageRequest_Filter) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ListImageRequest_Filter) GetValue() []string { + if x != nil { + return x.Value + } + return nil +} + +type ListContainerRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"` +} + +func (x *ListContainerRequest_Filter) Reset() { + *x = ListContainerRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListContainerRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListContainerRequest_Filter) ProtoMessage() {} + +func (x *ListContainerRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListContainerRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListContainerRequest_Filter) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{13, 0} +} + +func (x *ListContainerRequest_Filter) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ListContainerRequest_Filter) GetValue() []string { + if x != nil { + return x.Value + } + return nil +} + +type StartContainerRequest_Port struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Internal uint32 `protobuf:"varint,1,opt,name=internal,proto3" json:"internal,omitempty"` + External uint32 `protobuf:"varint,2,opt,name=external,proto3" json:"external,omitempty"` +} + +func (x *StartContainerRequest_Port) Reset() { + *x = StartContainerRequest_Port{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartContainerRequest_Port) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartContainerRequest_Port) ProtoMessage() {} + +func (x *StartContainerRequest_Port) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartContainerRequest_Port.ProtoReflect.Descriptor instead. +func (*StartContainerRequest_Port) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 0} +} + +func (x *StartContainerRequest_Port) GetInternal() uint32 { + if x != nil { + return x.Internal + } + return 0 +} + +func (x *StartContainerRequest_Port) GetExternal() uint32 { + if x != nil { + return x.External + } + return 0 +} + +type StartContainerRequest_Capabilities struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Add []string `protobuf:"bytes,1,rep,name=add,proto3" json:"add,omitempty"` + Remove []string `protobuf:"bytes,2,rep,name=remove,proto3" json:"remove,omitempty"` +} + +func (x *StartContainerRequest_Capabilities) Reset() { + *x = StartContainerRequest_Capabilities{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartContainerRequest_Capabilities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartContainerRequest_Capabilities) ProtoMessage() {} + +func (x *StartContainerRequest_Capabilities) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (x *ListVolumeResponse) GetDriver() string { - if x != nil { - return x.Driver - } - return "" +// Deprecated: Use StartContainerRequest_Capabilities.ProtoReflect.Descriptor instead. +func (*StartContainerRequest_Capabilities) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 2} } -func (x *ListVolumeResponse) GetOptions() map[string]string { +func (x *StartContainerRequest_Capabilities) GetAdd() []string { if x != nil { - return x.Options + return x.Add } return nil } -func (x *ListVolumeResponse) GetLabels() map[string]string { +func (x *StartContainerRequest_Capabilities) GetRemove() []string { if x != nil { - return x.Labels + return x.Remove } return nil } -type ListContainerRequest_Filter struct { +type StartContainerRequest_Restart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"` + Policy StartContainerRequest_Restart_Policy `protobuf:"varint,1,opt,name=policy,proto3,enum=gnoi.containerz.StartContainerRequest_Restart_Policy" json:"policy,omitempty"` + Attempts uint32 `protobuf:"varint,2,opt,name=attempts,proto3" json:"attempts,omitempty"` } -func (x *ListContainerRequest_Filter) Reset() { - *x = ListContainerRequest_Filter{} +func (x *StartContainerRequest_Restart) Reset() { + *x = StartContainerRequest_Restart{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[27] + mi := &file_containerz_containerz_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListContainerRequest_Filter) String() string { +func (x *StartContainerRequest_Restart) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListContainerRequest_Filter) ProtoMessage() {} +func (*StartContainerRequest_Restart) ProtoMessage() {} -func (x *ListContainerRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[27] +func (x *StartContainerRequest_Restart) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2063,51 +2975,51 @@ func (x *ListContainerRequest_Filter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListContainerRequest_Filter.ProtoReflect.Descriptor instead. -func (*ListContainerRequest_Filter) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{9, 0} +// Deprecated: Use StartContainerRequest_Restart.ProtoReflect.Descriptor instead. +func (*StartContainerRequest_Restart) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 3} } -func (x *ListContainerRequest_Filter) GetKey() string { +func (x *StartContainerRequest_Restart) GetPolicy() StartContainerRequest_Restart_Policy { if x != nil { - return x.Key + return x.Policy } - return "" + return StartContainerRequest_Restart_NONE } -func (x *ListContainerRequest_Filter) GetValue() []string { +func (x *StartContainerRequest_Restart) GetAttempts() uint32 { if x != nil { - return x.Value + return x.Attempts } - return nil + return 0 } -type StartContainerRequest_Port struct { +type StartContainerRequest_RunAs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Internal uint32 `protobuf:"varint,1,opt,name=internal,proto3" json:"internal,omitempty"` - External uint32 `protobuf:"varint,2,opt,name=external,proto3" json:"external,omitempty"` + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` } -func (x *StartContainerRequest_Port) Reset() { - *x = StartContainerRequest_Port{} +func (x *StartContainerRequest_RunAs) Reset() { + *x = StartContainerRequest_RunAs{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[28] + mi := &file_containerz_containerz_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StartContainerRequest_Port) String() string { +func (x *StartContainerRequest_RunAs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartContainerRequest_Port) ProtoMessage() {} +func (*StartContainerRequest_RunAs) ProtoMessage() {} -func (x *StartContainerRequest_Port) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[28] +func (x *StartContainerRequest_RunAs) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2118,23 +3030,23 @@ func (x *StartContainerRequest_Port) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StartContainerRequest_Port.ProtoReflect.Descriptor instead. -func (*StartContainerRequest_Port) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{12, 0} +// Deprecated: Use StartContainerRequest_RunAs.ProtoReflect.Descriptor instead. +func (*StartContainerRequest_RunAs) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 4} } -func (x *StartContainerRequest_Port) GetInternal() uint32 { +func (x *StartContainerRequest_RunAs) GetUser() string { if x != nil { - return x.Internal + return x.User } - return 0 + return "" } -func (x *StartContainerRequest_Port) GetExternal() uint32 { +func (x *StartContainerRequest_RunAs) GetGroup() string { if x != nil { - return x.External + return x.Group } - return 0 + return "" } type ListVolumeRequest_Filter struct { @@ -2149,7 +3061,7 @@ type ListVolumeRequest_Filter struct { func (x *ListVolumeRequest_Filter) Reset() { *x = ListVolumeRequest_Filter{} if protoimpl.UnsafeEnabled { - mi := &file_containerz_containerz_proto_msgTypes[31] + mi := &file_containerz_containerz_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2162,7 +3074,7 @@ func (x *ListVolumeRequest_Filter) String() string { func (*ListVolumeRequest_Filter) ProtoMessage() {} func (x *ListVolumeRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_containerz_containerz_proto_msgTypes[31] + mi := &file_containerz_containerz_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +3087,7 @@ func (x *ListVolumeRequest_Filter) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVolumeRequest_Filter.ProtoReflect.Descriptor instead. func (*ListVolumeRequest_Filter) Descriptor() ([]byte, []int) { - return file_containerz_containerz_proto_rawDescGZIP(), []int{25, 0} + return file_containerz_containerz_proto_rawDescGZIP(), []int{33, 0} } func (x *ListVolumeRequest_Filter) GetKey() string { @@ -2269,266 +3181,389 @@ var file_containerz_containerz_proto_rawDesc = []byte{ 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0x54, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x41, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, - 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0xb6, - 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x44, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4f, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, - 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x04, 0x22, 0x5a, 0x0a, 0x06, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xd0, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x74, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x59, 0x0a, - 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6e, 0x6f, 0x69, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x3e, 0x0a, 0x04, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0x3e, 0x0a, 0x10, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9b, 0x01, 0x0a, 0x16, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, + 0x50, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x22, 0xae, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x22, 0x40, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, + 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, + 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x10, 0x03, 0x22, 0x54, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, + 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, + 0x40, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, + 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, + 0x03, 0x22, 0x9c, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, + 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, + 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x42, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, 0x0a, 0x06, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf2, 0x01, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6e, 0x6f, + 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x4f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, + 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, + 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x04, 0x22, 0x5a, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xe8, + 0x07, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x41, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x4f, 0x4b, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6b, 0x12, 0x3e, 0x0a, - 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x0a, 0x07, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x4f, 0x4b, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, + 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x45, 0x0a, 0x03, 0x63, + 0x61, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x03, 0x63, + 0x61, 0x70, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, + 0x72, 0x75, 0x6e, 0x5f, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0x6b, 0x0a, 0x14, 0x53, 0x74, - 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, + 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x73, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x41, + 0x73, 0x1a, 0x3e, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x38, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, + 0x61, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0xb8, 0x01, 0x0a, 0x07, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x73, 0x22, 0x42, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x08, 0x0a, 0x04, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, + 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, + 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x1a, 0x31, 0x0a, 0x05, 0x52, 0x75, 0x6e, 0x41, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x4b, + 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6b, 0x12, 0x3e, 0x0a, 0x0b, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x4f, 0x4b, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3d, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x53, 0x59, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, - 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0x49, 0x0a, 0x0a, 0x4c, - 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x1f, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x12, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, - 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, - 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x01, 0x22, 0xc1, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2f, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x17, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x7a, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x12, 0x55, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6e, 0x6f, + 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, + 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0x6b, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x6f, 0x75, 0x6e, 0x74, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x82, 0x03, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, + 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3d, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x53, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0xcf, 0x01, 0x0a, 0x16, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x54, 0x61, 0x67, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xa2, 0x01, 0x0a, 0x17, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6e, 0x6f, + 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x4b, 0x48, 0x00, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x6b, 0x12, 0x41, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x4a, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x4b, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x22, 0xcf, 0x01, 0x0a, + 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x7a, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x64, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, + 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05, 0x22, 0x49, + 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x1f, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x12, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x22, 0xc1, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x12, 0x4a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, + 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x06, 0x64, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x7a, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x6f, + 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6e, 0x6f, + 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x0a, 0x14, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x88, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x82, 0x03, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x2a, 0x0a, 0x06, - 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x53, - 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x32, 0xcf, 0x06, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x12, 0x4f, 0x0a, 0x06, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x67, 0x6e, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x47, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, + 0x2a, 0x0a, 0x06, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x53, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x32, 0xeb, 0x08, 0x0a, 0x0a, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x12, 0x4f, 0x0a, 0x06, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6e, + 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x66, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x12, 0x27, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, + 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x26, 0x2e, + 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x12, 0x60, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, - 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0d, 0x53, 0x74, 0x6f, - 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x67, 0x6e, 0x6f, - 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, - 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x03, 0x4c, - 0x6f, 0x67, 0x12, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x7a, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x5d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x12, 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x5d, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x03, 0x4c, 0x6f, + 0x67, 0x12, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, + 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x5d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, + 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x59, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x22, 0x2e, - 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x2f, 0xd2, 0x3e, 0x05, 0x30, - 0x2e, 0x31, 0x2e, 0x32, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, - 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x5d, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, + 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x22, 0x2e, 0x67, + 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x2f, 0xd2, 0x3e, 0x05, 0x30, 0x2e, + 0x31, 0x2e, 0x32, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2543,102 +3578,133 @@ func file_containerz_containerz_proto_rawDescGZIP() []byte { return file_containerz_containerz_proto_rawDescData } -var file_containerz_containerz_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_containerz_containerz_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_containerz_containerz_proto_enumTypes = make([]protoimpl.EnumInfo, 9) +var file_containerz_containerz_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_containerz_containerz_proto_goTypes = []interface{}{ - (Driver)(0), // 0: gnoi.containerz.Driver - (RemoveContainerResponse_Code)(0), // 1: gnoi.containerz.RemoveContainerResponse.Code - (ListContainerResponse_Status)(0), // 2: gnoi.containerz.ListContainerResponse.Status - (StartError_Code)(0), // 3: gnoi.containerz.StartError.Code - (StopContainerResponse_Code)(0), // 4: gnoi.containerz.StopContainerResponse.Code - (LocalDriverOptions_Type)(0), // 5: gnoi.containerz.LocalDriverOptions.Type - (*DeployRequest)(nil), // 6: gnoi.containerz.DeployRequest - (*ImageTransfer)(nil), // 7: gnoi.containerz.ImageTransfer - (*ImageTransferEnd)(nil), // 8: gnoi.containerz.ImageTransferEnd - (*DeployResponse)(nil), // 9: gnoi.containerz.DeployResponse - (*ImageTransferReady)(nil), // 10: gnoi.containerz.ImageTransferReady - (*ImageTransferProgress)(nil), // 11: gnoi.containerz.ImageTransferProgress - (*ImageTransferSuccess)(nil), // 12: gnoi.containerz.ImageTransferSuccess - (*RemoveContainerRequest)(nil), // 13: gnoi.containerz.RemoveContainerRequest - (*RemoveContainerResponse)(nil), // 14: gnoi.containerz.RemoveContainerResponse - (*ListContainerRequest)(nil), // 15: gnoi.containerz.ListContainerRequest - (*ListContainerResponse)(nil), // 16: gnoi.containerz.ListContainerResponse - (*Volume)(nil), // 17: gnoi.containerz.Volume - (*StartContainerRequest)(nil), // 18: gnoi.containerz.StartContainerRequest - (*StartContainerResponse)(nil), // 19: gnoi.containerz.StartContainerResponse - (*StartOK)(nil), // 20: gnoi.containerz.StartOK - (*StartError)(nil), // 21: gnoi.containerz.StartError - (*StopContainerRequest)(nil), // 22: gnoi.containerz.StopContainerRequest - (*StopContainerResponse)(nil), // 23: gnoi.containerz.StopContainerResponse - (*LogRequest)(nil), // 24: gnoi.containerz.LogRequest - (*LogResponse)(nil), // 25: gnoi.containerz.LogResponse - (*LocalDriverOptions)(nil), // 26: gnoi.containerz.LocalDriverOptions - (*CreateVolumeRequest)(nil), // 27: gnoi.containerz.CreateVolumeRequest - (*CreateVolumeResponse)(nil), // 28: gnoi.containerz.CreateVolumeResponse - (*RemoveVolumeRequest)(nil), // 29: gnoi.containerz.RemoveVolumeRequest - (*RemoveVolumeResponse)(nil), // 30: gnoi.containerz.RemoveVolumeResponse - (*ListVolumeRequest)(nil), // 31: gnoi.containerz.ListVolumeRequest - (*ListVolumeResponse)(nil), // 32: gnoi.containerz.ListVolumeResponse - (*ListContainerRequest_Filter)(nil), // 33: gnoi.containerz.ListContainerRequest.Filter - (*StartContainerRequest_Port)(nil), // 34: gnoi.containerz.StartContainerRequest.Port - nil, // 35: gnoi.containerz.StartContainerRequest.EnvironmentEntry - nil, // 36: gnoi.containerz.CreateVolumeRequest.LabelsEntry - (*ListVolumeRequest_Filter)(nil), // 37: gnoi.containerz.ListVolumeRequest.Filter - nil, // 38: gnoi.containerz.ListVolumeResponse.OptionsEntry - nil, // 39: gnoi.containerz.ListVolumeResponse.LabelsEntry - (*common.RemoteDownload)(nil), // 40: gnoi.common.RemoteDownload - (*status.Status)(nil), // 41: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp + (Driver)(0), // 0: gnoi.containerz.Driver + (RemoveImageResponse_Code)(0), // 1: gnoi.containerz.RemoveImageResponse.Code + (RemoveContainerResponse_Code)(0), // 2: gnoi.containerz.RemoveContainerResponse.Code + (ListContainerResponse_Status)(0), // 3: gnoi.containerz.ListContainerResponse.Status + (StartContainerRequest_Restart_Policy)(0), // 4: gnoi.containerz.StartContainerRequest.Restart.Policy + (StartError_Code)(0), // 5: gnoi.containerz.StartError.Code + (StopContainerResponse_Code)(0), // 6: gnoi.containerz.StopContainerResponse.Code + (UpdateError_Code)(0), // 7: gnoi.containerz.UpdateError.Code + (LocalDriverOptions_Type)(0), // 8: gnoi.containerz.LocalDriverOptions.Type + (*DeployRequest)(nil), // 9: gnoi.containerz.DeployRequest + (*ImageTransfer)(nil), // 10: gnoi.containerz.ImageTransfer + (*ImageTransferEnd)(nil), // 11: gnoi.containerz.ImageTransferEnd + (*DeployResponse)(nil), // 12: gnoi.containerz.DeployResponse + (*ImageTransferReady)(nil), // 13: gnoi.containerz.ImageTransferReady + (*ImageTransferProgress)(nil), // 14: gnoi.containerz.ImageTransferProgress + (*ImageTransferSuccess)(nil), // 15: gnoi.containerz.ImageTransferSuccess + (*RemoveImageRequest)(nil), // 16: gnoi.containerz.RemoveImageRequest + (*RemoveImageResponse)(nil), // 17: gnoi.containerz.RemoveImageResponse + (*RemoveContainerRequest)(nil), // 18: gnoi.containerz.RemoveContainerRequest + (*RemoveContainerResponse)(nil), // 19: gnoi.containerz.RemoveContainerResponse + (*ListImageRequest)(nil), // 20: gnoi.containerz.ListImageRequest + (*ListImageResponse)(nil), // 21: gnoi.containerz.ListImageResponse + (*ListContainerRequest)(nil), // 22: gnoi.containerz.ListContainerRequest + (*ListContainerResponse)(nil), // 23: gnoi.containerz.ListContainerResponse + (*Volume)(nil), // 24: gnoi.containerz.Volume + (*StartContainerRequest)(nil), // 25: gnoi.containerz.StartContainerRequest + (*StartContainerResponse)(nil), // 26: gnoi.containerz.StartContainerResponse + (*StartOK)(nil), // 27: gnoi.containerz.StartOK + (*StartError)(nil), // 28: gnoi.containerz.StartError + (*StopContainerRequest)(nil), // 29: gnoi.containerz.StopContainerRequest + (*StopContainerResponse)(nil), // 30: gnoi.containerz.StopContainerResponse + (*UpdateContainerRequest)(nil), // 31: gnoi.containerz.UpdateContainerRequest + (*UpdateContainerResponse)(nil), // 32: gnoi.containerz.UpdateContainerResponse + (*UpdateOK)(nil), // 33: gnoi.containerz.UpdateOK + (*UpdateError)(nil), // 34: gnoi.containerz.UpdateError + (*LogRequest)(nil), // 35: gnoi.containerz.LogRequest + (*LogResponse)(nil), // 36: gnoi.containerz.LogResponse + (*LocalDriverOptions)(nil), // 37: gnoi.containerz.LocalDriverOptions + (*CreateVolumeRequest)(nil), // 38: gnoi.containerz.CreateVolumeRequest + (*CreateVolumeResponse)(nil), // 39: gnoi.containerz.CreateVolumeResponse + (*RemoveVolumeRequest)(nil), // 40: gnoi.containerz.RemoveVolumeRequest + (*RemoveVolumeResponse)(nil), // 41: gnoi.containerz.RemoveVolumeResponse + (*ListVolumeRequest)(nil), // 42: gnoi.containerz.ListVolumeRequest + (*ListVolumeResponse)(nil), // 43: gnoi.containerz.ListVolumeResponse + (*ListImageRequest_Filter)(nil), // 44: gnoi.containerz.ListImageRequest.Filter + (*ListContainerRequest_Filter)(nil), // 45: gnoi.containerz.ListContainerRequest.Filter + (*StartContainerRequest_Port)(nil), // 46: gnoi.containerz.StartContainerRequest.Port + nil, // 47: gnoi.containerz.StartContainerRequest.EnvironmentEntry + (*StartContainerRequest_Capabilities)(nil), // 48: gnoi.containerz.StartContainerRequest.Capabilities + (*StartContainerRequest_Restart)(nil), // 49: gnoi.containerz.StartContainerRequest.Restart + (*StartContainerRequest_RunAs)(nil), // 50: gnoi.containerz.StartContainerRequest.RunAs + nil, // 51: gnoi.containerz.CreateVolumeRequest.LabelsEntry + (*ListVolumeRequest_Filter)(nil), // 52: gnoi.containerz.ListVolumeRequest.Filter + nil, // 53: gnoi.containerz.ListVolumeResponse.OptionsEntry + nil, // 54: gnoi.containerz.ListVolumeResponse.LabelsEntry + (*common.RemoteDownload)(nil), // 55: gnoi.common.RemoteDownload + (*status.Status)(nil), // 56: google.rpc.Status + (*timestamppb.Timestamp)(nil), // 57: google.protobuf.Timestamp } var file_containerz_containerz_proto_depIdxs = []int32{ - 7, // 0: gnoi.containerz.DeployRequest.image_transfer:type_name -> gnoi.containerz.ImageTransfer - 8, // 1: gnoi.containerz.DeployRequest.image_transfer_end:type_name -> gnoi.containerz.ImageTransferEnd - 40, // 2: gnoi.containerz.ImageTransfer.remote_download:type_name -> gnoi.common.RemoteDownload - 10, // 3: gnoi.containerz.DeployResponse.image_transfer_ready:type_name -> gnoi.containerz.ImageTransferReady - 11, // 4: gnoi.containerz.DeployResponse.image_transfer_progress:type_name -> gnoi.containerz.ImageTransferProgress - 12, // 5: gnoi.containerz.DeployResponse.image_transfer_success:type_name -> gnoi.containerz.ImageTransferSuccess - 41, // 6: gnoi.containerz.DeployResponse.image_transfer_error:type_name -> google.rpc.Status - 1, // 7: gnoi.containerz.RemoveContainerResponse.code:type_name -> gnoi.containerz.RemoveContainerResponse.Code - 33, // 8: gnoi.containerz.ListContainerRequest.filter:type_name -> gnoi.containerz.ListContainerRequest.Filter - 2, // 9: gnoi.containerz.ListContainerResponse.status:type_name -> gnoi.containerz.ListContainerResponse.Status - 34, // 10: gnoi.containerz.StartContainerRequest.ports:type_name -> gnoi.containerz.StartContainerRequest.Port - 35, // 11: gnoi.containerz.StartContainerRequest.environment:type_name -> gnoi.containerz.StartContainerRequest.EnvironmentEntry - 17, // 12: gnoi.containerz.StartContainerRequest.volumes:type_name -> gnoi.containerz.Volume - 20, // 13: gnoi.containerz.StartContainerResponse.start_ok:type_name -> gnoi.containerz.StartOK - 21, // 14: gnoi.containerz.StartContainerResponse.start_error:type_name -> gnoi.containerz.StartError - 3, // 15: gnoi.containerz.StartError.error_code:type_name -> gnoi.containerz.StartError.Code - 4, // 16: gnoi.containerz.StopContainerResponse.code:type_name -> gnoi.containerz.StopContainerResponse.Code - 5, // 17: gnoi.containerz.LocalDriverOptions.type:type_name -> gnoi.containerz.LocalDriverOptions.Type - 0, // 18: gnoi.containerz.CreateVolumeRequest.driver:type_name -> gnoi.containerz.Driver - 26, // 19: gnoi.containerz.CreateVolumeRequest.local_mount_options:type_name -> gnoi.containerz.LocalDriverOptions - 36, // 20: gnoi.containerz.CreateVolumeRequest.labels:type_name -> gnoi.containerz.CreateVolumeRequest.LabelsEntry - 37, // 21: gnoi.containerz.ListVolumeRequest.filter:type_name -> gnoi.containerz.ListVolumeRequest.Filter - 42, // 22: gnoi.containerz.ListVolumeResponse.created:type_name -> google.protobuf.Timestamp - 38, // 23: gnoi.containerz.ListVolumeResponse.options:type_name -> gnoi.containerz.ListVolumeResponse.OptionsEntry - 39, // 24: gnoi.containerz.ListVolumeResponse.labels:type_name -> gnoi.containerz.ListVolumeResponse.LabelsEntry - 6, // 25: gnoi.containerz.Containerz.Deploy:input_type -> gnoi.containerz.DeployRequest - 13, // 26: gnoi.containerz.Containerz.RemoveContainer:input_type -> gnoi.containerz.RemoveContainerRequest - 15, // 27: gnoi.containerz.Containerz.ListContainer:input_type -> gnoi.containerz.ListContainerRequest - 18, // 28: gnoi.containerz.Containerz.StartContainer:input_type -> gnoi.containerz.StartContainerRequest - 22, // 29: gnoi.containerz.Containerz.StopContainer:input_type -> gnoi.containerz.StopContainerRequest - 24, // 30: gnoi.containerz.Containerz.Log:input_type -> gnoi.containerz.LogRequest - 27, // 31: gnoi.containerz.Containerz.CreateVolume:input_type -> gnoi.containerz.CreateVolumeRequest - 29, // 32: gnoi.containerz.Containerz.RemoveVolume:input_type -> gnoi.containerz.RemoveVolumeRequest - 31, // 33: gnoi.containerz.Containerz.ListVolume:input_type -> gnoi.containerz.ListVolumeRequest - 9, // 34: gnoi.containerz.Containerz.Deploy:output_type -> gnoi.containerz.DeployResponse - 14, // 35: gnoi.containerz.Containerz.RemoveContainer:output_type -> gnoi.containerz.RemoveContainerResponse - 16, // 36: gnoi.containerz.Containerz.ListContainer:output_type -> gnoi.containerz.ListContainerResponse - 19, // 37: gnoi.containerz.Containerz.StartContainer:output_type -> gnoi.containerz.StartContainerResponse - 23, // 38: gnoi.containerz.Containerz.StopContainer:output_type -> gnoi.containerz.StopContainerResponse - 25, // 39: gnoi.containerz.Containerz.Log:output_type -> gnoi.containerz.LogResponse - 28, // 40: gnoi.containerz.Containerz.CreateVolume:output_type -> gnoi.containerz.CreateVolumeResponse - 30, // 41: gnoi.containerz.Containerz.RemoveVolume:output_type -> gnoi.containerz.RemoveVolumeResponse - 32, // 42: gnoi.containerz.Containerz.ListVolume:output_type -> gnoi.containerz.ListVolumeResponse - 34, // [34:43] is the sub-list for method output_type - 25, // [25:34] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 10, // 0: gnoi.containerz.DeployRequest.image_transfer:type_name -> gnoi.containerz.ImageTransfer + 11, // 1: gnoi.containerz.DeployRequest.image_transfer_end:type_name -> gnoi.containerz.ImageTransferEnd + 55, // 2: gnoi.containerz.ImageTransfer.remote_download:type_name -> gnoi.common.RemoteDownload + 13, // 3: gnoi.containerz.DeployResponse.image_transfer_ready:type_name -> gnoi.containerz.ImageTransferReady + 14, // 4: gnoi.containerz.DeployResponse.image_transfer_progress:type_name -> gnoi.containerz.ImageTransferProgress + 15, // 5: gnoi.containerz.DeployResponse.image_transfer_success:type_name -> gnoi.containerz.ImageTransferSuccess + 56, // 6: gnoi.containerz.DeployResponse.image_transfer_error:type_name -> google.rpc.Status + 1, // 7: gnoi.containerz.RemoveImageResponse.code:type_name -> gnoi.containerz.RemoveImageResponse.Code + 2, // 8: gnoi.containerz.RemoveContainerResponse.code:type_name -> gnoi.containerz.RemoveContainerResponse.Code + 44, // 9: gnoi.containerz.ListImageRequest.filter:type_name -> gnoi.containerz.ListImageRequest.Filter + 45, // 10: gnoi.containerz.ListContainerRequest.filter:type_name -> gnoi.containerz.ListContainerRequest.Filter + 3, // 11: gnoi.containerz.ListContainerResponse.status:type_name -> gnoi.containerz.ListContainerResponse.Status + 46, // 12: gnoi.containerz.StartContainerRequest.ports:type_name -> gnoi.containerz.StartContainerRequest.Port + 47, // 13: gnoi.containerz.StartContainerRequest.environment:type_name -> gnoi.containerz.StartContainerRequest.EnvironmentEntry + 24, // 14: gnoi.containerz.StartContainerRequest.volumes:type_name -> gnoi.containerz.Volume + 48, // 15: gnoi.containerz.StartContainerRequest.cap:type_name -> gnoi.containerz.StartContainerRequest.Capabilities + 49, // 16: gnoi.containerz.StartContainerRequest.restart:type_name -> gnoi.containerz.StartContainerRequest.Restart + 50, // 17: gnoi.containerz.StartContainerRequest.run_as:type_name -> gnoi.containerz.StartContainerRequest.RunAs + 27, // 18: gnoi.containerz.StartContainerResponse.start_ok:type_name -> gnoi.containerz.StartOK + 28, // 19: gnoi.containerz.StartContainerResponse.start_error:type_name -> gnoi.containerz.StartError + 5, // 20: gnoi.containerz.StartError.error_code:type_name -> gnoi.containerz.StartError.Code + 6, // 21: gnoi.containerz.StopContainerResponse.code:type_name -> gnoi.containerz.StopContainerResponse.Code + 25, // 22: gnoi.containerz.UpdateContainerRequest.params:type_name -> gnoi.containerz.StartContainerRequest + 33, // 23: gnoi.containerz.UpdateContainerResponse.update_ok:type_name -> gnoi.containerz.UpdateOK + 34, // 24: gnoi.containerz.UpdateContainerResponse.update_error:type_name -> gnoi.containerz.UpdateError + 7, // 25: gnoi.containerz.UpdateError.error_code:type_name -> gnoi.containerz.UpdateError.Code + 8, // 26: gnoi.containerz.LocalDriverOptions.type:type_name -> gnoi.containerz.LocalDriverOptions.Type + 0, // 27: gnoi.containerz.CreateVolumeRequest.driver:type_name -> gnoi.containerz.Driver + 37, // 28: gnoi.containerz.CreateVolumeRequest.local_mount_options:type_name -> gnoi.containerz.LocalDriverOptions + 51, // 29: gnoi.containerz.CreateVolumeRequest.labels:type_name -> gnoi.containerz.CreateVolumeRequest.LabelsEntry + 52, // 30: gnoi.containerz.ListVolumeRequest.filter:type_name -> gnoi.containerz.ListVolumeRequest.Filter + 57, // 31: gnoi.containerz.ListVolumeResponse.created:type_name -> google.protobuf.Timestamp + 53, // 32: gnoi.containerz.ListVolumeResponse.options:type_name -> gnoi.containerz.ListVolumeResponse.OptionsEntry + 54, // 33: gnoi.containerz.ListVolumeResponse.labels:type_name -> gnoi.containerz.ListVolumeResponse.LabelsEntry + 4, // 34: gnoi.containerz.StartContainerRequest.Restart.policy:type_name -> gnoi.containerz.StartContainerRequest.Restart.Policy + 9, // 35: gnoi.containerz.Containerz.Deploy:input_type -> gnoi.containerz.DeployRequest + 20, // 36: gnoi.containerz.Containerz.ListImage:input_type -> gnoi.containerz.ListImageRequest + 16, // 37: gnoi.containerz.Containerz.RemoveImage:input_type -> gnoi.containerz.RemoveImageRequest + 18, // 38: gnoi.containerz.Containerz.RemoveContainer:input_type -> gnoi.containerz.RemoveContainerRequest + 22, // 39: gnoi.containerz.Containerz.ListContainer:input_type -> gnoi.containerz.ListContainerRequest + 25, // 40: gnoi.containerz.Containerz.StartContainer:input_type -> gnoi.containerz.StartContainerRequest + 29, // 41: gnoi.containerz.Containerz.StopContainer:input_type -> gnoi.containerz.StopContainerRequest + 31, // 42: gnoi.containerz.Containerz.UpdateContainer:input_type -> gnoi.containerz.UpdateContainerRequest + 35, // 43: gnoi.containerz.Containerz.Log:input_type -> gnoi.containerz.LogRequest + 38, // 44: gnoi.containerz.Containerz.CreateVolume:input_type -> gnoi.containerz.CreateVolumeRequest + 40, // 45: gnoi.containerz.Containerz.RemoveVolume:input_type -> gnoi.containerz.RemoveVolumeRequest + 42, // 46: gnoi.containerz.Containerz.ListVolume:input_type -> gnoi.containerz.ListVolumeRequest + 12, // 47: gnoi.containerz.Containerz.Deploy:output_type -> gnoi.containerz.DeployResponse + 21, // 48: gnoi.containerz.Containerz.ListImage:output_type -> gnoi.containerz.ListImageResponse + 17, // 49: gnoi.containerz.Containerz.RemoveImage:output_type -> gnoi.containerz.RemoveImageResponse + 19, // 50: gnoi.containerz.Containerz.RemoveContainer:output_type -> gnoi.containerz.RemoveContainerResponse + 23, // 51: gnoi.containerz.Containerz.ListContainer:output_type -> gnoi.containerz.ListContainerResponse + 26, // 52: gnoi.containerz.Containerz.StartContainer:output_type -> gnoi.containerz.StartContainerResponse + 30, // 53: gnoi.containerz.Containerz.StopContainer:output_type -> gnoi.containerz.StopContainerResponse + 32, // 54: gnoi.containerz.Containerz.UpdateContainer:output_type -> gnoi.containerz.UpdateContainerResponse + 36, // 55: gnoi.containerz.Containerz.Log:output_type -> gnoi.containerz.LogResponse + 39, // 56: gnoi.containerz.Containerz.CreateVolume:output_type -> gnoi.containerz.CreateVolumeResponse + 41, // 57: gnoi.containerz.Containerz.RemoveVolume:output_type -> gnoi.containerz.RemoveVolumeResponse + 43, // 58: gnoi.containerz.Containerz.ListVolume:output_type -> gnoi.containerz.ListVolumeResponse + 47, // [47:59] is the sub-list for method output_type + 35, // [35:47] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_containerz_containerz_proto_init() } @@ -2732,7 +3798,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveContainerRequest); i { + switch v := v.(*RemoveImageRequest); i { case 0: return &v.state case 1: @@ -2744,7 +3810,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveContainerResponse); i { + switch v := v.(*RemoveImageResponse); i { case 0: return &v.state case 1: @@ -2756,7 +3822,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListContainerRequest); i { + switch v := v.(*RemoveContainerRequest); i { case 0: return &v.state case 1: @@ -2768,7 +3834,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListContainerResponse); i { + switch v := v.(*RemoveContainerResponse); i { case 0: return &v.state case 1: @@ -2780,7 +3846,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Volume); i { + switch v := v.(*ListImageRequest); i { case 0: return &v.state case 1: @@ -2792,7 +3858,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartContainerRequest); i { + switch v := v.(*ListImageResponse); i { case 0: return &v.state case 1: @@ -2804,7 +3870,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartContainerResponse); i { + switch v := v.(*ListContainerRequest); i { case 0: return &v.state case 1: @@ -2816,7 +3882,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartOK); i { + switch v := v.(*ListContainerResponse); i { case 0: return &v.state case 1: @@ -2828,7 +3894,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartError); i { + switch v := v.(*Volume); i { case 0: return &v.state case 1: @@ -2840,7 +3906,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopContainerRequest); i { + switch v := v.(*StartContainerRequest); i { case 0: return &v.state case 1: @@ -2852,7 +3918,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopContainerResponse); i { + switch v := v.(*StartContainerResponse); i { case 0: return &v.state case 1: @@ -2864,7 +3930,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogRequest); i { + switch v := v.(*StartOK); i { case 0: return &v.state case 1: @@ -2876,7 +3942,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogResponse); i { + switch v := v.(*StartError); i { case 0: return &v.state case 1: @@ -2888,7 +3954,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalDriverOptions); i { + switch v := v.(*StopContainerRequest); i { case 0: return &v.state case 1: @@ -2900,7 +3966,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeRequest); i { + switch v := v.(*StopContainerResponse); i { case 0: return &v.state case 1: @@ -2912,7 +3978,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeResponse); i { + switch v := v.(*UpdateContainerRequest); i { case 0: return &v.state case 1: @@ -2924,7 +3990,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveVolumeRequest); i { + switch v := v.(*UpdateContainerResponse); i { case 0: return &v.state case 1: @@ -2936,7 +4002,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveVolumeResponse); i { + switch v := v.(*UpdateOK); i { case 0: return &v.state case 1: @@ -2948,7 +4014,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumeRequest); i { + switch v := v.(*UpdateError); i { case 0: return &v.state case 1: @@ -2960,7 +4026,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumeResponse); i { + switch v := v.(*LogRequest); i { case 0: return &v.state case 1: @@ -2972,7 +4038,7 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListContainerRequest_Filter); i { + switch v := v.(*LogResponse); i { case 0: return &v.state case 1: @@ -2984,7 +4050,31 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartContainerRequest_Port); i { + switch v := v.(*LocalDriverOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateVolumeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateVolumeResponse); i { case 0: return &v.state case 1: @@ -2996,6 +4086,126 @@ func file_containerz_containerz_proto_init() { } } file_containerz_containerz_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveVolumeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveVolumeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListVolumeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListVolumeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListImageRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListContainerRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerRequest_Port); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerRequest_Capabilities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerRequest_Restart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerRequest_RunAs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListVolumeRequest_Filter); i { case 0: return &v.state @@ -3019,11 +4229,15 @@ func file_containerz_containerz_proto_init() { (*DeployResponse_ImageTransferSuccess)(nil), (*DeployResponse_ImageTransferError)(nil), } - file_containerz_containerz_proto_msgTypes[13].OneofWrappers = []interface{}{ + file_containerz_containerz_proto_msgTypes[17].OneofWrappers = []interface{}{ (*StartContainerResponse_StartOk)(nil), (*StartContainerResponse_StartError)(nil), } - file_containerz_containerz_proto_msgTypes[21].OneofWrappers = []interface{}{ + file_containerz_containerz_proto_msgTypes[23].OneofWrappers = []interface{}{ + (*UpdateContainerResponse_UpdateOk)(nil), + (*UpdateContainerResponse_UpdateError)(nil), + } + file_containerz_containerz_proto_msgTypes[29].OneofWrappers = []interface{}{ (*CreateVolumeRequest_LocalMountOptions)(nil), } type x struct{} @@ -3031,8 +4245,8 @@ func file_containerz_containerz_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_containerz_containerz_proto_rawDesc, - NumEnums: 6, - NumMessages: 34, + NumEnums: 9, + NumMessages: 46, NumExtensions: 0, NumServices: 1, }, diff --git a/containerz/containerz.proto b/containerz/containerz.proto index 2d6955b..e02f8ce 100644 --- a/containerz/containerz.proto +++ b/containerz/containerz.proto @@ -37,18 +37,34 @@ option (types.gnoi_version) = "0.1.2"; service Containerz { // Deploy sets a container image on the target. The container is sent as - // a sequential stream of messages containing up to 64KB of data. Upon - // reception of a valid container, the target must load it into its registry. - // Whether the registry is local or remote is target and deployment specific. - // A valid container is one that has passed its checksum. + // a sequential stream of messages containing up to 4MB of data (max default + // grpc message size). Upon reception of a valid container, the target must + // load it into its registry. Whether the registry is local or remote is + // target and deployment specific. A valid container is one that has passed + // its checksum. rpc Deploy(stream DeployRequest) returns (stream DeployResponse) {} - // Remove deletes containers that match the spec defined in the request. If - // the specified container does not exist, this operation is a no-op. + // ListImage returns all images that the spec defined in the request. + rpc ListImage(ListImageRequest) returns (stream ListImageResponse) {} + + // RemoveImage deletes images that match the spec defined in the + // request. If the image is associated to a running container then an error + // is returned. If the specified container image does not exist, this + // operation is a no-op. + rpc RemoveImage(RemoveImageRequest) + returns (RemoveImageResponse) {} + + // RemoveContainer deletes images that match the spec defined in the + // request. If the image is associated to a running container then an error + // is returned. If the specified container image does not exist, this + // operation is a no-op. + // + // Deprecated - use RemoveImage instead. rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {} - // List returns all containers that match the spec defined in the request. + // ListContainer returns all containers that match the spec defined in the + // request. rpc ListContainer(ListContainerRequest) returns (stream ListContainerResponse) {} @@ -64,6 +80,24 @@ service Containerz { // (i.e. kill) a container. rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {} + // UpdateContainer updates a running container to the image specified in the + // request. By default the operation is synchronous which means that the + // request will only return once the container has either been successfully + // updated or the update has failed. If the client requests an asynchronous + // update then the server must perform all validations (e.g. does the + // requested image exist on the system or does the instance name exist) and + // return to the client and the update happens asynchronously. If the update + // fails, the server must restore the previous version of the container. It + // is up to the client to check if the update actually updates the container + // to the requested version or not. + // If no StartContainerRequest is provided, the server must reuse the same + // run specification as the existing running containers. Otherwise, it must + // use the provided StartContainerRequest message. + // If a container exists but is not running then this operation should return + // an error. + rpc UpdateContainer(UpdateContainerRequest) + returns (UpdateContainerResponse) {} + // Log streams the logs of a running container. If the container if no longer // running this operation streams the latest logs and returns. rpc Log(LogRequest) returns (stream LogResponse) {} @@ -78,6 +112,8 @@ service Containerz { // ListVolume returns all volumes that match the spec defined in the filter. rpc ListVolume(ListVolumeRequest) returns (stream ListVolumeResponse) {} + + } message DeployRequest { @@ -149,6 +185,37 @@ message ImageTransferSuccess { uint64 image_size = 3; } +message RemoveImageRequest { + // The container image name to be removed. + string name = 1; + + // The container tag to be removed. + string tag = 2; + + // If force is set, the target should attempt to forcibly remove the + // container. + bool force = 3; +} + +message RemoveImageResponse { + enum Code { + // An unspecified error. Must use the detail value to describe the issue. + UNSPECIFIED = 0; + + // Indicates the image was not found in the remote location. + NOT_FOUND = 1; + + // Indicates that a container using this image is running. + RUNNING = 2; + + // The container image was successfully removed. + SUCCESS = 3; + } + + Code code = 1; + string detail = 2; +} + message RemoveContainerRequest { // The container image name to be removed. string name = 1; @@ -180,6 +247,24 @@ message RemoveContainerResponse { string detail = 2; } +message ListImageRequest { + int32 limit = 1; + + // A filter is a mapping from a key to a list of values. + // TODO(alshabib) document possible keys + message Filter { + string key = 1; + repeated string value = 2; + } + + repeated Filter filter = 3; +} + +message ListImageResponse { + string id = 1; + string image_name = 2; +} + message ListContainerRequest { // List all containers, by default only running ones are returned. bool all = 1; @@ -257,6 +342,50 @@ message StartContainerRequest { // List of volumes that should be attached to the container. repeated Volume volumes = 7; + // The network to attach this container to. This could be 'host', 'bridged', + // or any other network available in the runtime. + string network = 8; + + message Capabilities { + repeated string add = 1; + repeated string remove = 2; + } + Capabilities cap = 9; + + message Restart { + enum Policy { + // Never restart a container. + NONE = 0; + + // Always restart a container unless explicitly stopped. This includes + // when the container runtime is restarted, i.e. any container with this + // policy prior to the runtime being stopped must be restarted when the + // runtime is started again. + ALWAYS = 1; + + // Same as ALWAYS but not across container runtime restarts. + UNLESS_STOPPED = 2; + + // Restart for max attempts if the container fails. + ON_FAILURE = 3; + } + + Policy policy = 1; + + // Only applies for the ON_FAILURE policy. + uint32 attempts = 2; + } + Restart restart = 10; + + message RunAs { + // The user to run as. + string user = 1; + + // Optional. The group to run as. + string group = 2; + } + RunAs run_as = 11; + // Other container properties will be added as it becomes necessary. } @@ -318,6 +447,62 @@ message StopContainerResponse { string details = 2; } +message UpdateContainerRequest { + + // The name of the running container to update. + string instance_name = 1; + + // The image and tag to update the container to. + string image_name = 2; + string image_tag = 3; + + // Optional. The set of parameters to run the container with. + StartContainerRequest params = 4; + + // Run this operation asynchronously or not. + bool async = 5; +} + +message UpdateContainerResponse { + oneof response { + UpdateOK update_ok = 1; + UpdateError update_error = 2; + } +} + +message UpdateOK { + // The running containers name. + string instance_name = 1; + + // Indicates if this is an async update. + bool is_async = 2; +} + +message UpdateError { + enum Code { + // An unspecified error. The details field should provide more information. + UNSPECIFIED = 0; + + // The container image was not found. + NOT_FOUND = 1; + + // Exposed port is already used by another container. + PORT_USED = 2; + + // The container was found but was not running. + NOT_RUNNING = 3; + + // The update failed and the previous version was restored. + NOT_UPDATED = 4; + + // The update operation or rollback failed. + FAILURE = 5; + } + + Code error_code = 1; + string details = 2; +} + message LogRequest { string instance_name = 1; diff --git a/containerz/containerz_grpc.pb.go b/containerz/containerz_grpc.pb.go index 045b577..b854e57 100755 --- a/containerz/containerz_grpc.pb.go +++ b/containerz/containerz_grpc.pb.go @@ -23,10 +23,13 @@ const _ = grpc.SupportPackageIsVersion7 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ContainerzClient interface { Deploy(ctx context.Context, opts ...grpc.CallOption) (Containerz_DeployClient, error) + ListImage(ctx context.Context, in *ListImageRequest, opts ...grpc.CallOption) (Containerz_ListImageClient, error) + RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error) RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error) ListContainer(ctx context.Context, in *ListContainerRequest, opts ...grpc.CallOption) (Containerz_ListContainerClient, error) StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) + UpdateContainer(ctx context.Context, in *UpdateContainerRequest, opts ...grpc.CallOption) (*UpdateContainerResponse, error) Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (Containerz_LogClient, error) CreateVolume(ctx context.Context, in *CreateVolumeRequest, opts ...grpc.CallOption) (*CreateVolumeResponse, error) RemoveVolume(ctx context.Context, in *RemoveVolumeRequest, opts ...grpc.CallOption) (*RemoveVolumeResponse, error) @@ -72,6 +75,47 @@ func (x *containerzDeployClient) Recv() (*DeployResponse, error) { return m, nil } +func (c *containerzClient) ListImage(ctx context.Context, in *ListImageRequest, opts ...grpc.CallOption) (Containerz_ListImageClient, error) { + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[1], "/gnoi.containerz.Containerz/ListImage", opts...) + if err != nil { + return nil, err + } + x := &containerzListImageClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Containerz_ListImageClient interface { + Recv() (*ListImageResponse, error) + grpc.ClientStream +} + +type containerzListImageClient struct { + grpc.ClientStream +} + +func (x *containerzListImageClient) Recv() (*ListImageResponse, error) { + m := new(ListImageResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *containerzClient) RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error) { + out := new(RemoveImageResponse) + err := c.cc.Invoke(ctx, "/gnoi.containerz.Containerz/RemoveImage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *containerzClient) RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error) { out := new(RemoveContainerResponse) err := c.cc.Invoke(ctx, "/gnoi.containerz.Containerz/RemoveContainer", in, out, opts...) @@ -82,7 +126,7 @@ func (c *containerzClient) RemoveContainer(ctx context.Context, in *RemoveContai } func (c *containerzClient) ListContainer(ctx context.Context, in *ListContainerRequest, opts ...grpc.CallOption) (Containerz_ListContainerClient, error) { - stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[1], "/gnoi.containerz.Containerz/ListContainer", opts...) + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[2], "/gnoi.containerz.Containerz/ListContainer", opts...) if err != nil { return nil, err } @@ -131,8 +175,17 @@ func (c *containerzClient) StopContainer(ctx context.Context, in *StopContainerR return out, nil } +func (c *containerzClient) UpdateContainer(ctx context.Context, in *UpdateContainerRequest, opts ...grpc.CallOption) (*UpdateContainerResponse, error) { + out := new(UpdateContainerResponse) + err := c.cc.Invoke(ctx, "/gnoi.containerz.Containerz/UpdateContainer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *containerzClient) Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (Containerz_LogClient, error) { - stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[2], "/gnoi.containerz.Containerz/Log", opts...) + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[3], "/gnoi.containerz.Containerz/Log", opts...) if err != nil { return nil, err } @@ -182,7 +235,7 @@ func (c *containerzClient) RemoveVolume(ctx context.Context, in *RemoveVolumeReq } func (c *containerzClient) ListVolume(ctx context.Context, in *ListVolumeRequest, opts ...grpc.CallOption) (Containerz_ListVolumeClient, error) { - stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[3], "/gnoi.containerz.Containerz/ListVolume", opts...) + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[4], "/gnoi.containerz.Containerz/ListVolume", opts...) if err != nil { return nil, err } @@ -218,10 +271,13 @@ func (x *containerzListVolumeClient) Recv() (*ListVolumeResponse, error) { // for forward compatibility type ContainerzServer interface { Deploy(Containerz_DeployServer) error + ListImage(*ListImageRequest, Containerz_ListImageServer) error + RemoveImage(context.Context, *RemoveImageRequest) (*RemoveImageResponse, error) RemoveContainer(context.Context, *RemoveContainerRequest) (*RemoveContainerResponse, error) ListContainer(*ListContainerRequest, Containerz_ListContainerServer) error StartContainer(context.Context, *StartContainerRequest) (*StartContainerResponse, error) StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) + UpdateContainer(context.Context, *UpdateContainerRequest) (*UpdateContainerResponse, error) Log(*LogRequest, Containerz_LogServer) error CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) RemoveVolume(context.Context, *RemoveVolumeRequest) (*RemoveVolumeResponse, error) @@ -236,6 +292,12 @@ type UnimplementedContainerzServer struct { func (UnimplementedContainerzServer) Deploy(Containerz_DeployServer) error { return status.Errorf(codes.Unimplemented, "method Deploy not implemented") } +func (UnimplementedContainerzServer) ListImage(*ListImageRequest, Containerz_ListImageServer) error { + return status.Errorf(codes.Unimplemented, "method ListImage not implemented") +} +func (UnimplementedContainerzServer) RemoveImage(context.Context, *RemoveImageRequest) (*RemoveImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveImage not implemented") +} func (UnimplementedContainerzServer) RemoveContainer(context.Context, *RemoveContainerRequest) (*RemoveContainerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveContainer not implemented") } @@ -248,6 +310,9 @@ func (UnimplementedContainerzServer) StartContainer(context.Context, *StartConta func (UnimplementedContainerzServer) StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method StopContainer not implemented") } +func (UnimplementedContainerzServer) UpdateContainer(context.Context, *UpdateContainerRequest) (*UpdateContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateContainer not implemented") +} func (UnimplementedContainerzServer) Log(*LogRequest, Containerz_LogServer) error { return status.Errorf(codes.Unimplemented, "method Log not implemented") } @@ -299,6 +364,45 @@ func (x *containerzDeployServer) Recv() (*DeployRequest, error) { return m, nil } +func _Containerz_ListImage_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ListImageRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ContainerzServer).ListImage(m, &containerzListImageServer{stream}) +} + +type Containerz_ListImageServer interface { + Send(*ListImageResponse) error + grpc.ServerStream +} + +type containerzListImageServer struct { + grpc.ServerStream +} + +func (x *containerzListImageServer) Send(m *ListImageResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _Containerz_RemoveImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerzServer).RemoveImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gnoi.containerz.Containerz/RemoveImage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerzServer).RemoveImage(ctx, req.(*RemoveImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Containerz_RemoveContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveContainerRequest) if err := dec(in); err != nil { @@ -374,6 +478,24 @@ func _Containerz_StopContainer_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Containerz_UpdateContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerzServer).UpdateContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gnoi.containerz.Containerz/UpdateContainer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerzServer).UpdateContainer(ctx, req.(*UpdateContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Containerz_Log_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(LogRequest) if err := stream.RecvMsg(m); err != nil { @@ -459,6 +581,10 @@ var Containerz_ServiceDesc = grpc.ServiceDesc{ ServiceName: "gnoi.containerz.Containerz", HandlerType: (*ContainerzServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "RemoveImage", + Handler: _Containerz_RemoveImage_Handler, + }, { MethodName: "RemoveContainer", Handler: _Containerz_RemoveContainer_Handler, @@ -471,6 +597,10 @@ var Containerz_ServiceDesc = grpc.ServiceDesc{ MethodName: "StopContainer", Handler: _Containerz_StopContainer_Handler, }, + { + MethodName: "UpdateContainer", + Handler: _Containerz_UpdateContainer_Handler, + }, { MethodName: "CreateVolume", Handler: _Containerz_CreateVolume_Handler, @@ -487,6 +617,11 @@ var Containerz_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, ClientStreams: true, }, + { + StreamName: "ListImage", + Handler: _Containerz_ListImage_Handler, + ServerStreams: true, + }, { StreamName: "ListContainer", Handler: _Containerz_ListContainer_Handler,