From 4f132b2fa93efe4d35316e00d7f4862aa47fcaaa Mon Sep 17 00:00:00 2001 From: Rafael Vasquez Date: Tue, 25 Apr 2023 12:29:56 -0400 Subject: [PATCH 1/3] Incorporates the merge btwn modelrepo and dataplane Signed-off-by: Rafael Vasquez --- .../proto/mlserver/dataplane/dataplane.pb.go | 1390 +++++++++++++---- .../proto/mlserver/dataplane/dataplane.proto | 159 +- .../mlserver/dataplane/dataplane_grpc.pb.go | 116 +- .../mlserver/modelrepo/model_repository.pb.go | 616 -------- .../mlserver/modelrepo/model_repository.proto | 79 - .../modelrepo/model_repository_grpc.pb.go | 184 --- .../generated/mocks/mock_dataplane.go | 371 +++-- .../generated/mocks/mock_modelrepo.go | 177 --- .../mlserver/mock_mlserver_server.go | 41 +- model-mesh-mlserver-adapter/server/server.go | 25 +- 10 files changed, 1647 insertions(+), 1511 deletions(-) delete mode 100644 internal/proto/mlserver/modelrepo/model_repository.pb.go delete mode 100644 internal/proto/mlserver/modelrepo/model_repository.proto delete mode 100644 internal/proto/mlserver/modelrepo/model_repository_grpc.pb.go delete mode 100644 model-mesh-mlserver-adapter/generated/mocks/mock_modelrepo.go diff --git a/internal/proto/mlserver/dataplane/dataplane.pb.go b/internal/proto/mlserver/dataplane/dataplane.pb.go index 7d9e2673..282d566d 100644 --- a/internal/proto/mlserver/dataplane/dataplane.pb.go +++ b/internal/proto/mlserver/dataplane/dataplane.pb.go @@ -1,9 +1,9 @@ -// Copied from https://github.com/SeldonIO/MLServer/blob/9a7c77f93dd61ac395e389280195d8adc413aad7/proto/dataplane.proto +// Copied from https://github.com/SeldonIO/MLServer/blob/1.2.4/proto/dataplane.proto // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 -// protoc v3.19.4 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: dataplane.proto package dataplane @@ -22,9 +22,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// // ServerLive messages. -// type ServerLiveRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -111,9 +109,7 @@ func (x *ServerLiveResponse) GetLive() bool { return false } -// // ServerReady messages. -// type ServerReadyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -200,9 +196,7 @@ func (x *ServerReadyResponse) GetReady() bool { return false } -// // ModelReady messages. -// type ModelReadyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -309,9 +303,7 @@ func (x *ModelReadyResponse) GetReady() bool { return false } -// // ServerMetadata messages. -// type ServerMetadataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -416,9 +408,7 @@ func (x *ServerMetadataResponse) GetExtensions() []string { return nil } -// // ModelMetadata messages. -// type ModelMetadataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -492,6 +482,9 @@ type ModelMetadataResponse struct { Inputs []*ModelMetadataResponse_TensorMetadata `protobuf:"bytes,4,rep,name=inputs,proto3" json:"inputs,omitempty"` // The model's outputs. Outputs []*ModelMetadataResponse_TensorMetadata `protobuf:"bytes,5,rep,name=outputs,proto3" json:"outputs,omitempty"` + // Optional default parameters for the request / response. + // NOTE: This is an extension to the standard + Parameters map[string]*InferParameter `protobuf:"bytes,6,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ModelMetadataResponse) Reset() { @@ -561,9 +554,14 @@ func (x *ModelMetadataResponse) GetOutputs() []*ModelMetadataResponse_TensorMeta return nil } -// +func (x *ModelMetadataResponse) GetParameters() map[string]*InferParameter { + if x != nil { + return x.Parameters + } + return nil +} + // ModelInfer messages. -// type ModelInferRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -584,6 +582,24 @@ type ModelInferRequest struct { // The requested output tensors for the inference. Optional, if not // specified all outputs produced by the model will be returned. Outputs []*ModelInferRequest_InferRequestedOutputTensor `protobuf:"bytes,6,rep,name=outputs,proto3" json:"outputs,omitempty"` + // The data contained in an input tensor can be represented in "raw" bytes + // form or in the repeated type that matches the tensor's data type. Using + // the "raw" bytes form will typically allow higher performance due to the + // way protobuf allocation and reuse interacts with GRPC. For example, see + // https://github.com/grpc/grpc/issues/23231. + // + // To use the raw representation 'raw_input_contents' must be initialized + // with data for each tensor in the same order as 'inputs'. For each tensor, + // the size of this content must match what is expected by the tensor's shape + // and data type. The raw data must be the flattened, one-dimensional, + // row-major order of the tensor elements without any stride or padding + // between the elements. Note that the FP16 and BF16 data types must be + // represented as raw content as there is no specific data type for a 16-bit + // float type. + // + // If this field is specified then InferInputTensor::contents must not be + // specified for any input tensor. + RawInputContents [][]byte `protobuf:"bytes,7,rep,name=raw_input_contents,json=rawInputContents,proto3" json:"raw_input_contents,omitempty"` } func (x *ModelInferRequest) Reset() { @@ -660,6 +676,13 @@ func (x *ModelInferRequest) GetOutputs() []*ModelInferRequest_InferRequestedOutp return nil } +func (x *ModelInferRequest) GetRawInputContents() [][]byte { + if x != nil { + return x.RawInputContents + } + return nil +} + type ModelInferResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -675,6 +698,24 @@ type ModelInferResponse struct { Parameters map[string]*InferParameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The output tensors holding inference results. Outputs []*ModelInferResponse_InferOutputTensor `protobuf:"bytes,5,rep,name=outputs,proto3" json:"outputs,omitempty"` + // The data contained in an output tensor can be represented in "raw" bytes + // form or in the repeated type that matches the tensor's data type. Using + // the "raw" bytes form will typically allow higher performance due to the + // way protobuf allocation and reuse interacts with GRPC. For example, see + // https://github.com/grpc/grpc/issues/23231. + // + // To use the raw representation 'raw_output_contents' must be initialized + // with data for each tensor in the same order as 'outputs'. For each tensor, + // the size of this content must match what is expected by the tensor's shape + // and data type. The raw data must be the flattened, one-dimensional, + // row-major order of the tensor elements without any stride or padding + // between the elements. Note that the FP16 and BF16 data types must be + // represented as raw content as there is no specific data type for a 16-bit + // float type. + // + // If this field is specified then InferOutputTensor::contents must not be + // specified for any output tensor. + RawOutputContents [][]byte `protobuf:"bytes,6,rep,name=raw_output_contents,json=rawOutputContents,proto3" json:"raw_output_contents,omitempty"` } func (x *ModelInferResponse) Reset() { @@ -744,9 +785,14 @@ func (x *ModelInferResponse) GetOutputs() []*ModelInferResponse_InferOutputTenso return nil } -// +func (x *ModelInferResponse) GetRawOutputContents() [][]byte { + if x != nil { + return x.RawOutputContents + } + return nil +} + // An inference parameter value. -// type InferParameter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -756,6 +802,7 @@ type InferParameter struct { // or a message specific to a predefined parameter. // // Types that are assignable to ParameterChoice: + // // *InferParameter_BoolParam // *InferParameter_Int64Param // *InferParameter_StringParam @@ -847,12 +894,10 @@ func (*InferParameter_Int64Param) isInferParameter_ParameterChoice() {} func (*InferParameter_StringParam) isInferParameter_ParameterChoice() {} -// // The data contained in a tensor. For a given data type the // tensor contents can be represented in "raw" bytes form or in // the repeated type that matches the tensor's data type. Protobuf // oneof is not used because oneofs cannot contain repeated fields. -// type InferTensorContents struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -897,20 +942,449 @@ type InferTensorContents struct { func (x *InferTensorContents) Reset() { *x = InferTensorContents{} if protoimpl.UnsafeEnabled { - mi := &file_dataplane_proto_msgTypes[13] + mi := &file_dataplane_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InferTensorContents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InferTensorContents) ProtoMessage() {} + +func (x *InferTensorContents) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_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 InferTensorContents.ProtoReflect.Descriptor instead. +func (*InferTensorContents) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{13} +} + +func (x *InferTensorContents) GetBoolContents() []bool { + if x != nil { + return x.BoolContents + } + return nil +} + +func (x *InferTensorContents) GetIntContents() []int32 { + if x != nil { + return x.IntContents + } + return nil +} + +func (x *InferTensorContents) GetInt64Contents() []int64 { + if x != nil { + return x.Int64Contents + } + return nil +} + +func (x *InferTensorContents) GetUintContents() []uint32 { + if x != nil { + return x.UintContents + } + return nil +} + +func (x *InferTensorContents) GetUint64Contents() []uint64 { + if x != nil { + return x.Uint64Contents + } + return nil +} + +func (x *InferTensorContents) GetFp32Contents() []float32 { + if x != nil { + return x.Fp32Contents + } + return nil +} + +func (x *InferTensorContents) GetFp64Contents() []float64 { + if x != nil { + return x.Fp64Contents + } + return nil +} + +func (x *InferTensorContents) GetBytesContents() [][]byte { + if x != nil { + return x.BytesContents + } + return nil +} + +// An model repository parameter value. +type ModelRepositoryParameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The parameter value can be a string, an int64 or a boolean + // + // Types that are assignable to ParameterChoice: + // + // *ModelRepositoryParameter_BoolParam + // *ModelRepositoryParameter_Int64Param + // *ModelRepositoryParameter_StringParam + // *ModelRepositoryParameter_BytesParam + ParameterChoice isModelRepositoryParameter_ParameterChoice `protobuf_oneof:"parameter_choice"` +} + +func (x *ModelRepositoryParameter) Reset() { + *x = ModelRepositoryParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ModelRepositoryParameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModelRepositoryParameter) ProtoMessage() {} + +func (x *ModelRepositoryParameter) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_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 ModelRepositoryParameter.ProtoReflect.Descriptor instead. +func (*ModelRepositoryParameter) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{14} +} + +func (m *ModelRepositoryParameter) GetParameterChoice() isModelRepositoryParameter_ParameterChoice { + if m != nil { + return m.ParameterChoice + } + return nil +} + +func (x *ModelRepositoryParameter) GetBoolParam() bool { + if x, ok := x.GetParameterChoice().(*ModelRepositoryParameter_BoolParam); ok { + return x.BoolParam + } + return false +} + +func (x *ModelRepositoryParameter) GetInt64Param() int64 { + if x, ok := x.GetParameterChoice().(*ModelRepositoryParameter_Int64Param); ok { + return x.Int64Param + } + return 0 +} + +func (x *ModelRepositoryParameter) GetStringParam() string { + if x, ok := x.GetParameterChoice().(*ModelRepositoryParameter_StringParam); ok { + return x.StringParam + } + return "" +} + +func (x *ModelRepositoryParameter) GetBytesParam() []byte { + if x, ok := x.GetParameterChoice().(*ModelRepositoryParameter_BytesParam); ok { + return x.BytesParam + } + return nil +} + +type isModelRepositoryParameter_ParameterChoice interface { + isModelRepositoryParameter_ParameterChoice() +} + +type ModelRepositoryParameter_BoolParam struct { + // A boolean parameter value. + BoolParam bool `protobuf:"varint,1,opt,name=bool_param,json=boolParam,proto3,oneof"` +} + +type ModelRepositoryParameter_Int64Param struct { + // An int64 parameter value. + Int64Param int64 `protobuf:"varint,2,opt,name=int64_param,json=int64Param,proto3,oneof"` +} + +type ModelRepositoryParameter_StringParam struct { + // A string parameter value. + StringParam string `protobuf:"bytes,3,opt,name=string_param,json=stringParam,proto3,oneof"` +} + +type ModelRepositoryParameter_BytesParam struct { + // A bytes parameter value. + BytesParam []byte `protobuf:"bytes,4,opt,name=bytes_param,json=bytesParam,proto3,oneof"` +} + +func (*ModelRepositoryParameter_BoolParam) isModelRepositoryParameter_ParameterChoice() {} + +func (*ModelRepositoryParameter_Int64Param) isModelRepositoryParameter_ParameterChoice() {} + +func (*ModelRepositoryParameter_StringParam) isModelRepositoryParameter_ParameterChoice() {} + +func (*ModelRepositoryParameter_BytesParam) isModelRepositoryParameter_ParameterChoice() {} + +type RepositoryIndexRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the repository. If empty the index is returned + // for all repositories. + RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` + // If true return only models currently ready for inferencing. + Ready bool `protobuf:"varint,2,opt,name=ready,proto3" json:"ready,omitempty"` +} + +func (x *RepositoryIndexRequest) Reset() { + *x = RepositoryIndexRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RepositoryIndexRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RepositoryIndexRequest) ProtoMessage() {} + +func (x *RepositoryIndexRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_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 RepositoryIndexRequest.ProtoReflect.Descriptor instead. +func (*RepositoryIndexRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{15} +} + +func (x *RepositoryIndexRequest) GetRepositoryName() string { + if x != nil { + return x.RepositoryName + } + return "" +} + +func (x *RepositoryIndexRequest) GetReady() bool { + if x != nil { + return x.Ready + } + return false +} + +type RepositoryIndexResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An index entry for each model. + Models []*RepositoryIndexResponse_ModelIndex `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"` +} + +func (x *RepositoryIndexResponse) Reset() { + *x = RepositoryIndexResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RepositoryIndexResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RepositoryIndexResponse) ProtoMessage() {} + +func (x *RepositoryIndexResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_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 RepositoryIndexResponse.ProtoReflect.Descriptor instead. +func (*RepositoryIndexResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{16} +} + +func (x *RepositoryIndexResponse) GetModels() []*RepositoryIndexResponse_ModelIndex { + if x != nil { + return x.Models + } + return nil +} + +type RepositoryModelLoadRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the repository to load from. If empty the model + // is loaded from any repository. + RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` + // The name of the model to load, or reload. + ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` + // Optional model repository request parameters. + Parameters map[string]*ModelRepositoryParameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *RepositoryModelLoadRequest) Reset() { + *x = RepositoryModelLoadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RepositoryModelLoadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RepositoryModelLoadRequest) ProtoMessage() {} + +func (x *RepositoryModelLoadRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_msgTypes[17] + 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 RepositoryModelLoadRequest.ProtoReflect.Descriptor instead. +func (*RepositoryModelLoadRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{17} +} + +func (x *RepositoryModelLoadRequest) GetRepositoryName() string { + if x != nil { + return x.RepositoryName + } + return "" +} + +func (x *RepositoryModelLoadRequest) GetModelName() string { + if x != nil { + return x.ModelName + } + return "" +} + +func (x *RepositoryModelLoadRequest) GetParameters() map[string]*ModelRepositoryParameter { + if x != nil { + return x.Parameters + } + return nil +} + +type RepositoryModelLoadResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RepositoryModelLoadResponse) Reset() { + *x = RepositoryModelLoadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RepositoryModelLoadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RepositoryModelLoadResponse) ProtoMessage() {} + +func (x *RepositoryModelLoadResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_msgTypes[18] + 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 RepositoryModelLoadResponse.ProtoReflect.Descriptor instead. +func (*RepositoryModelLoadResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{18} +} + +type RepositoryModelUnloadRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the repository from which the model was originally + // loaded. If empty the repository is not considered. + RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` + // The name of the model to unload. + ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` + // Optional model repository request parameters. + Parameters map[string]*ModelRepositoryParameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *RepositoryModelUnloadRequest) Reset() { + *x = RepositoryModelUnloadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *InferTensorContents) String() string { +func (x *RepositoryModelUnloadRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InferTensorContents) ProtoMessage() {} +func (*RepositoryModelUnloadRequest) ProtoMessage() {} -func (x *InferTensorContents) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_msgTypes[13] +func (x *RepositoryModelUnloadRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -921,65 +1395,68 @@ func (x *InferTensorContents) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InferTensorContents.ProtoReflect.Descriptor instead. -func (*InferTensorContents) Descriptor() ([]byte, []int) { - return file_dataplane_proto_rawDescGZIP(), []int{13} +// Deprecated: Use RepositoryModelUnloadRequest.ProtoReflect.Descriptor instead. +func (*RepositoryModelUnloadRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{19} } -func (x *InferTensorContents) GetBoolContents() []bool { +func (x *RepositoryModelUnloadRequest) GetRepositoryName() string { if x != nil { - return x.BoolContents + return x.RepositoryName } - return nil + return "" } -func (x *InferTensorContents) GetIntContents() []int32 { +func (x *RepositoryModelUnloadRequest) GetModelName() string { if x != nil { - return x.IntContents + return x.ModelName } - return nil + return "" } -func (x *InferTensorContents) GetInt64Contents() []int64 { +func (x *RepositoryModelUnloadRequest) GetParameters() map[string]*ModelRepositoryParameter { if x != nil { - return x.Int64Contents + return x.Parameters } return nil } -func (x *InferTensorContents) GetUintContents() []uint32 { - if x != nil { - return x.UintContents - } - return nil +type RepositoryModelUnloadResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *InferTensorContents) GetUint64Contents() []uint64 { - if x != nil { - return x.Uint64Contents +func (x *RepositoryModelUnloadResponse) Reset() { + *x = RepositoryModelUnloadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *InferTensorContents) GetFp32Contents() []float32 { - if x != nil { - return x.Fp32Contents - } - return nil +func (x *RepositoryModelUnloadResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *InferTensorContents) GetFp64Contents() []float64 { - if x != nil { - return x.Fp64Contents +func (*RepositoryModelUnloadResponse) ProtoMessage() {} + +func (x *RepositoryModelUnloadResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *InferTensorContents) GetBytesContents() [][]byte { - if x != nil { - return x.BytesContents - } - return nil +// Deprecated: Use RepositoryModelUnloadResponse.ProtoReflect.Descriptor instead. +func (*RepositoryModelUnloadResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{20} } // Metadata for a tensor. @@ -995,12 +1472,15 @@ type ModelMetadataResponse_TensorMetadata struct { // The tensor shape. A variable-size dimension is represented // by a -1 value. Shape []int64 `protobuf:"varint,3,rep,packed,name=shape,proto3" json:"shape,omitempty"` + // Optional default parameters for input. + // NOTE: This is an extension to the standard + Parameters map[string]*InferParameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ModelMetadataResponse_TensorMetadata) Reset() { *x = ModelMetadataResponse_TensorMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_dataplane_proto_msgTypes[14] + mi := &file_dataplane_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1013,7 +1493,7 @@ func (x *ModelMetadataResponse_TensorMetadata) String() string { func (*ModelMetadataResponse_TensorMetadata) ProtoMessage() {} func (x *ModelMetadataResponse_TensorMetadata) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_msgTypes[14] + mi := &file_dataplane_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1050,6 +1530,13 @@ func (x *ModelMetadataResponse_TensorMetadata) GetShape() []int64 { return nil } +func (x *ModelMetadataResponse_TensorMetadata) GetParameters() map[string]*InferParameter { + if x != nil { + return x.Parameters + } + return nil +} + // An input tensor for an inference request. type ModelInferRequest_InferInputTensor struct { state protoimpl.MessageState @@ -1065,13 +1552,15 @@ type ModelInferRequest_InferInputTensor struct { // Optional inference input tensor parameters. Parameters map[string]*InferParameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The input tensor data. + // This field must not be specified if tensor contents are being specified + // in ModelInferRequest.raw_input_contents. Contents *InferTensorContents `protobuf:"bytes,5,opt,name=contents,proto3" json:"contents,omitempty"` } func (x *ModelInferRequest_InferInputTensor) Reset() { *x = ModelInferRequest_InferInputTensor{} if protoimpl.UnsafeEnabled { - mi := &file_dataplane_proto_msgTypes[15] + mi := &file_dataplane_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1084,7 +1573,7 @@ func (x *ModelInferRequest_InferInputTensor) String() string { func (*ModelInferRequest_InferInputTensor) ProtoMessage() {} func (x *ModelInferRequest_InferInputTensor) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_msgTypes[15] + mi := &file_dataplane_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1150,7 +1639,7 @@ type ModelInferRequest_InferRequestedOutputTensor struct { func (x *ModelInferRequest_InferRequestedOutputTensor) Reset() { *x = ModelInferRequest_InferRequestedOutputTensor{} if protoimpl.UnsafeEnabled { - mi := &file_dataplane_proto_msgTypes[16] + mi := &file_dataplane_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1163,7 +1652,7 @@ func (x *ModelInferRequest_InferRequestedOutputTensor) String() string { func (*ModelInferRequest_InferRequestedOutputTensor) ProtoMessage() {} func (x *ModelInferRequest_InferRequestedOutputTensor) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_msgTypes[16] + mi := &file_dataplane_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1208,13 +1697,15 @@ type ModelInferResponse_InferOutputTensor struct { // Optional output tensor parameters. Parameters map[string]*InferParameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The output tensor data. + // This field must not be specified if tensor contents are being specified + // in ModelInferResponse.raw_output_contents. Contents *InferTensorContents `protobuf:"bytes,5,opt,name=contents,proto3" json:"contents,omitempty"` } func (x *ModelInferResponse_InferOutputTensor) Reset() { *x = ModelInferResponse_InferOutputTensor{} if protoimpl.UnsafeEnabled { - mi := &file_dataplane_proto_msgTypes[20] + mi := &file_dataplane_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1718,7 @@ func (x *ModelInferResponse_InferOutputTensor) String() string { func (*ModelInferResponse_InferOutputTensor) ProtoMessage() {} func (x *ModelInferResponse_InferOutputTensor) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_msgTypes[20] + mi := &file_dataplane_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1278,6 +1769,82 @@ func (x *ModelInferResponse_InferOutputTensor) GetContents() *InferTensorContent return nil } +// Index entry for a model. +type RepositoryIndexResponse_ModelIndex struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the model. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The version of the model. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // The state of the model. + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + // The reason, if any, that the model is in the given state. + Reason string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *RepositoryIndexResponse_ModelIndex) Reset() { + *x = RepositoryIndexResponse_ModelIndex{} + if protoimpl.UnsafeEnabled { + mi := &file_dataplane_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RepositoryIndexResponse_ModelIndex) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RepositoryIndexResponse_ModelIndex) ProtoMessage() {} + +func (x *RepositoryIndexResponse_ModelIndex) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_msgTypes[32] + 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 RepositoryIndexResponse_ModelIndex.ProtoReflect.Descriptor instead. +func (*RepositoryIndexResponse_ModelIndex) Descriptor() ([]byte, []int) { + return file_dataplane_proto_rawDescGZIP(), []int{16, 0} +} + +func (x *RepositoryIndexResponse_ModelIndex) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RepositoryIndexResponse_ModelIndex) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *RepositoryIndexResponse_ModelIndex) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *RepositoryIndexResponse_ModelIndex) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + var File_dataplane_proto protoreflect.FileDescriptor var file_dataplane_proto_rawDesc = []byte{ @@ -1310,7 +1877,7 @@ var file_dataplane_proto_rawDesc = []byte{ 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, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcf, 0x02, 0x0a, 0x15, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x05, 0x0a, 0x15, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, @@ -1325,181 +1892,299 @@ var file_dataplane_proto_rawDesc = []byte{ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x56, - 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x22, 0xef, 0x07, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x4c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, - 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, - 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0xcd, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x66, - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x58, - 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, - 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xf3, 0x01, 0x0a, 0x1a, 0x49, 0x6e, 0x66, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x0a, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x47, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, - 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x50, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x1a, 0x91, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, + 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, - 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, - 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x05, 0x0a, 0x12, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0xd0, 0x02, - 0x0a, 0x11, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9d, + 0x08, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, + 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, + 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x51, 0x0a, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x72, 0x61, + 0x77, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xcd, + 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, - 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, - 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, + 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, + 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xf3, + 0x01, 0x0a, 0x1a, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x67, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, - 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, + 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, + 0x05, 0x0a, 0x12, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, + 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x61, 0x77, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x11, 0x72, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x1a, 0xd0, 0x02, 0x0a, 0x11, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x12, + 0x5f, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, + 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0f, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, + 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x58, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x49, - 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, - 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x21, - 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x12, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc3, 0x02, 0x0a, 0x13, 0x49, - 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x69, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, - 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x66, 0x70, 0x33, 0x32, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0c, 0x66, 0x70, 0x33, 0x32, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x70, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0c, 0x66, 0x70, 0x36, - 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, - 0x32, 0xfc, 0x03, 0x0a, 0x14, 0x47, 0x52, 0x50, 0x43, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x61, 0x64, 0x79, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x2e, - 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, - 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, - 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x12, 0x0a, 0x10, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0xc3, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, + 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x69, 0x6e, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c, + 0x75, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x70, 0x33, 0x32, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0c, 0x66, 0x70, + 0x33, 0x32, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x70, + 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x01, 0x52, 0x0c, 0x66, 0x70, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0b, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, + 0x12, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, + 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0xca, 0x01, 0x0a, + 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x1a, + 0x68, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x9f, 0x02, 0x0a, 0x1a, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x55, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x62, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 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, 0x39, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1d, 0x0a, 0x1b, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x02, 0x0a, 0x1c, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x62, 0x0a, 0x0f, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x32, 0xae, 0x06, 0x0a, 0x14, 0x47, 0x52, 0x50, 0x43, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, + 0x0d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, + 0x72, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x21, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, + 0x6f, 0x61, 0x64, 0x12, 0x25, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x69, 0x6e, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x27, 0x2e, + 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1514,67 +2199,94 @@ func file_dataplane_proto_rawDescGZIP() []byte { return file_dataplane_proto_rawDescData } -var file_dataplane_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_dataplane_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_dataplane_proto_goTypes = []interface{}{ - (*ServerLiveRequest)(nil), // 0: inference.ServerLiveRequest - (*ServerLiveResponse)(nil), // 1: inference.ServerLiveResponse - (*ServerReadyRequest)(nil), // 2: inference.ServerReadyRequest - (*ServerReadyResponse)(nil), // 3: inference.ServerReadyResponse - (*ModelReadyRequest)(nil), // 4: inference.ModelReadyRequest - (*ModelReadyResponse)(nil), // 5: inference.ModelReadyResponse - (*ServerMetadataRequest)(nil), // 6: inference.ServerMetadataRequest - (*ServerMetadataResponse)(nil), // 7: inference.ServerMetadataResponse - (*ModelMetadataRequest)(nil), // 8: inference.ModelMetadataRequest - (*ModelMetadataResponse)(nil), // 9: inference.ModelMetadataResponse - (*ModelInferRequest)(nil), // 10: inference.ModelInferRequest - (*ModelInferResponse)(nil), // 11: inference.ModelInferResponse - (*InferParameter)(nil), // 12: inference.InferParameter - (*InferTensorContents)(nil), // 13: inference.InferTensorContents - (*ModelMetadataResponse_TensorMetadata)(nil), // 14: inference.ModelMetadataResponse.TensorMetadata - (*ModelInferRequest_InferInputTensor)(nil), // 15: inference.ModelInferRequest.InferInputTensor - (*ModelInferRequest_InferRequestedOutputTensor)(nil), // 16: inference.ModelInferRequest.InferRequestedOutputTensor - nil, // 17: inference.ModelInferRequest.ParametersEntry - nil, // 18: inference.ModelInferRequest.InferInputTensor.ParametersEntry - nil, // 19: inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry - (*ModelInferResponse_InferOutputTensor)(nil), // 20: inference.ModelInferResponse.InferOutputTensor - nil, // 21: inference.ModelInferResponse.ParametersEntry - nil, // 22: inference.ModelInferResponse.InferOutputTensor.ParametersEntry + (*ServerLiveRequest)(nil), // 0: inference.ServerLiveRequest + (*ServerLiveResponse)(nil), // 1: inference.ServerLiveResponse + (*ServerReadyRequest)(nil), // 2: inference.ServerReadyRequest + (*ServerReadyResponse)(nil), // 3: inference.ServerReadyResponse + (*ModelReadyRequest)(nil), // 4: inference.ModelReadyRequest + (*ModelReadyResponse)(nil), // 5: inference.ModelReadyResponse + (*ServerMetadataRequest)(nil), // 6: inference.ServerMetadataRequest + (*ServerMetadataResponse)(nil), // 7: inference.ServerMetadataResponse + (*ModelMetadataRequest)(nil), // 8: inference.ModelMetadataRequest + (*ModelMetadataResponse)(nil), // 9: inference.ModelMetadataResponse + (*ModelInferRequest)(nil), // 10: inference.ModelInferRequest + (*ModelInferResponse)(nil), // 11: inference.ModelInferResponse + (*InferParameter)(nil), // 12: inference.InferParameter + (*InferTensorContents)(nil), // 13: inference.InferTensorContents + (*ModelRepositoryParameter)(nil), // 14: inference.ModelRepositoryParameter + (*RepositoryIndexRequest)(nil), // 15: inference.RepositoryIndexRequest + (*RepositoryIndexResponse)(nil), // 16: inference.RepositoryIndexResponse + (*RepositoryModelLoadRequest)(nil), // 17: inference.RepositoryModelLoadRequest + (*RepositoryModelLoadResponse)(nil), // 18: inference.RepositoryModelLoadResponse + (*RepositoryModelUnloadRequest)(nil), // 19: inference.RepositoryModelUnloadRequest + (*RepositoryModelUnloadResponse)(nil), // 20: inference.RepositoryModelUnloadResponse + (*ModelMetadataResponse_TensorMetadata)(nil), // 21: inference.ModelMetadataResponse.TensorMetadata + nil, // 22: inference.ModelMetadataResponse.ParametersEntry + nil, // 23: inference.ModelMetadataResponse.TensorMetadata.ParametersEntry + (*ModelInferRequest_InferInputTensor)(nil), // 24: inference.ModelInferRequest.InferInputTensor + (*ModelInferRequest_InferRequestedOutputTensor)(nil), // 25: inference.ModelInferRequest.InferRequestedOutputTensor + nil, // 26: inference.ModelInferRequest.ParametersEntry + nil, // 27: inference.ModelInferRequest.InferInputTensor.ParametersEntry + nil, // 28: inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry + (*ModelInferResponse_InferOutputTensor)(nil), // 29: inference.ModelInferResponse.InferOutputTensor + nil, // 30: inference.ModelInferResponse.ParametersEntry + nil, // 31: inference.ModelInferResponse.InferOutputTensor.ParametersEntry + (*RepositoryIndexResponse_ModelIndex)(nil), // 32: inference.RepositoryIndexResponse.ModelIndex + nil, // 33: inference.RepositoryModelLoadRequest.ParametersEntry + nil, // 34: inference.RepositoryModelUnloadRequest.ParametersEntry } var file_dataplane_proto_depIdxs = []int32{ - 14, // 0: inference.ModelMetadataResponse.inputs:type_name -> inference.ModelMetadataResponse.TensorMetadata - 14, // 1: inference.ModelMetadataResponse.outputs:type_name -> inference.ModelMetadataResponse.TensorMetadata - 17, // 2: inference.ModelInferRequest.parameters:type_name -> inference.ModelInferRequest.ParametersEntry - 15, // 3: inference.ModelInferRequest.inputs:type_name -> inference.ModelInferRequest.InferInputTensor - 16, // 4: inference.ModelInferRequest.outputs:type_name -> inference.ModelInferRequest.InferRequestedOutputTensor - 21, // 5: inference.ModelInferResponse.parameters:type_name -> inference.ModelInferResponse.ParametersEntry - 20, // 6: inference.ModelInferResponse.outputs:type_name -> inference.ModelInferResponse.InferOutputTensor - 18, // 7: inference.ModelInferRequest.InferInputTensor.parameters:type_name -> inference.ModelInferRequest.InferInputTensor.ParametersEntry - 13, // 8: inference.ModelInferRequest.InferInputTensor.contents:type_name -> inference.InferTensorContents - 19, // 9: inference.ModelInferRequest.InferRequestedOutputTensor.parameters:type_name -> inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry - 12, // 10: inference.ModelInferRequest.ParametersEntry.value:type_name -> inference.InferParameter - 12, // 11: inference.ModelInferRequest.InferInputTensor.ParametersEntry.value:type_name -> inference.InferParameter - 12, // 12: inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry.value:type_name -> inference.InferParameter - 22, // 13: inference.ModelInferResponse.InferOutputTensor.parameters:type_name -> inference.ModelInferResponse.InferOutputTensor.ParametersEntry - 13, // 14: inference.ModelInferResponse.InferOutputTensor.contents:type_name -> inference.InferTensorContents - 12, // 15: inference.ModelInferResponse.ParametersEntry.value:type_name -> inference.InferParameter - 12, // 16: inference.ModelInferResponse.InferOutputTensor.ParametersEntry.value:type_name -> inference.InferParameter - 0, // 17: inference.GRPCInferenceService.ServerLive:input_type -> inference.ServerLiveRequest - 2, // 18: inference.GRPCInferenceService.ServerReady:input_type -> inference.ServerReadyRequest - 4, // 19: inference.GRPCInferenceService.ModelReady:input_type -> inference.ModelReadyRequest - 6, // 20: inference.GRPCInferenceService.ServerMetadata:input_type -> inference.ServerMetadataRequest - 8, // 21: inference.GRPCInferenceService.ModelMetadata:input_type -> inference.ModelMetadataRequest - 10, // 22: inference.GRPCInferenceService.ModelInfer:input_type -> inference.ModelInferRequest - 1, // 23: inference.GRPCInferenceService.ServerLive:output_type -> inference.ServerLiveResponse - 3, // 24: inference.GRPCInferenceService.ServerReady:output_type -> inference.ServerReadyResponse - 5, // 25: inference.GRPCInferenceService.ModelReady:output_type -> inference.ModelReadyResponse - 7, // 26: inference.GRPCInferenceService.ServerMetadata:output_type -> inference.ServerMetadataResponse - 9, // 27: inference.GRPCInferenceService.ModelMetadata:output_type -> inference.ModelMetadataResponse - 11, // 28: inference.GRPCInferenceService.ModelInfer:output_type -> inference.ModelInferResponse - 23, // [23:29] is the sub-list for method output_type - 17, // [17:23] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 21, // 0: inference.ModelMetadataResponse.inputs:type_name -> inference.ModelMetadataResponse.TensorMetadata + 21, // 1: inference.ModelMetadataResponse.outputs:type_name -> inference.ModelMetadataResponse.TensorMetadata + 22, // 2: inference.ModelMetadataResponse.parameters:type_name -> inference.ModelMetadataResponse.ParametersEntry + 26, // 3: inference.ModelInferRequest.parameters:type_name -> inference.ModelInferRequest.ParametersEntry + 24, // 4: inference.ModelInferRequest.inputs:type_name -> inference.ModelInferRequest.InferInputTensor + 25, // 5: inference.ModelInferRequest.outputs:type_name -> inference.ModelInferRequest.InferRequestedOutputTensor + 30, // 6: inference.ModelInferResponse.parameters:type_name -> inference.ModelInferResponse.ParametersEntry + 29, // 7: inference.ModelInferResponse.outputs:type_name -> inference.ModelInferResponse.InferOutputTensor + 32, // 8: inference.RepositoryIndexResponse.models:type_name -> inference.RepositoryIndexResponse.ModelIndex + 33, // 9: inference.RepositoryModelLoadRequest.parameters:type_name -> inference.RepositoryModelLoadRequest.ParametersEntry + 34, // 10: inference.RepositoryModelUnloadRequest.parameters:type_name -> inference.RepositoryModelUnloadRequest.ParametersEntry + 23, // 11: inference.ModelMetadataResponse.TensorMetadata.parameters:type_name -> inference.ModelMetadataResponse.TensorMetadata.ParametersEntry + 12, // 12: inference.ModelMetadataResponse.ParametersEntry.value:type_name -> inference.InferParameter + 12, // 13: inference.ModelMetadataResponse.TensorMetadata.ParametersEntry.value:type_name -> inference.InferParameter + 27, // 14: inference.ModelInferRequest.InferInputTensor.parameters:type_name -> inference.ModelInferRequest.InferInputTensor.ParametersEntry + 13, // 15: inference.ModelInferRequest.InferInputTensor.contents:type_name -> inference.InferTensorContents + 28, // 16: inference.ModelInferRequest.InferRequestedOutputTensor.parameters:type_name -> inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry + 12, // 17: inference.ModelInferRequest.ParametersEntry.value:type_name -> inference.InferParameter + 12, // 18: inference.ModelInferRequest.InferInputTensor.ParametersEntry.value:type_name -> inference.InferParameter + 12, // 19: inference.ModelInferRequest.InferRequestedOutputTensor.ParametersEntry.value:type_name -> inference.InferParameter + 31, // 20: inference.ModelInferResponse.InferOutputTensor.parameters:type_name -> inference.ModelInferResponse.InferOutputTensor.ParametersEntry + 13, // 21: inference.ModelInferResponse.InferOutputTensor.contents:type_name -> inference.InferTensorContents + 12, // 22: inference.ModelInferResponse.ParametersEntry.value:type_name -> inference.InferParameter + 12, // 23: inference.ModelInferResponse.InferOutputTensor.ParametersEntry.value:type_name -> inference.InferParameter + 14, // 24: inference.RepositoryModelLoadRequest.ParametersEntry.value:type_name -> inference.ModelRepositoryParameter + 14, // 25: inference.RepositoryModelUnloadRequest.ParametersEntry.value:type_name -> inference.ModelRepositoryParameter + 0, // 26: inference.GRPCInferenceService.ServerLive:input_type -> inference.ServerLiveRequest + 2, // 27: inference.GRPCInferenceService.ServerReady:input_type -> inference.ServerReadyRequest + 4, // 28: inference.GRPCInferenceService.ModelReady:input_type -> inference.ModelReadyRequest + 6, // 29: inference.GRPCInferenceService.ServerMetadata:input_type -> inference.ServerMetadataRequest + 8, // 30: inference.GRPCInferenceService.ModelMetadata:input_type -> inference.ModelMetadataRequest + 10, // 31: inference.GRPCInferenceService.ModelInfer:input_type -> inference.ModelInferRequest + 15, // 32: inference.GRPCInferenceService.RepositoryIndex:input_type -> inference.RepositoryIndexRequest + 17, // 33: inference.GRPCInferenceService.RepositoryModelLoad:input_type -> inference.RepositoryModelLoadRequest + 19, // 34: inference.GRPCInferenceService.RepositoryModelUnload:input_type -> inference.RepositoryModelUnloadRequest + 1, // 35: inference.GRPCInferenceService.ServerLive:output_type -> inference.ServerLiveResponse + 3, // 36: inference.GRPCInferenceService.ServerReady:output_type -> inference.ServerReadyResponse + 5, // 37: inference.GRPCInferenceService.ModelReady:output_type -> inference.ModelReadyResponse + 7, // 38: inference.GRPCInferenceService.ServerMetadata:output_type -> inference.ServerMetadataResponse + 9, // 39: inference.GRPCInferenceService.ModelMetadata:output_type -> inference.ModelMetadataResponse + 11, // 40: inference.GRPCInferenceService.ModelInfer:output_type -> inference.ModelInferResponse + 16, // 41: inference.GRPCInferenceService.RepositoryIndex:output_type -> inference.RepositoryIndexResponse + 18, // 42: inference.GRPCInferenceService.RepositoryModelLoad:output_type -> inference.RepositoryModelLoadResponse + 20, // 43: inference.GRPCInferenceService.RepositoryModelUnload:output_type -> inference.RepositoryModelUnloadResponse + 35, // [35:44] is the sub-list for method output_type + 26, // [26:35] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_dataplane_proto_init() } @@ -1752,7 +2464,7 @@ func file_dataplane_proto_init() { } } file_dataplane_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModelMetadataResponse_TensorMetadata); i { + switch v := v.(*ModelRepositoryParameter); i { case 0: return &v.state case 1: @@ -1764,7 +2476,7 @@ func file_dataplane_proto_init() { } } file_dataplane_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModelInferRequest_InferInputTensor); i { + switch v := v.(*RepositoryIndexRequest); i { case 0: return &v.state case 1: @@ -1776,7 +2488,43 @@ func file_dataplane_proto_init() { } } file_dataplane_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModelInferRequest_InferRequestedOutputTensor); i { + switch v := v.(*RepositoryIndexResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RepositoryModelLoadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RepositoryModelLoadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RepositoryModelUnloadRequest); i { case 0: return &v.state case 1: @@ -1788,6 +2536,54 @@ func file_dataplane_proto_init() { } } file_dataplane_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RepositoryModelUnloadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModelMetadataResponse_TensorMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModelInferRequest_InferInputTensor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModelInferRequest_InferRequestedOutputTensor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dataplane_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModelInferResponse_InferOutputTensor); i { case 0: return &v.state @@ -1799,19 +2595,37 @@ func file_dataplane_proto_init() { return nil } } + file_dataplane_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RepositoryIndexResponse_ModelIndex); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_dataplane_proto_msgTypes[12].OneofWrappers = []interface{}{ (*InferParameter_BoolParam)(nil), (*InferParameter_Int64Param)(nil), (*InferParameter_StringParam)(nil), } + file_dataplane_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*ModelRepositoryParameter_BoolParam)(nil), + (*ModelRepositoryParameter_Int64Param)(nil), + (*ModelRepositoryParameter_StringParam)(nil), + (*ModelRepositoryParameter_BytesParam)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dataplane_proto_rawDesc, NumEnums: 0, - NumMessages: 23, + NumMessages: 35, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/proto/mlserver/dataplane/dataplane.proto b/internal/proto/mlserver/dataplane/dataplane.proto index 5135a9c1..d1a95213 100644 --- a/internal/proto/mlserver/dataplane/dataplane.proto +++ b/internal/proto/mlserver/dataplane/dataplane.proto @@ -1,4 +1,4 @@ -// Copied from https://github.com/SeldonIO/MLServer/blob/9a7c77f93dd61ac395e389280195d8adc413aad7/proto/dataplane.proto +// Copied from https://github.com/SeldonIO/MLServer/blob/1.2.4/proto/dataplane.proto syntax = "proto3"; package inference; @@ -25,6 +25,18 @@ service GRPCInferenceService // Perform inference using a specific model. rpc ModelInfer(ModelInferRequest) returns (ModelInferResponse) {} + + // Get the index of model repository contents. + rpc RepositoryIndex(RepositoryIndexRequest) + returns (RepositoryIndexResponse) {} + + // Load or reload a model from a repository. + rpc RepositoryModelLoad(RepositoryModelLoadRequest) + returns (RepositoryModelLoadResponse) {} + + // Unload a model. + rpc RepositoryModelUnload(RepositoryModelUnloadRequest) + returns (RepositoryModelUnloadResponse) {} } @@ -113,6 +125,10 @@ message ModelMetadataResponse // The tensor shape. A variable-size dimension is represented // by a -1 value. repeated int64 shape = 3; + + // Optional default parameters for input. + // NOTE: This is an extension to the standard + map parameters = 4; } // The model name. @@ -129,6 +145,10 @@ message ModelMetadataResponse // The model's outputs. repeated TensorMetadata outputs = 5; + + // Optional default parameters for the request / response. + // NOTE: This is an extension to the standard + map parameters = 6; } // @@ -152,6 +172,8 @@ message ModelInferRequest map parameters = 4; // The input tensor data. + // This field must not be specified if tensor contents are being specified + // in ModelInferRequest.raw_input_contents. InferTensorContents contents = 5; } @@ -185,6 +207,25 @@ message ModelInferRequest // The requested output tensors for the inference. Optional, if not // specified all outputs produced by the model will be returned. repeated InferRequestedOutputTensor outputs = 6; + + // The data contained in an input tensor can be represented in "raw" bytes + // form or in the repeated type that matches the tensor's data type. Using + // the "raw" bytes form will typically allow higher performance due to the + // way protobuf allocation and reuse interacts with GRPC. For example, see + // https://github.com/grpc/grpc/issues/23231. + // + // To use the raw representation 'raw_input_contents' must be initialized + // with data for each tensor in the same order as 'inputs'. For each tensor, + // the size of this content must match what is expected by the tensor's shape + // and data type. The raw data must be the flattened, one-dimensional, + // row-major order of the tensor elements without any stride or padding + // between the elements. Note that the FP16 and BF16 data types must be + // represented as raw content as there is no specific data type for a 16-bit + // float type. + // + // If this field is specified then InferInputTensor::contents must not be + // specified for any input tensor. + repeated bytes raw_input_contents = 7; } message ModelInferResponse @@ -205,6 +246,8 @@ message ModelInferResponse map parameters = 4; // The output tensor data. + // This field must not be specified if tensor contents are being specified + // in ModelInferResponse.raw_output_contents. InferTensorContents contents = 5; } @@ -222,6 +265,25 @@ message ModelInferResponse // The output tensors holding inference results. repeated InferOutputTensor outputs = 5; + + // The data contained in an output tensor can be represented in "raw" bytes + // form or in the repeated type that matches the tensor's data type. Using + // the "raw" bytes form will typically allow higher performance due to the + // way protobuf allocation and reuse interacts with GRPC. For example, see + // https://github.com/grpc/grpc/issues/23231. + // + // To use the raw representation 'raw_output_contents' must be initialized + // with data for each tensor in the same order as 'outputs'. For each tensor, + // the size of this content must match what is expected by the tensor's shape + // and data type. The raw data must be the flattened, one-dimensional, + // row-major order of the tensor elements without any stride or padding + // between the elements. Note that the FP16 and BF16 data types must be + // represented as raw content as there is no specific data type for a 16-bit + // float type. + // + // If this field is specified then InferOutputTensor::contents must not be + // specified for any output tensor. + repeated bytes raw_output_contents = 6; } @@ -296,3 +358,98 @@ message InferTensorContents // one-dimensional, row-major order of the tensor elements. repeated bytes bytes_contents = 8; } + +// +// Messages for the Repository API +// +// NOTE: These messages used to exist previously on a different protobuf +// definition. However, they have now been merged with the main +// GRPCInferenceService. +// + + +// An model repository parameter value. +message ModelRepositoryParameter +{ + // The parameter value can be a string, an int64 or a boolean + oneof parameter_choice + { + // A boolean parameter value. + bool bool_param = 1; + + // An int64 parameter value. + int64 int64_param = 2; + + // A string parameter value. + string string_param = 3; + + // A bytes parameter value. + bytes bytes_param = 4; + } +} + + +message RepositoryIndexRequest +{ + // The name of the repository. If empty the index is returned + // for all repositories. + string repository_name = 1; + + // If true return only models currently ready for inferencing. + bool ready = 2; +} + +message RepositoryIndexResponse +{ + // Index entry for a model. + message ModelIndex { + // The name of the model. + string name = 1; + + // The version of the model. + string version = 2; + + // The state of the model. + string state = 3; + + // The reason, if any, that the model is in the given state. + string reason = 4; + } + + // An index entry for each model. + repeated ModelIndex models = 1; +} + +message RepositoryModelLoadRequest +{ + // The name of the repository to load from. If empty the model + // is loaded from any repository. + string repository_name = 1; + + // The name of the model to load, or reload. + string model_name = 2; + + // Optional model repository request parameters. + map parameters = 3; +} + +message RepositoryModelLoadResponse +{ +} + +message RepositoryModelUnloadRequest +{ + // The name of the repository from which the model was originally + // loaded. If empty the repository is not considered. + string repository_name = 1; + + // The name of the model to unload. + string model_name = 2; + + // Optional model repository request parameters. + map parameters = 3; +} + +message RepositoryModelUnloadResponse +{ +} \ No newline at end of file diff --git a/internal/proto/mlserver/dataplane/dataplane_grpc.pb.go b/internal/proto/mlserver/dataplane/dataplane_grpc.pb.go index 0787854d..97859d51 100644 --- a/internal/proto/mlserver/dataplane/dataplane_grpc.pb.go +++ b/internal/proto/mlserver/dataplane/dataplane_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: dataplane.proto package dataplane @@ -34,6 +34,12 @@ type GRPCInferenceServiceClient interface { ModelMetadata(ctx context.Context, in *ModelMetadataRequest, opts ...grpc.CallOption) (*ModelMetadataResponse, error) // Perform inference using a specific model. ModelInfer(ctx context.Context, in *ModelInferRequest, opts ...grpc.CallOption) (*ModelInferResponse, error) + // Get the index of model repository contents. + RepositoryIndex(ctx context.Context, in *RepositoryIndexRequest, opts ...grpc.CallOption) (*RepositoryIndexResponse, error) + // Load or reload a model from a repository. + RepositoryModelLoad(ctx context.Context, in *RepositoryModelLoadRequest, opts ...grpc.CallOption) (*RepositoryModelLoadResponse, error) + // Unload a model. + RepositoryModelUnload(ctx context.Context, in *RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*RepositoryModelUnloadResponse, error) } type gRPCInferenceServiceClient struct { @@ -98,6 +104,33 @@ func (c *gRPCInferenceServiceClient) ModelInfer(ctx context.Context, in *ModelIn return out, nil } +func (c *gRPCInferenceServiceClient) RepositoryIndex(ctx context.Context, in *RepositoryIndexRequest, opts ...grpc.CallOption) (*RepositoryIndexResponse, error) { + out := new(RepositoryIndexResponse) + err := c.cc.Invoke(ctx, "/inference.GRPCInferenceService/RepositoryIndex", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gRPCInferenceServiceClient) RepositoryModelLoad(ctx context.Context, in *RepositoryModelLoadRequest, opts ...grpc.CallOption) (*RepositoryModelLoadResponse, error) { + out := new(RepositoryModelLoadResponse) + err := c.cc.Invoke(ctx, "/inference.GRPCInferenceService/RepositoryModelLoad", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gRPCInferenceServiceClient) RepositoryModelUnload(ctx context.Context, in *RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*RepositoryModelUnloadResponse, error) { + out := new(RepositoryModelUnloadResponse) + err := c.cc.Invoke(ctx, "/inference.GRPCInferenceService/RepositoryModelUnload", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // GRPCInferenceServiceServer is the server API for GRPCInferenceService service. // All implementations must embed UnimplementedGRPCInferenceServiceServer // for forward compatibility @@ -114,6 +147,12 @@ type GRPCInferenceServiceServer interface { ModelMetadata(context.Context, *ModelMetadataRequest) (*ModelMetadataResponse, error) // Perform inference using a specific model. ModelInfer(context.Context, *ModelInferRequest) (*ModelInferResponse, error) + // Get the index of model repository contents. + RepositoryIndex(context.Context, *RepositoryIndexRequest) (*RepositoryIndexResponse, error) + // Load or reload a model from a repository. + RepositoryModelLoad(context.Context, *RepositoryModelLoadRequest) (*RepositoryModelLoadResponse, error) + // Unload a model. + RepositoryModelUnload(context.Context, *RepositoryModelUnloadRequest) (*RepositoryModelUnloadResponse, error) mustEmbedUnimplementedGRPCInferenceServiceServer() } @@ -139,6 +178,15 @@ func (UnimplementedGRPCInferenceServiceServer) ModelMetadata(context.Context, *M func (UnimplementedGRPCInferenceServiceServer) ModelInfer(context.Context, *ModelInferRequest) (*ModelInferResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ModelInfer not implemented") } +func (UnimplementedGRPCInferenceServiceServer) RepositoryIndex(context.Context, *RepositoryIndexRequest) (*RepositoryIndexResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RepositoryIndex not implemented") +} +func (UnimplementedGRPCInferenceServiceServer) RepositoryModelLoad(context.Context, *RepositoryModelLoadRequest) (*RepositoryModelLoadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RepositoryModelLoad not implemented") +} +func (UnimplementedGRPCInferenceServiceServer) RepositoryModelUnload(context.Context, *RepositoryModelUnloadRequest) (*RepositoryModelUnloadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RepositoryModelUnload not implemented") +} func (UnimplementedGRPCInferenceServiceServer) mustEmbedUnimplementedGRPCInferenceServiceServer() {} // UnsafeGRPCInferenceServiceServer may be embedded to opt out of forward compatibility for this service. @@ -260,6 +308,60 @@ func _GRPCInferenceService_ModelInfer_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _GRPCInferenceService_RepositoryIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RepositoryIndexRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GRPCInferenceServiceServer).RepositoryIndex(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inference.GRPCInferenceService/RepositoryIndex", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GRPCInferenceServiceServer).RepositoryIndex(ctx, req.(*RepositoryIndexRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GRPCInferenceService_RepositoryModelLoad_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RepositoryModelLoadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GRPCInferenceServiceServer).RepositoryModelLoad(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inference.GRPCInferenceService/RepositoryModelLoad", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GRPCInferenceServiceServer).RepositoryModelLoad(ctx, req.(*RepositoryModelLoadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GRPCInferenceService_RepositoryModelUnload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RepositoryModelUnloadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GRPCInferenceServiceServer).RepositoryModelUnload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inference.GRPCInferenceService/RepositoryModelUnload", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GRPCInferenceServiceServer).RepositoryModelUnload(ctx, req.(*RepositoryModelUnloadRequest)) + } + return interceptor(ctx, in, info, handler) +} + // GRPCInferenceService_ServiceDesc is the grpc.ServiceDesc for GRPCInferenceService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -291,6 +393,18 @@ var GRPCInferenceService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ModelInfer", Handler: _GRPCInferenceService_ModelInfer_Handler, }, + { + MethodName: "RepositoryIndex", + Handler: _GRPCInferenceService_RepositoryIndex_Handler, + }, + { + MethodName: "RepositoryModelLoad", + Handler: _GRPCInferenceService_RepositoryModelLoad_Handler, + }, + { + MethodName: "RepositoryModelUnload", + Handler: _GRPCInferenceService_RepositoryModelUnload_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "dataplane.proto", diff --git a/internal/proto/mlserver/modelrepo/model_repository.pb.go b/internal/proto/mlserver/modelrepo/model_repository.pb.go deleted file mode 100644 index 015b56b0..00000000 --- a/internal/proto/mlserver/modelrepo/model_repository.pb.go +++ /dev/null @@ -1,616 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.0 -// protoc v3.19.4 -// source: model_repository.proto - -package modelrepo - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type RepositoryIndexRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the repository. If empty the index is returned - // for all repositories. - RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` - // If true return only models currently ready for inferencing. - Ready bool `protobuf:"varint,2,opt,name=ready,proto3" json:"ready,omitempty"` -} - -func (x *RepositoryIndexRequest) Reset() { - *x = RepositoryIndexRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryIndexRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryIndexRequest) ProtoMessage() {} - -func (x *RepositoryIndexRequest) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[0] - 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 RepositoryIndexRequest.ProtoReflect.Descriptor instead. -func (*RepositoryIndexRequest) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{0} -} - -func (x *RepositoryIndexRequest) GetRepositoryName() string { - if x != nil { - return x.RepositoryName - } - return "" -} - -func (x *RepositoryIndexRequest) GetReady() bool { - if x != nil { - return x.Ready - } - return false -} - -type RepositoryIndexResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // An index entry for each model. - Models []*RepositoryIndexResponse_ModelIndex `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"` -} - -func (x *RepositoryIndexResponse) Reset() { - *x = RepositoryIndexResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryIndexResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryIndexResponse) ProtoMessage() {} - -func (x *RepositoryIndexResponse) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[1] - 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 RepositoryIndexResponse.ProtoReflect.Descriptor instead. -func (*RepositoryIndexResponse) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{1} -} - -func (x *RepositoryIndexResponse) GetModels() []*RepositoryIndexResponse_ModelIndex { - if x != nil { - return x.Models - } - return nil -} - -type RepositoryModelLoadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the repository to load from. If empty the model - // is loaded from any repository. - RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` - // The name of the model to load, or reload. - ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` -} - -func (x *RepositoryModelLoadRequest) Reset() { - *x = RepositoryModelLoadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryModelLoadRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryModelLoadRequest) ProtoMessage() {} - -func (x *RepositoryModelLoadRequest) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[2] - 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 RepositoryModelLoadRequest.ProtoReflect.Descriptor instead. -func (*RepositoryModelLoadRequest) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{2} -} - -func (x *RepositoryModelLoadRequest) GetRepositoryName() string { - if x != nil { - return x.RepositoryName - } - return "" -} - -func (x *RepositoryModelLoadRequest) GetModelName() string { - if x != nil { - return x.ModelName - } - return "" -} - -type RepositoryModelLoadResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RepositoryModelLoadResponse) Reset() { - *x = RepositoryModelLoadResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryModelLoadResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryModelLoadResponse) ProtoMessage() {} - -func (x *RepositoryModelLoadResponse) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[3] - 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 RepositoryModelLoadResponse.ProtoReflect.Descriptor instead. -func (*RepositoryModelLoadResponse) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{3} -} - -type RepositoryModelUnloadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the repository from which the model was originally - // loaded. If empty the repository is not considered. - RepositoryName string `protobuf:"bytes,1,opt,name=repository_name,json=repositoryName,proto3" json:"repository_name,omitempty"` - // The name of the model to unload. - ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` -} - -func (x *RepositoryModelUnloadRequest) Reset() { - *x = RepositoryModelUnloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryModelUnloadRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryModelUnloadRequest) ProtoMessage() {} - -func (x *RepositoryModelUnloadRequest) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[4] - 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 RepositoryModelUnloadRequest.ProtoReflect.Descriptor instead. -func (*RepositoryModelUnloadRequest) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{4} -} - -func (x *RepositoryModelUnloadRequest) GetRepositoryName() string { - if x != nil { - return x.RepositoryName - } - return "" -} - -func (x *RepositoryModelUnloadRequest) GetModelName() string { - if x != nil { - return x.ModelName - } - return "" -} - -type RepositoryModelUnloadResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RepositoryModelUnloadResponse) Reset() { - *x = RepositoryModelUnloadResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryModelUnloadResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryModelUnloadResponse) ProtoMessage() {} - -func (x *RepositoryModelUnloadResponse) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[5] - 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 RepositoryModelUnloadResponse.ProtoReflect.Descriptor instead. -func (*RepositoryModelUnloadResponse) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{5} -} - -// Index entry for a model. -type RepositoryIndexResponse_ModelIndex struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the model. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The version of the model. - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - // The state of the model. - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - // The reason, if any, that the model is in the given state. - Reason string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"` -} - -func (x *RepositoryIndexResponse_ModelIndex) Reset() { - *x = RepositoryIndexResponse_ModelIndex{} - if protoimpl.UnsafeEnabled { - mi := &file_model_repository_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepositoryIndexResponse_ModelIndex) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepositoryIndexResponse_ModelIndex) ProtoMessage() {} - -func (x *RepositoryIndexResponse_ModelIndex) ProtoReflect() protoreflect.Message { - mi := &file_model_repository_proto_msgTypes[6] - 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 RepositoryIndexResponse_ModelIndex.ProtoReflect.Descriptor instead. -func (*RepositoryIndexResponse_ModelIndex) Descriptor() ([]byte, []int) { - return file_model_repository_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *RepositoryIndexResponse_ModelIndex) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RepositoryIndexResponse_ModelIndex) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *RepositoryIndexResponse_ModelIndex) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *RepositoryIndexResponse_ModelIndex) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -var File_model_repository_proto protoreflect.FileDescriptor - -var file_model_repository_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x22, 0x57, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0xdb, 0x01, - 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x6e, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x1a, 0x68, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x1a, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x66, 0x0a, 0x1c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb2, 0x03, 0x0a, 0x16, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, - 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x55, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_model_repository_proto_rawDescOnce sync.Once - file_model_repository_proto_rawDescData = file_model_repository_proto_rawDesc -) - -func file_model_repository_proto_rawDescGZIP() []byte { - file_model_repository_proto_rawDescOnce.Do(func() { - file_model_repository_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_repository_proto_rawDescData) - }) - return file_model_repository_proto_rawDescData -} - -var file_model_repository_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_model_repository_proto_goTypes = []interface{}{ - (*RepositoryIndexRequest)(nil), // 0: inference.model_repository.RepositoryIndexRequest - (*RepositoryIndexResponse)(nil), // 1: inference.model_repository.RepositoryIndexResponse - (*RepositoryModelLoadRequest)(nil), // 2: inference.model_repository.RepositoryModelLoadRequest - (*RepositoryModelLoadResponse)(nil), // 3: inference.model_repository.RepositoryModelLoadResponse - (*RepositoryModelUnloadRequest)(nil), // 4: inference.model_repository.RepositoryModelUnloadRequest - (*RepositoryModelUnloadResponse)(nil), // 5: inference.model_repository.RepositoryModelUnloadResponse - (*RepositoryIndexResponse_ModelIndex)(nil), // 6: inference.model_repository.RepositoryIndexResponse.ModelIndex -} -var file_model_repository_proto_depIdxs = []int32{ - 6, // 0: inference.model_repository.RepositoryIndexResponse.models:type_name -> inference.model_repository.RepositoryIndexResponse.ModelIndex - 0, // 1: inference.model_repository.ModelRepositoryService.RepositoryIndex:input_type -> inference.model_repository.RepositoryIndexRequest - 2, // 2: inference.model_repository.ModelRepositoryService.RepositoryModelLoad:input_type -> inference.model_repository.RepositoryModelLoadRequest - 4, // 3: inference.model_repository.ModelRepositoryService.RepositoryModelUnload:input_type -> inference.model_repository.RepositoryModelUnloadRequest - 1, // 4: inference.model_repository.ModelRepositoryService.RepositoryIndex:output_type -> inference.model_repository.RepositoryIndexResponse - 3, // 5: inference.model_repository.ModelRepositoryService.RepositoryModelLoad:output_type -> inference.model_repository.RepositoryModelLoadResponse - 5, // 6: inference.model_repository.ModelRepositoryService.RepositoryModelUnload:output_type -> inference.model_repository.RepositoryModelUnloadResponse - 4, // [4:7] is the sub-list for method output_type - 1, // [1:4] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_model_repository_proto_init() } -func file_model_repository_proto_init() { - if File_model_repository_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_model_repository_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryIndexRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryIndexResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryModelLoadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryModelLoadResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryModelUnloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryModelUnloadResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_model_repository_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepositoryIndexResponse_ModelIndex); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_model_repository_proto_rawDesc, - NumEnums: 0, - NumMessages: 7, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_model_repository_proto_goTypes, - DependencyIndexes: file_model_repository_proto_depIdxs, - MessageInfos: file_model_repository_proto_msgTypes, - }.Build() - File_model_repository_proto = out.File - file_model_repository_proto_rawDesc = nil - file_model_repository_proto_goTypes = nil - file_model_repository_proto_depIdxs = nil -} diff --git a/internal/proto/mlserver/modelrepo/model_repository.proto b/internal/proto/mlserver/modelrepo/model_repository.proto deleted file mode 100644 index fabec4ee..00000000 --- a/internal/proto/mlserver/modelrepo/model_repository.proto +++ /dev/null @@ -1,79 +0,0 @@ -syntax = "proto3"; - -package inference.model_repository; - -// Copied from https://github.com/SeldonIO/MLServer/blob/9358dd2de7e309471c2382364289d56f000be6fe/proto/model_repository.proto - -service ModelRepositoryService -{ - // Get the index of model repository contents. - rpc RepositoryIndex(RepositoryIndexRequest) - returns (RepositoryIndexResponse) {} - - // Load or reload a model from a repository. - rpc RepositoryModelLoad(RepositoryModelLoadRequest) - returns (RepositoryModelLoadResponse) {} - - // Unload a model. - rpc RepositoryModelUnload(RepositoryModelUnloadRequest) - returns (RepositoryModelUnloadResponse) {} -} - -message RepositoryIndexRequest -{ - // The name of the repository. If empty the index is returned - // for all repositories. - string repository_name = 1; - - // If true return only models currently ready for inferencing. - bool ready = 2; -} - -message RepositoryIndexResponse -{ - // Index entry for a model. - message ModelIndex { - // The name of the model. - string name = 1; - - // The version of the model. - string version = 2; - - // The state of the model. - string state = 3; - - // The reason, if any, that the model is in the given state. - string reason = 4; - } - - // An index entry for each model. - repeated ModelIndex models = 1; -} - -message RepositoryModelLoadRequest -{ - // The name of the repository to load from. If empty the model - // is loaded from any repository. - string repository_name = 1; - - // The name of the model to load, or reload. - string model_name = 2; -} - -message RepositoryModelLoadResponse -{ -} - -message RepositoryModelUnloadRequest -{ - // The name of the repository from which the model was originally - // loaded. If empty the repository is not considered. - string repository_name = 1; - - // The name of the model to unload. - string model_name = 2; -} - -message RepositoryModelUnloadResponse -{ -} diff --git a/internal/proto/mlserver/modelrepo/model_repository_grpc.pb.go b/internal/proto/mlserver/modelrepo/model_repository_grpc.pb.go deleted file mode 100644 index aa8a7747..00000000 --- a/internal/proto/mlserver/modelrepo/model_repository_grpc.pb.go +++ /dev/null @@ -1,184 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 -// source: model_repository.proto - -package modelrepo - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -// ModelRepositoryServiceClient is the client API for ModelRepositoryService service. -// -// 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 ModelRepositoryServiceClient interface { - // Get the index of model repository contents. - RepositoryIndex(ctx context.Context, in *RepositoryIndexRequest, opts ...grpc.CallOption) (*RepositoryIndexResponse, error) - // Load or reload a model from a repository. - RepositoryModelLoad(ctx context.Context, in *RepositoryModelLoadRequest, opts ...grpc.CallOption) (*RepositoryModelLoadResponse, error) - // Unload a model. - RepositoryModelUnload(ctx context.Context, in *RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*RepositoryModelUnloadResponse, error) -} - -type modelRepositoryServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewModelRepositoryServiceClient(cc grpc.ClientConnInterface) ModelRepositoryServiceClient { - return &modelRepositoryServiceClient{cc} -} - -func (c *modelRepositoryServiceClient) RepositoryIndex(ctx context.Context, in *RepositoryIndexRequest, opts ...grpc.CallOption) (*RepositoryIndexResponse, error) { - out := new(RepositoryIndexResponse) - err := c.cc.Invoke(ctx, "/inference.model_repository.ModelRepositoryService/RepositoryIndex", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelRepositoryServiceClient) RepositoryModelLoad(ctx context.Context, in *RepositoryModelLoadRequest, opts ...grpc.CallOption) (*RepositoryModelLoadResponse, error) { - out := new(RepositoryModelLoadResponse) - err := c.cc.Invoke(ctx, "/inference.model_repository.ModelRepositoryService/RepositoryModelLoad", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelRepositoryServiceClient) RepositoryModelUnload(ctx context.Context, in *RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*RepositoryModelUnloadResponse, error) { - out := new(RepositoryModelUnloadResponse) - err := c.cc.Invoke(ctx, "/inference.model_repository.ModelRepositoryService/RepositoryModelUnload", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ModelRepositoryServiceServer is the server API for ModelRepositoryService service. -// All implementations must embed UnimplementedModelRepositoryServiceServer -// for forward compatibility -type ModelRepositoryServiceServer interface { - // Get the index of model repository contents. - RepositoryIndex(context.Context, *RepositoryIndexRequest) (*RepositoryIndexResponse, error) - // Load or reload a model from a repository. - RepositoryModelLoad(context.Context, *RepositoryModelLoadRequest) (*RepositoryModelLoadResponse, error) - // Unload a model. - RepositoryModelUnload(context.Context, *RepositoryModelUnloadRequest) (*RepositoryModelUnloadResponse, error) - mustEmbedUnimplementedModelRepositoryServiceServer() -} - -// UnimplementedModelRepositoryServiceServer must be embedded to have forward compatible implementations. -type UnimplementedModelRepositoryServiceServer struct { -} - -func (UnimplementedModelRepositoryServiceServer) RepositoryIndex(context.Context, *RepositoryIndexRequest) (*RepositoryIndexResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RepositoryIndex not implemented") -} -func (UnimplementedModelRepositoryServiceServer) RepositoryModelLoad(context.Context, *RepositoryModelLoadRequest) (*RepositoryModelLoadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RepositoryModelLoad not implemented") -} -func (UnimplementedModelRepositoryServiceServer) RepositoryModelUnload(context.Context, *RepositoryModelUnloadRequest) (*RepositoryModelUnloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RepositoryModelUnload not implemented") -} -func (UnimplementedModelRepositoryServiceServer) mustEmbedUnimplementedModelRepositoryServiceServer() { -} - -// UnsafeModelRepositoryServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ModelRepositoryServiceServer will -// result in compilation errors. -type UnsafeModelRepositoryServiceServer interface { - mustEmbedUnimplementedModelRepositoryServiceServer() -} - -func RegisterModelRepositoryServiceServer(s grpc.ServiceRegistrar, srv ModelRepositoryServiceServer) { - s.RegisterService(&ModelRepositoryService_ServiceDesc, srv) -} - -func _ModelRepositoryService_RepositoryIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RepositoryIndexRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelRepositoryServiceServer).RepositoryIndex(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/inference.model_repository.ModelRepositoryService/RepositoryIndex", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelRepositoryServiceServer).RepositoryIndex(ctx, req.(*RepositoryIndexRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelRepositoryService_RepositoryModelLoad_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RepositoryModelLoadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelRepositoryServiceServer).RepositoryModelLoad(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/inference.model_repository.ModelRepositoryService/RepositoryModelLoad", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelRepositoryServiceServer).RepositoryModelLoad(ctx, req.(*RepositoryModelLoadRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelRepositoryService_RepositoryModelUnload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RepositoryModelUnloadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelRepositoryServiceServer).RepositoryModelUnload(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/inference.model_repository.ModelRepositoryService/RepositoryModelUnload", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelRepositoryServiceServer).RepositoryModelUnload(ctx, req.(*RepositoryModelUnloadRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ModelRepositoryService_ServiceDesc is the grpc.ServiceDesc for ModelRepositoryService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ModelRepositoryService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "inference.model_repository.ModelRepositoryService", - HandlerType: (*ModelRepositoryServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "RepositoryIndex", - Handler: _ModelRepositoryService_RepositoryIndex_Handler, - }, - { - MethodName: "RepositoryModelLoad", - Handler: _ModelRepositoryService_RepositoryModelLoad_Handler, - }, - { - MethodName: "RepositoryModelUnload", - Handler: _ModelRepositoryService_RepositoryModelUnload_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "model_repository.proto", -} diff --git a/model-mesh-mlserver-adapter/generated/mocks/mock_dataplane.go b/model-mesh-mlserver-adapter/generated/mocks/mock_dataplane.go index 469fdac7..a3d95d07 100644 --- a/model-mesh-mlserver-adapter/generated/mocks/mock_dataplane.go +++ b/model-mesh-mlserver-adapter/generated/mocks/mock_dataplane.go @@ -1,317 +1,422 @@ -// Copyright 2021 IBM Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. // Code generated by MockGen. DO NOT EDIT. -// Source: model-mesh-mlserver-adapter/generated/mlserver/dataplane.pb.go +// Source: ./internal/proto/mlserver/dataplane/dataplane_grpc.pb.go // Package mock_mlserver is a generated GoMock package. package mock_mlserver import ( context "context" + reflect "reflect" + gomock "github.com/golang/mock/gomock" - inference "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/dataplane" + dataplane "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/dataplane" grpc "google.golang.org/grpc" - reflect "reflect" ) -// MockisInferParameter_ParameterChoice is a mock of isInferParameter_ParameterChoice interface -type MockisInferParameter_ParameterChoice struct { +// MockGRPCInferenceServiceClient is a mock of GRPCInferenceServiceClient interface. +type MockGRPCInferenceServiceClient struct { ctrl *gomock.Controller - recorder *MockisInferParameter_ParameterChoiceMockRecorder + recorder *MockGRPCInferenceServiceClientMockRecorder } -// MockisInferParameter_ParameterChoiceMockRecorder is the mock recorder for MockisInferParameter_ParameterChoice -type MockisInferParameter_ParameterChoiceMockRecorder struct { - mock *MockisInferParameter_ParameterChoice +// MockGRPCInferenceServiceClientMockRecorder is the mock recorder for MockGRPCInferenceServiceClient. +type MockGRPCInferenceServiceClientMockRecorder struct { + mock *MockGRPCInferenceServiceClient } -// NewMockisInferParameter_ParameterChoice creates a new mock instance -func NewMockisInferParameter_ParameterChoice(ctrl *gomock.Controller) *MockisInferParameter_ParameterChoice { - mock := &MockisInferParameter_ParameterChoice{ctrl: ctrl} - mock.recorder = &MockisInferParameter_ParameterChoiceMockRecorder{mock} +// NewMockGRPCInferenceServiceClient creates a new mock instance. +func NewMockGRPCInferenceServiceClient(ctrl *gomock.Controller) *MockGRPCInferenceServiceClient { + mock := &MockGRPCInferenceServiceClient{ctrl: ctrl} + mock.recorder = &MockGRPCInferenceServiceClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockisInferParameter_ParameterChoice) EXPECT() *MockisInferParameter_ParameterChoiceMockRecorder { +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGRPCInferenceServiceClient) EXPECT() *MockGRPCInferenceServiceClientMockRecorder { return m.recorder } -// isInferParameter_ParameterChoice mocks base method -func (m *MockisInferParameter_ParameterChoice) isInferParameter_ParameterChoice() { +// ModelInfer mocks base method. +func (m *MockGRPCInferenceServiceClient) ModelInfer(ctx context.Context, in *dataplane.ModelInferRequest, opts ...grpc.CallOption) (*dataplane.ModelInferResponse, error) { m.ctrl.T.Helper() - m.ctrl.Call(m, "isInferParameter_ParameterChoice") + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ModelInfer", varargs...) + ret0, _ := ret[0].(*dataplane.ModelInferResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// isInferParameter_ParameterChoice indicates an expected call of isInferParameter_ParameterChoice -func (mr *MockisInferParameter_ParameterChoiceMockRecorder) isInferParameter_ParameterChoice() *gomock.Call { +// ModelInfer indicates an expected call of ModelInfer. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelInfer(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "isInferParameter_ParameterChoice", reflect.TypeOf((*MockisInferParameter_ParameterChoice)(nil).isInferParameter_ParameterChoice)) + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelInfer", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelInfer), varargs...) } -// MockGRPCInferenceServiceClient is a mock of GRPCInferenceServiceClient interface -type MockGRPCInferenceServiceClient struct { - ctrl *gomock.Controller - recorder *MockGRPCInferenceServiceClientMockRecorder +// ModelMetadata mocks base method. +func (m *MockGRPCInferenceServiceClient) ModelMetadata(ctx context.Context, in *dataplane.ModelMetadataRequest, opts ...grpc.CallOption) (*dataplane.ModelMetadataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ModelMetadata", varargs...) + ret0, _ := ret[0].(*dataplane.ModelMetadataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// MockGRPCInferenceServiceClientMockRecorder is the mock recorder for MockGRPCInferenceServiceClient -type MockGRPCInferenceServiceClientMockRecorder struct { - mock *MockGRPCInferenceServiceClient +// ModelMetadata indicates an expected call of ModelMetadata. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelMetadata(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelMetadata", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelMetadata), varargs...) } -// NewMockGRPCInferenceServiceClient creates a new mock instance -func NewMockGRPCInferenceServiceClient(ctrl *gomock.Controller) *MockGRPCInferenceServiceClient { - mock := &MockGRPCInferenceServiceClient{ctrl: ctrl} - mock.recorder = &MockGRPCInferenceServiceClientMockRecorder{mock} - return mock +// ModelReady mocks base method. +func (m *MockGRPCInferenceServiceClient) ModelReady(ctx context.Context, in *dataplane.ModelReadyRequest, opts ...grpc.CallOption) (*dataplane.ModelReadyResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ModelReady", varargs...) + ret0, _ := ret[0].(*dataplane.ModelReadyResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockGRPCInferenceServiceClient) EXPECT() *MockGRPCInferenceServiceClientMockRecorder { - return m.recorder +// ModelReady indicates an expected call of ModelReady. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelReady(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelReady", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelReady), varargs...) } -// ServerLive mocks base method -func (m *MockGRPCInferenceServiceClient) ServerLive(ctx context.Context, in *inference.ServerLiveRequest, opts ...grpc.CallOption) (*inference.ServerLiveResponse, error) { +// RepositoryIndex mocks base method. +func (m *MockGRPCInferenceServiceClient) RepositoryIndex(ctx context.Context, in *dataplane.RepositoryIndexRequest, opts ...grpc.CallOption) (*dataplane.RepositoryIndexResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ServerLive", varargs...) - ret0, _ := ret[0].(*inference.ServerLiveResponse) + ret := m.ctrl.Call(m, "RepositoryIndex", varargs...) + ret0, _ := ret[0].(*dataplane.RepositoryIndexResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerLive indicates an expected call of ServerLive -func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerLive(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// RepositoryIndex indicates an expected call of RepositoryIndex. +func (mr *MockGRPCInferenceServiceClientMockRecorder) RepositoryIndex(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerLive", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerLive), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryIndex", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).RepositoryIndex), varargs...) } -// ServerReady mocks base method -func (m *MockGRPCInferenceServiceClient) ServerReady(ctx context.Context, in *inference.ServerReadyRequest, opts ...grpc.CallOption) (*inference.ServerReadyResponse, error) { +// RepositoryModelLoad mocks base method. +func (m *MockGRPCInferenceServiceClient) RepositoryModelLoad(ctx context.Context, in *dataplane.RepositoryModelLoadRequest, opts ...grpc.CallOption) (*dataplane.RepositoryModelLoadResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ServerReady", varargs...) - ret0, _ := ret[0].(*inference.ServerReadyResponse) + ret := m.ctrl.Call(m, "RepositoryModelLoad", varargs...) + ret0, _ := ret[0].(*dataplane.RepositoryModelLoadResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerReady indicates an expected call of ServerReady -func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerReady(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// RepositoryModelLoad indicates an expected call of RepositoryModelLoad. +func (mr *MockGRPCInferenceServiceClientMockRecorder) RepositoryModelLoad(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerReady", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerReady), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelLoad", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).RepositoryModelLoad), varargs...) } -// ModelReady mocks base method -func (m *MockGRPCInferenceServiceClient) ModelReady(ctx context.Context, in *inference.ModelReadyRequest, opts ...grpc.CallOption) (*inference.ModelReadyResponse, error) { +// RepositoryModelUnload mocks base method. +func (m *MockGRPCInferenceServiceClient) RepositoryModelUnload(ctx context.Context, in *dataplane.RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*dataplane.RepositoryModelUnloadResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ModelReady", varargs...) - ret0, _ := ret[0].(*inference.ModelReadyResponse) + ret := m.ctrl.Call(m, "RepositoryModelUnload", varargs...) + ret0, _ := ret[0].(*dataplane.RepositoryModelUnloadResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ModelReady indicates an expected call of ModelReady -func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelReady(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// RepositoryModelUnload indicates an expected call of RepositoryModelUnload. +func (mr *MockGRPCInferenceServiceClientMockRecorder) RepositoryModelUnload(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelReady", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelReady), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelUnload", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).RepositoryModelUnload), varargs...) } -// ServerMetadata mocks base method -func (m *MockGRPCInferenceServiceClient) ServerMetadata(ctx context.Context, in *inference.ServerMetadataRequest, opts ...grpc.CallOption) (*inference.ServerMetadataResponse, error) { +// ServerLive mocks base method. +func (m *MockGRPCInferenceServiceClient) ServerLive(ctx context.Context, in *dataplane.ServerLiveRequest, opts ...grpc.CallOption) (*dataplane.ServerLiveResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ServerMetadata", varargs...) - ret0, _ := ret[0].(*inference.ServerMetadataResponse) + ret := m.ctrl.Call(m, "ServerLive", varargs...) + ret0, _ := ret[0].(*dataplane.ServerLiveResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerMetadata indicates an expected call of ServerMetadata -func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerMetadata(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// ServerLive indicates an expected call of ServerLive. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerLive(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerMetadata", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerMetadata), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerLive", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerLive), varargs...) } -// ModelMetadata mocks base method -func (m *MockGRPCInferenceServiceClient) ModelMetadata(ctx context.Context, in *inference.ModelMetadataRequest, opts ...grpc.CallOption) (*inference.ModelMetadataResponse, error) { +// ServerMetadata mocks base method. +func (m *MockGRPCInferenceServiceClient) ServerMetadata(ctx context.Context, in *dataplane.ServerMetadataRequest, opts ...grpc.CallOption) (*dataplane.ServerMetadataResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ModelMetadata", varargs...) - ret0, _ := ret[0].(*inference.ModelMetadataResponse) + ret := m.ctrl.Call(m, "ServerMetadata", varargs...) + ret0, _ := ret[0].(*dataplane.ServerMetadataResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ModelMetadata indicates an expected call of ModelMetadata -func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelMetadata(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// ServerMetadata indicates an expected call of ServerMetadata. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerMetadata(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelMetadata", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelMetadata), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerMetadata", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerMetadata), varargs...) } -// ModelInfer mocks base method -func (m *MockGRPCInferenceServiceClient) ModelInfer(ctx context.Context, in *inference.ModelInferRequest, opts ...grpc.CallOption) (*inference.ModelInferResponse, error) { +// ServerReady mocks base method. +func (m *MockGRPCInferenceServiceClient) ServerReady(ctx context.Context, in *dataplane.ServerReadyRequest, opts ...grpc.CallOption) (*dataplane.ServerReadyResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "ModelInfer", varargs...) - ret0, _ := ret[0].(*inference.ModelInferResponse) + ret := m.ctrl.Call(m, "ServerReady", varargs...) + ret0, _ := ret[0].(*dataplane.ServerReadyResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ModelInfer indicates an expected call of ModelInfer -func (mr *MockGRPCInferenceServiceClientMockRecorder) ModelInfer(ctx, in interface{}, opts ...interface{}) *gomock.Call { +// ServerReady indicates an expected call of ServerReady. +func (mr *MockGRPCInferenceServiceClientMockRecorder) ServerReady(ctx, in interface{}, opts ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelInfer", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ModelInfer), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerReady", reflect.TypeOf((*MockGRPCInferenceServiceClient)(nil).ServerReady), varargs...) } -// MockGRPCInferenceServiceServer is a mock of GRPCInferenceServiceServer interface +// MockGRPCInferenceServiceServer is a mock of GRPCInferenceServiceServer interface. type MockGRPCInferenceServiceServer struct { ctrl *gomock.Controller recorder *MockGRPCInferenceServiceServerMockRecorder } -// MockGRPCInferenceServiceServerMockRecorder is the mock recorder for MockGRPCInferenceServiceServer +// MockGRPCInferenceServiceServerMockRecorder is the mock recorder for MockGRPCInferenceServiceServer. type MockGRPCInferenceServiceServerMockRecorder struct { mock *MockGRPCInferenceServiceServer } -// NewMockGRPCInferenceServiceServer creates a new mock instance +// NewMockGRPCInferenceServiceServer creates a new mock instance. func NewMockGRPCInferenceServiceServer(ctrl *gomock.Controller) *MockGRPCInferenceServiceServer { mock := &MockGRPCInferenceServiceServer{ctrl: ctrl} mock.recorder = &MockGRPCInferenceServiceServerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockGRPCInferenceServiceServer) EXPECT() *MockGRPCInferenceServiceServerMockRecorder { return m.recorder } -// ServerLive mocks base method -func (m *MockGRPCInferenceServiceServer) ServerLive(arg0 context.Context, arg1 *inference.ServerLiveRequest) (*inference.ServerLiveResponse, error) { +// ModelInfer mocks base method. +func (m *MockGRPCInferenceServiceServer) ModelInfer(arg0 context.Context, arg1 *dataplane.ModelInferRequest) (*dataplane.ModelInferResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ServerLive", arg0, arg1) - ret0, _ := ret[0].(*inference.ServerLiveResponse) + ret := m.ctrl.Call(m, "ModelInfer", arg0, arg1) + ret0, _ := ret[0].(*dataplane.ModelInferResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerLive indicates an expected call of ServerLive -func (mr *MockGRPCInferenceServiceServerMockRecorder) ServerLive(arg0, arg1 interface{}) *gomock.Call { +// ModelInfer indicates an expected call of ModelInfer. +func (mr *MockGRPCInferenceServiceServerMockRecorder) ModelInfer(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerLive", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ServerLive), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelInfer", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ModelInfer), arg0, arg1) } -// ServerReady mocks base method -func (m *MockGRPCInferenceServiceServer) ServerReady(arg0 context.Context, arg1 *inference.ServerReadyRequest) (*inference.ServerReadyResponse, error) { +// ModelMetadata mocks base method. +func (m *MockGRPCInferenceServiceServer) ModelMetadata(arg0 context.Context, arg1 *dataplane.ModelMetadataRequest) (*dataplane.ModelMetadataResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ServerReady", arg0, arg1) - ret0, _ := ret[0].(*inference.ServerReadyResponse) + ret := m.ctrl.Call(m, "ModelMetadata", arg0, arg1) + ret0, _ := ret[0].(*dataplane.ModelMetadataResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerReady indicates an expected call of ServerReady -func (mr *MockGRPCInferenceServiceServerMockRecorder) ServerReady(arg0, arg1 interface{}) *gomock.Call { +// ModelMetadata indicates an expected call of ModelMetadata. +func (mr *MockGRPCInferenceServiceServerMockRecorder) ModelMetadata(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerReady", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ServerReady), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelMetadata", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ModelMetadata), arg0, arg1) } -// ModelReady mocks base method -func (m *MockGRPCInferenceServiceServer) ModelReady(arg0 context.Context, arg1 *inference.ModelReadyRequest) (*inference.ModelReadyResponse, error) { +// ModelReady mocks base method. +func (m *MockGRPCInferenceServiceServer) ModelReady(arg0 context.Context, arg1 *dataplane.ModelReadyRequest) (*dataplane.ModelReadyResponse, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ModelReady", arg0, arg1) - ret0, _ := ret[0].(*inference.ModelReadyResponse) + ret0, _ := ret[0].(*dataplane.ModelReadyResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ModelReady indicates an expected call of ModelReady +// ModelReady indicates an expected call of ModelReady. func (mr *MockGRPCInferenceServiceServerMockRecorder) ModelReady(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelReady", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ModelReady), arg0, arg1) } -// ServerMetadata mocks base method -func (m *MockGRPCInferenceServiceServer) ServerMetadata(arg0 context.Context, arg1 *inference.ServerMetadataRequest) (*inference.ServerMetadataResponse, error) { +// RepositoryIndex mocks base method. +func (m *MockGRPCInferenceServiceServer) RepositoryIndex(arg0 context.Context, arg1 *dataplane.RepositoryIndexRequest) (*dataplane.RepositoryIndexResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RepositoryIndex", arg0, arg1) + ret0, _ := ret[0].(*dataplane.RepositoryIndexResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RepositoryIndex indicates an expected call of RepositoryIndex. +func (mr *MockGRPCInferenceServiceServerMockRecorder) RepositoryIndex(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryIndex", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).RepositoryIndex), arg0, arg1) +} + +// RepositoryModelLoad mocks base method. +func (m *MockGRPCInferenceServiceServer) RepositoryModelLoad(arg0 context.Context, arg1 *dataplane.RepositoryModelLoadRequest) (*dataplane.RepositoryModelLoadResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RepositoryModelLoad", arg0, arg1) + ret0, _ := ret[0].(*dataplane.RepositoryModelLoadResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RepositoryModelLoad indicates an expected call of RepositoryModelLoad. +func (mr *MockGRPCInferenceServiceServerMockRecorder) RepositoryModelLoad(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelLoad", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).RepositoryModelLoad), arg0, arg1) +} + +// RepositoryModelUnload mocks base method. +func (m *MockGRPCInferenceServiceServer) RepositoryModelUnload(arg0 context.Context, arg1 *dataplane.RepositoryModelUnloadRequest) (*dataplane.RepositoryModelUnloadResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RepositoryModelUnload", arg0, arg1) + ret0, _ := ret[0].(*dataplane.RepositoryModelUnloadResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// RepositoryModelUnload indicates an expected call of RepositoryModelUnload. +func (mr *MockGRPCInferenceServiceServerMockRecorder) RepositoryModelUnload(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelUnload", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).RepositoryModelUnload), arg0, arg1) +} + +// ServerLive mocks base method. +func (m *MockGRPCInferenceServiceServer) ServerLive(arg0 context.Context, arg1 *dataplane.ServerLiveRequest) (*dataplane.ServerLiveResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ServerLive", arg0, arg1) + ret0, _ := ret[0].(*dataplane.ServerLiveResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ServerLive indicates an expected call of ServerLive. +func (mr *MockGRPCInferenceServiceServerMockRecorder) ServerLive(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerLive", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ServerLive), arg0, arg1) +} + +// ServerMetadata mocks base method. +func (m *MockGRPCInferenceServiceServer) ServerMetadata(arg0 context.Context, arg1 *dataplane.ServerMetadataRequest) (*dataplane.ServerMetadataResponse, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ServerMetadata", arg0, arg1) - ret0, _ := ret[0].(*inference.ServerMetadataResponse) + ret0, _ := ret[0].(*dataplane.ServerMetadataResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ServerMetadata indicates an expected call of ServerMetadata +// ServerMetadata indicates an expected call of ServerMetadata. func (mr *MockGRPCInferenceServiceServerMockRecorder) ServerMetadata(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerMetadata", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ServerMetadata), arg0, arg1) } -// ModelMetadata mocks base method -func (m *MockGRPCInferenceServiceServer) ModelMetadata(arg0 context.Context, arg1 *inference.ModelMetadataRequest) (*inference.ModelMetadataResponse, error) { +// ServerReady mocks base method. +func (m *MockGRPCInferenceServiceServer) ServerReady(arg0 context.Context, arg1 *dataplane.ServerReadyRequest) (*dataplane.ServerReadyResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ModelMetadata", arg0, arg1) - ret0, _ := ret[0].(*inference.ModelMetadataResponse) + ret := m.ctrl.Call(m, "ServerReady", arg0, arg1) + ret0, _ := ret[0].(*dataplane.ServerReadyResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// ModelMetadata indicates an expected call of ModelMetadata -func (mr *MockGRPCInferenceServiceServerMockRecorder) ModelMetadata(arg0, arg1 interface{}) *gomock.Call { +// ServerReady indicates an expected call of ServerReady. +func (mr *MockGRPCInferenceServiceServerMockRecorder) ServerReady(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelMetadata", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ModelMetadata), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ServerReady", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ServerReady), arg0, arg1) } -// ModelInfer mocks base method -func (m *MockGRPCInferenceServiceServer) ModelInfer(arg0 context.Context, arg1 *inference.ModelInferRequest) (*inference.ModelInferResponse, error) { +// mustEmbedUnimplementedGRPCInferenceServiceServer mocks base method. +func (m *MockGRPCInferenceServiceServer) mustEmbedUnimplementedGRPCInferenceServiceServer() { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ModelInfer", arg0, arg1) - ret0, _ := ret[0].(*inference.ModelInferResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 + m.ctrl.Call(m, "mustEmbedUnimplementedGRPCInferenceServiceServer") } -// ModelInfer indicates an expected call of ModelInfer -func (mr *MockGRPCInferenceServiceServerMockRecorder) ModelInfer(arg0, arg1 interface{}) *gomock.Call { +// mustEmbedUnimplementedGRPCInferenceServiceServer indicates an expected call of mustEmbedUnimplementedGRPCInferenceServiceServer. +func (mr *MockGRPCInferenceServiceServerMockRecorder) mustEmbedUnimplementedGRPCInferenceServiceServer() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModelInfer", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).ModelInfer), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedGRPCInferenceServiceServer", reflect.TypeOf((*MockGRPCInferenceServiceServer)(nil).mustEmbedUnimplementedGRPCInferenceServiceServer)) +} + +// MockUnsafeGRPCInferenceServiceServer is a mock of UnsafeGRPCInferenceServiceServer interface. +type MockUnsafeGRPCInferenceServiceServer struct { + ctrl *gomock.Controller + recorder *MockUnsafeGRPCInferenceServiceServerMockRecorder +} + +// MockUnsafeGRPCInferenceServiceServerMockRecorder is the mock recorder for MockUnsafeGRPCInferenceServiceServer. +type MockUnsafeGRPCInferenceServiceServerMockRecorder struct { + mock *MockUnsafeGRPCInferenceServiceServer +} + +// NewMockUnsafeGRPCInferenceServiceServer creates a new mock instance. +func NewMockUnsafeGRPCInferenceServiceServer(ctrl *gomock.Controller) *MockUnsafeGRPCInferenceServiceServer { + mock := &MockUnsafeGRPCInferenceServiceServer{ctrl: ctrl} + mock.recorder = &MockUnsafeGRPCInferenceServiceServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockUnsafeGRPCInferenceServiceServer) EXPECT() *MockUnsafeGRPCInferenceServiceServerMockRecorder { + return m.recorder +} + +// mustEmbedUnimplementedGRPCInferenceServiceServer mocks base method. +func (m *MockUnsafeGRPCInferenceServiceServer) mustEmbedUnimplementedGRPCInferenceServiceServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedGRPCInferenceServiceServer") +} + +// mustEmbedUnimplementedGRPCInferenceServiceServer indicates an expected call of mustEmbedUnimplementedGRPCInferenceServiceServer. +func (mr *MockUnsafeGRPCInferenceServiceServerMockRecorder) mustEmbedUnimplementedGRPCInferenceServiceServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedGRPCInferenceServiceServer", reflect.TypeOf((*MockUnsafeGRPCInferenceServiceServer)(nil).mustEmbedUnimplementedGRPCInferenceServiceServer)) } diff --git a/model-mesh-mlserver-adapter/generated/mocks/mock_modelrepo.go b/model-mesh-mlserver-adapter/generated/mocks/mock_modelrepo.go deleted file mode 100644 index 0f74ddc0..00000000 --- a/model-mesh-mlserver-adapter/generated/mocks/mock_modelrepo.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2021 IBM Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// Code generated by MockGen. DO NOT EDIT. -// Source: model-mesh-mlserver-adapter/generated/modelrepo/model_repository.pb.go - -// Package mock_mlserver is a generated GoMock package. -package mock_mlserver - -import ( - context "context" - gomock "github.com/golang/mock/gomock" - inference_model_repository "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/modelrepo" - grpc "google.golang.org/grpc" - reflect "reflect" -) - -// MockModelRepositoryServiceClient is a mock of ModelRepositoryServiceClient interface -type MockModelRepositoryServiceClient struct { - ctrl *gomock.Controller - recorder *MockModelRepositoryServiceClientMockRecorder -} - -// MockModelRepositoryServiceClientMockRecorder is the mock recorder for MockModelRepositoryServiceClient -type MockModelRepositoryServiceClientMockRecorder struct { - mock *MockModelRepositoryServiceClient -} - -// NewMockModelRepositoryServiceClient creates a new mock instance -func NewMockModelRepositoryServiceClient(ctrl *gomock.Controller) *MockModelRepositoryServiceClient { - mock := &MockModelRepositoryServiceClient{ctrl: ctrl} - mock.recorder = &MockModelRepositoryServiceClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockModelRepositoryServiceClient) EXPECT() *MockModelRepositoryServiceClientMockRecorder { - return m.recorder -} - -// RepositoryIndex mocks base method -func (m *MockModelRepositoryServiceClient) RepositoryIndex(ctx context.Context, in *inference_model_repository.RepositoryIndexRequest, opts ...grpc.CallOption) (*inference_model_repository.RepositoryIndexResponse, error) { - m.ctrl.T.Helper() - varargs := []interface{}{ctx, in} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "RepositoryIndex", varargs...) - ret0, _ := ret[0].(*inference_model_repository.RepositoryIndexResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryIndex indicates an expected call of RepositoryIndex -func (mr *MockModelRepositoryServiceClientMockRecorder) RepositoryIndex(ctx, in interface{}, opts ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryIndex", reflect.TypeOf((*MockModelRepositoryServiceClient)(nil).RepositoryIndex), varargs...) -} - -// RepositoryModelLoad mocks base method -func (m *MockModelRepositoryServiceClient) RepositoryModelLoad(ctx context.Context, in *inference_model_repository.RepositoryModelLoadRequest, opts ...grpc.CallOption) (*inference_model_repository.RepositoryModelLoadResponse, error) { - m.ctrl.T.Helper() - varargs := []interface{}{ctx, in} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "RepositoryModelLoad", varargs...) - ret0, _ := ret[0].(*inference_model_repository.RepositoryModelLoadResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryModelLoad indicates an expected call of RepositoryModelLoad -func (mr *MockModelRepositoryServiceClientMockRecorder) RepositoryModelLoad(ctx, in interface{}, opts ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelLoad", reflect.TypeOf((*MockModelRepositoryServiceClient)(nil).RepositoryModelLoad), varargs...) -} - -// RepositoryModelUnload mocks base method -func (m *MockModelRepositoryServiceClient) RepositoryModelUnload(ctx context.Context, in *inference_model_repository.RepositoryModelUnloadRequest, opts ...grpc.CallOption) (*inference_model_repository.RepositoryModelUnloadResponse, error) { - m.ctrl.T.Helper() - varargs := []interface{}{ctx, in} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "RepositoryModelUnload", varargs...) - ret0, _ := ret[0].(*inference_model_repository.RepositoryModelUnloadResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryModelUnload indicates an expected call of RepositoryModelUnload -func (mr *MockModelRepositoryServiceClientMockRecorder) RepositoryModelUnload(ctx, in interface{}, opts ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, in}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelUnload", reflect.TypeOf((*MockModelRepositoryServiceClient)(nil).RepositoryModelUnload), varargs...) -} - -// MockModelRepositoryServiceServer is a mock of ModelRepositoryServiceServer interface -type MockModelRepositoryServiceServer struct { - ctrl *gomock.Controller - recorder *MockModelRepositoryServiceServerMockRecorder -} - -// MockModelRepositoryServiceServerMockRecorder is the mock recorder for MockModelRepositoryServiceServer -type MockModelRepositoryServiceServerMockRecorder struct { - mock *MockModelRepositoryServiceServer -} - -// NewMockModelRepositoryServiceServer creates a new mock instance -func NewMockModelRepositoryServiceServer(ctrl *gomock.Controller) *MockModelRepositoryServiceServer { - mock := &MockModelRepositoryServiceServer{ctrl: ctrl} - mock.recorder = &MockModelRepositoryServiceServerMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockModelRepositoryServiceServer) EXPECT() *MockModelRepositoryServiceServerMockRecorder { - return m.recorder -} - -// RepositoryIndex mocks base method -func (m *MockModelRepositoryServiceServer) RepositoryIndex(arg0 context.Context, arg1 *inference_model_repository.RepositoryIndexRequest) (*inference_model_repository.RepositoryIndexResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RepositoryIndex", arg0, arg1) - ret0, _ := ret[0].(*inference_model_repository.RepositoryIndexResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryIndex indicates an expected call of RepositoryIndex -func (mr *MockModelRepositoryServiceServerMockRecorder) RepositoryIndex(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryIndex", reflect.TypeOf((*MockModelRepositoryServiceServer)(nil).RepositoryIndex), arg0, arg1) -} - -// RepositoryModelLoad mocks base method -func (m *MockModelRepositoryServiceServer) RepositoryModelLoad(arg0 context.Context, arg1 *inference_model_repository.RepositoryModelLoadRequest) (*inference_model_repository.RepositoryModelLoadResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RepositoryModelLoad", arg0, arg1) - ret0, _ := ret[0].(*inference_model_repository.RepositoryModelLoadResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryModelLoad indicates an expected call of RepositoryModelLoad -func (mr *MockModelRepositoryServiceServerMockRecorder) RepositoryModelLoad(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelLoad", reflect.TypeOf((*MockModelRepositoryServiceServer)(nil).RepositoryModelLoad), arg0, arg1) -} - -// RepositoryModelUnload mocks base method -func (m *MockModelRepositoryServiceServer) RepositoryModelUnload(arg0 context.Context, arg1 *inference_model_repository.RepositoryModelUnloadRequest) (*inference_model_repository.RepositoryModelUnloadResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RepositoryModelUnload", arg0, arg1) - ret0, _ := ret[0].(*inference_model_repository.RepositoryModelUnloadResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RepositoryModelUnload indicates an expected call of RepositoryModelUnload -func (mr *MockModelRepositoryServiceServerMockRecorder) RepositoryModelUnload(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RepositoryModelUnload", reflect.TypeOf((*MockModelRepositoryServiceServer)(nil).RepositoryModelUnload), arg0, arg1) -} diff --git a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go index 20a48b5b..5f1190de 100644 --- a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go +++ b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -21,7 +21,6 @@ import ( "github.com/go-logr/logr" "github.com/golang/mock/gomock" mlserver "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/dataplane" - modelrepo "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/modelrepo" mock "github.com/kserve/modelmesh-runtime-adapter/model-mesh-mlserver-adapter/generated/mocks" "google.golang.org/grpc" "sigs.k8s.io/controller-runtime/pkg/log/zap" @@ -30,7 +29,7 @@ import ( // wrap unimplemented structs to embed deeper than the mocks type unimplementedServer struct { mlserver.UnimplementedGRPCInferenceServiceServer - modelrepo.UnimplementedModelRepositoryServiceServer + //modelrepo.UnimplementedModelRepositoryServiceServer } type mockInferenceServiceWithUnimplemented struct { @@ -38,10 +37,11 @@ type mockInferenceServiceWithUnimplemented struct { unimplementedServer } -type mockModelRepoServiceWithUnimplemented struct { - *mock.MockModelRepositoryServiceServer - unimplementedServer -} +// +//type mockModelRepoServiceWithUnimplemented struct { +// *mock.MockModelRepositoryServiceServer +// unimplementedServer +//} func main() { log := zap.New(zap.UseDevMode(true)) @@ -66,17 +66,20 @@ func main() { i.EXPECT().ServerLive(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.ServerLiveResponse{Live: true}, nil) i.EXPECT().ServerReady(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.ServerReadyResponse{Ready: true}, nil) i.EXPECT().ServerMetadata(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.ServerMetadataResponse{}, nil) + i.EXPECT().RepositoryIndex(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.RepositoryIndexResponse{}, nil) + i.EXPECT().RepositoryModelLoad(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.RepositoryModelLoadResponse{}, nil) + i.EXPECT().RepositoryModelUnload(gomock.Any(), gomock.Any()).AnyTimes().Return(&mlserver.RepositoryModelUnloadResponse{}, nil) mlserver.RegisterGRPCInferenceServiceServer(grpcServer, mockInferenceServiceWithUnimplemented{i, unimplementedServer{}}) - // Mock ModelRepository Service - - mr := mock.NewMockModelRepositoryServiceServer(ctrl) - mr.EXPECT().RepositoryIndex(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryIndexResponse{}, nil) - mr.EXPECT().RepositoryModelLoad(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelLoadResponse{}, nil) - mr.EXPECT().RepositoryModelUnload(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelUnloadResponse{}, nil) - - modelrepo.RegisterModelRepositoryServiceServer(grpcServer, mockModelRepoServiceWithUnimplemented{mr, unimplementedServer{}}) + //// Mock ModelRepository Service + // + //mr := mock.NewMockModelRepositoryServiceServer(ctrl) + //mr.EXPECT().RepositoryIndex(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryIndexResponse{}, nil) + //mr.EXPECT().RepositoryModelLoad(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelLoadResponse{}, nil) + //mr.EXPECT().RepositoryModelUnload(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelUnloadResponse{}, nil) + // + //modelrepo.RegisterModelRepositoryServiceServer(grpcServer, mockModelRepoServiceWithUnimplemented{mr, unimplementedServer{}}) err = grpcServer.Serve(lis) @@ -89,10 +92,10 @@ func main() { // Implements gomock TestReporter interface: // -// type TestReporter interface { -// Errorf(format string, args ...interface{}) -// Fatalf(format string, args ...interface{}) -// } +// type TestReporter interface { +// Errorf(format string, args ...interface{}) +// Fatalf(format string, args ...interface{}) +// } type CustomReporter struct { log logr.Logger } diff --git a/model-mesh-mlserver-adapter/server/server.go b/model-mesh-mlserver-adapter/server/server.go index 88af23a0..bb7f815f 100644 --- a/model-mesh-mlserver-adapter/server/server.go +++ b/model-mesh-mlserver-adapter/server/server.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -33,7 +33,6 @@ import ( "github.com/kserve/modelmesh-runtime-adapter/internal/modelschema" mlserver "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/dataplane" - modelrepo "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mlserver/modelrepo" "github.com/kserve/modelmesh-runtime-adapter/internal/proto/mmesh" "github.com/kserve/modelmesh-runtime-adapter/internal/util" "github.com/kserve/modelmesh-runtime-adapter/model-serving-puller/puller" @@ -62,12 +61,12 @@ type AdapterConfiguration struct { } type MLServerAdapterServer struct { - Client mlserver.GRPCInferenceServiceClient - ModelRepoClient modelrepo.ModelRepositoryServiceClient - Conn *grpc.ClientConn - Puller *puller.Puller - AdapterConfig *AdapterConfiguration - Log logr.Logger + Client mlserver.GRPCInferenceServiceClient + //ModelRepoClient modelrepo.ModelRepositoryServiceClient + Conn *grpc.ClientConn + Puller *puller.Puller + AdapterConfig *AdapterConfiguration + Log logr.Logger // embed generated Unimplemented type for forward-compatibility for gRPC mmesh.UnimplementedModelRuntimeServer @@ -97,7 +96,7 @@ func NewMLServerAdapterServer(runtimePort int, config *AdapterConfiguration, log s.AdapterConfig = config s.Client = mlserver.NewGRPCInferenceServiceClient(conn) s.Conn = conn - s.ModelRepoClient = modelrepo.NewModelRepositoryServiceClient(conn) + //s.ModelRepoClient = modelrepo.NewModelRepositoryServiceClient(conn) if s.AdapterConfig.UseEmbeddedPuller { // puller is configured from its own env vars s.Puller = puller.NewPuller(log) @@ -133,7 +132,7 @@ func (s *MLServerAdapterServer) LoadModel(ctx context.Context, req *mmesh.LoadMo return nil, status.Errorf(status.Code(err), "Failed to load Model due to adapter error: %v", err) } - _, mlserverErr := s.ModelRepoClient.RepositoryModelLoad(ctx, &modelrepo.RepositoryModelLoadRequest{ + _, mlserverErr := s.Client.RepositoryModelLoad(ctx, &mlserver.RepositoryModelLoadRequest{ ModelName: req.ModelId, }) if mlserverErr != nil { @@ -439,7 +438,7 @@ func tensorMetadataToJson(tm modelschema.TensorMetadata) map[string]interface{} func (s *MLServerAdapterServer) UnloadModel(ctx context.Context, req *mmesh.UnloadModelRequest) (*mmesh.UnloadModelResponse, error) { log := s.Log.WithName("UnloadModel").WithValues("modelId", req.ModelId) - _, mlserverErr := s.ModelRepoClient.RepositoryModelUnload(ctx, &modelrepo.RepositoryModelUnloadRequest{ + _, mlserverErr := s.Client.RepositoryModelUnload(ctx, &mlserver.RepositoryModelUnloadRequest{ ModelName: req.ModelId, }) @@ -496,7 +495,7 @@ func (s *MLServerAdapterServer) RuntimeStatus(ctx context.Context, req *mmesh.Ru } //unloading if there are any models already loaded - indexResponse, mlserverErr := s.ModelRepoClient.RepositoryIndex(ctx, &modelrepo.RepositoryIndexRequest{ + indexResponse, mlserverErr := s.Client.RepositoryIndex(ctx, &mlserver.RepositoryIndexRequest{ RepositoryName: "", Ready: true}) @@ -507,7 +506,7 @@ func (s *MLServerAdapterServer) RuntimeStatus(ctx context.Context, req *mmesh.Ru for model := range indexResponse.Models { modelId := indexResponse.Models[model].Name - if _, mlserverErr = s.ModelRepoClient.RepositoryModelUnload(ctx, &modelrepo.RepositoryModelUnloadRequest{ + if _, mlserverErr = s.Client.RepositoryModelUnload(ctx, &mlserver.RepositoryModelUnloadRequest{ ModelName: modelId, }); mlserverErr != nil { log.Info("MLServer runtime status, unload model failed", "error", mlserverErr, "model", modelId) From e1f431e861e9dfb833af5ef81d8603ae3743050d Mon Sep 17 00:00:00 2001 From: Rafael Vasquez Date: Tue, 25 Apr 2023 12:42:24 -0400 Subject: [PATCH 2/3] Remove modelrepo refs Signed-off-by: Rafael Vasquez --- .../mlserver/mock_mlserver_server.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go index 5f1190de..be08bbcd 100644 --- a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go +++ b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go @@ -37,12 +37,6 @@ type mockInferenceServiceWithUnimplemented struct { unimplementedServer } -// -//type mockModelRepoServiceWithUnimplemented struct { -// *mock.MockModelRepositoryServiceServer -// unimplementedServer -//} - func main() { log := zap.New(zap.UseDevMode(true)) lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", 8001)) @@ -72,15 +66,6 @@ func main() { mlserver.RegisterGRPCInferenceServiceServer(grpcServer, mockInferenceServiceWithUnimplemented{i, unimplementedServer{}}) - //// Mock ModelRepository Service - // - //mr := mock.NewMockModelRepositoryServiceServer(ctrl) - //mr.EXPECT().RepositoryIndex(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryIndexResponse{}, nil) - //mr.EXPECT().RepositoryModelLoad(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelLoadResponse{}, nil) - //mr.EXPECT().RepositoryModelUnload(gomock.Any(), gomock.Any()).AnyTimes().Return(&modelrepo.RepositoryModelUnloadResponse{}, nil) - // - //modelrepo.RegisterModelRepositoryServiceServer(grpcServer, mockModelRepoServiceWithUnimplemented{mr, unimplementedServer{}}) - err = grpcServer.Serve(lis) if err != nil { From 3aef60d770053fd75a2480917e3cbfa659ba8571 Mon Sep 17 00:00:00 2001 From: Rafael Vasquez Date: Wed, 26 Apr 2023 11:19:46 -0400 Subject: [PATCH 3/3] Remove modelrepoclient Signed-off-by: Rafael Vasquez --- model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go | 1 - model-mesh-mlserver-adapter/server/server.go | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go index be08bbcd..a577c1cd 100644 --- a/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go +++ b/model-mesh-mlserver-adapter/mlserver/mock_mlserver_server.go @@ -29,7 +29,6 @@ import ( // wrap unimplemented structs to embed deeper than the mocks type unimplementedServer struct { mlserver.UnimplementedGRPCInferenceServiceServer - //modelrepo.UnimplementedModelRepositoryServiceServer } type mockInferenceServiceWithUnimplemented struct { diff --git a/model-mesh-mlserver-adapter/server/server.go b/model-mesh-mlserver-adapter/server/server.go index bb7f815f..1c4d33db 100644 --- a/model-mesh-mlserver-adapter/server/server.go +++ b/model-mesh-mlserver-adapter/server/server.go @@ -61,8 +61,7 @@ type AdapterConfiguration struct { } type MLServerAdapterServer struct { - Client mlserver.GRPCInferenceServiceClient - //ModelRepoClient modelrepo.ModelRepositoryServiceClient + Client mlserver.GRPCInferenceServiceClient Conn *grpc.ClientConn Puller *puller.Puller AdapterConfig *AdapterConfiguration @@ -96,7 +95,6 @@ func NewMLServerAdapterServer(runtimePort int, config *AdapterConfiguration, log s.AdapterConfig = config s.Client = mlserver.NewGRPCInferenceServiceClient(conn) s.Conn = conn - //s.ModelRepoClient = modelrepo.NewModelRepositoryServiceClient(conn) if s.AdapterConfig.UseEmbeddedPuller { // puller is configured from its own env vars s.Puller = puller.NewPuller(log)