diff --git a/app/mltraining/v1/ml_training.pb.go b/app/mltraining/v1/ml_training.pb.go index aaeb616c6..d1775ad82 100644 --- a/app/mltraining/v1/ml_training.pb.go +++ b/app/mltraining/v1/ml_training.pb.go @@ -1332,6 +1332,194 @@ func (x *ListSupportedContainersResponse) GetContainerMap() map[string]*Containe return nil } +type RegisterCustomTrainingContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + // Docker Hub reference, official images normalize to docker.io/library/:. + ImageUri string `protobuf:"bytes,2,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // will serve as display name +} + +func (x *RegisterCustomTrainingContainerRequest) Reset() { + *x = RegisterCustomTrainingContainerRequest{} + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterCustomTrainingContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterCustomTrainingContainerRequest) ProtoMessage() {} + +func (x *RegisterCustomTrainingContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterCustomTrainingContainerRequest.ProtoReflect.Descriptor instead. +func (*RegisterCustomTrainingContainerRequest) Descriptor() ([]byte, []int) { + return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{18} +} + +func (x *RegisterCustomTrainingContainerRequest) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *RegisterCustomTrainingContainerRequest) GetImageUri() string { + if x != nil { + return x.ImageUri + } + return "" +} + +func (x *RegisterCustomTrainingContainerRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type RegisterCustomTrainingContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *RegisterCustomTrainingContainerResponse) Reset() { + *x = RegisterCustomTrainingContainerResponse{} + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterCustomTrainingContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterCustomTrainingContainerResponse) ProtoMessage() {} + +func (x *RegisterCustomTrainingContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterCustomTrainingContainerResponse.ProtoReflect.Descriptor instead. +func (*RegisterCustomTrainingContainerResponse) Descriptor() ([]byte, []int) { + return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{19} +} + +func (x *RegisterCustomTrainingContainerResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteCustomTrainingContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteCustomTrainingContainerRequest) Reset() { + *x = DeleteCustomTrainingContainerRequest{} + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteCustomTrainingContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCustomTrainingContainerRequest) ProtoMessage() {} + +func (x *DeleteCustomTrainingContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCustomTrainingContainerRequest.ProtoReflect.Descriptor instead. +func (*DeleteCustomTrainingContainerRequest) Descriptor() ([]byte, []int) { + return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{20} +} + +func (x *DeleteCustomTrainingContainerRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteCustomTrainingContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteCustomTrainingContainerResponse) Reset() { + *x = DeleteCustomTrainingContainerResponse{} + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteCustomTrainingContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCustomTrainingContainerResponse) ProtoMessage() {} + +func (x *DeleteCustomTrainingContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCustomTrainingContainerResponse.ProtoReflect.Descriptor instead. +func (*DeleteCustomTrainingContainerResponse) Descriptor() ([]byte, []int) { + return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{21} +} + type Container struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1350,7 +1538,7 @@ type Container struct { func (x *Container) Reset() { *x = Container{} - mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[18] + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1362,7 +1550,7 @@ func (x *Container) String() string { func (*Container) ProtoMessage() {} func (x *Container) ProtoReflect() protoreflect.Message { - mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[18] + mi := &file_app_mltraining_v1_ml_training_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1375,7 +1563,7 @@ func (x *Container) ProtoReflect() protoreflect.Message { // Deprecated: Use Container.ProtoReflect.Descriptor instead. func (*Container) Descriptor() ([]byte, []int) { - return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{18} + return file_app_mltraining_v1_ml_training_proto_rawDescGZIP(), []int{22} } func (x *Container) GetKey() string { @@ -1753,137 +1941,177 @@ var file_app_mltraining_v1_ml_training_proto_rawDesc = []byte{ 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xd5, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6f, 0x6c, - 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, - 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2a, 0x9f, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x43, 0x4c, - 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x29, - 0x0a, 0x25, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, - 0x54, 0x49, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x4f, 0x44, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, - 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0xa4, 0x01, 0x0a, 0x0e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1f, 0x0a, - 0x1b, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, - 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, - 0x4b, 0x5f, 0x54, 0x46, 0x4c, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x4f, - 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x45, - 0x4e, 0x53, 0x4f, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x4f, - 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x59, - 0x54, 0x4f, 0x52, 0x43, 0x48, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x44, 0x45, 0x4c, - 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x4f, 0x4e, 0x4e, 0x58, 0x10, - 0x04, 0x2a, 0xe7, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, - 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, - 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, - 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1c, - 0x0a, 0x18, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, - 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x57, 0x0a, 0x0a, 0x56, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, - 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, - 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, - 0x11, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, - 0x49, 0x43, 0x10, 0x02, 0x32, 0x9c, 0x08, 0x0a, 0x11, 0x4d, 0x4c, 0x54, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, - 0x30, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, - 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, - 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, - 0x12, 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, - 0x4a, 0x6f, 0x62, 0x12, 0x2d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, - 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, - 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x22, 0x90, 0x01, 0x0a, 0x26, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, + 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x69, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x27, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x36, + 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xd5, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6f, 0x6c, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, 0x30, + 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2a, 0x9f, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x43, 0x4c, 0x41, + 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x29, 0x0a, + 0x25, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x4f, 0x44, 0x45, + 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, + 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0xa4, 0x01, 0x0a, 0x0e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x1b, + 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, + 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, + 0x5f, 0x54, 0x46, 0x4c, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x4f, 0x44, + 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x45, 0x4e, + 0x53, 0x4f, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x4f, 0x44, + 0x45, 0x4c, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x59, 0x54, + 0x4f, 0x52, 0x43, 0x48, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, + 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x4f, 0x4e, 0x4e, 0x58, 0x10, 0x04, + 0x2a, 0xe7, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1c, 0x0a, + 0x18, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, + 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x57, 0x0a, 0x0a, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, + 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, + 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x10, 0x02, 0x32, 0xe0, 0x0a, 0x0a, 0x11, 0x4d, 0x4c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, 0x30, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, - 0x6f, 0x62, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, + 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, + 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, + 0x6f, 0x62, 0x12, 0x2d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, 0x30, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x12, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, + 0x62, 0x12, 0x39, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x31, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x73, 0x12, 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x73, 0x12, 0x36, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x23, 0x5a, 0x21, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6d, 0x6c, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0xa2, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3c, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x6d, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x23, 0x5a, 0x21, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6d, 0x6c, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -1899,60 +2127,64 @@ func file_app_mltraining_v1_ml_training_proto_rawDescGZIP() []byte { } var file_app_mltraining_v1_ml_training_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_app_mltraining_v1_ml_training_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_app_mltraining_v1_ml_training_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_app_mltraining_v1_ml_training_proto_goTypes = []any{ - (ModelType)(0), // 0: viam.app.mltraining.v1.ModelType - (ModelFramework)(0), // 1: viam.app.mltraining.v1.ModelFramework - (TrainingStatus)(0), // 2: viam.app.mltraining.v1.TrainingStatus - (Visibility)(0), // 3: viam.app.mltraining.v1.Visibility - (*SubmitTrainingJobRequest)(nil), // 4: viam.app.mltraining.v1.SubmitTrainingJobRequest - (*SubmitTrainingJobResponse)(nil), // 5: viam.app.mltraining.v1.SubmitTrainingJobResponse - (*SubmitCustomTrainingJobRequest)(nil), // 6: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest - (*SubmitCustomTrainingJobResponse)(nil), // 7: viam.app.mltraining.v1.SubmitCustomTrainingJobResponse - (*GetTrainingJobRequest)(nil), // 8: viam.app.mltraining.v1.GetTrainingJobRequest - (*GetTrainingJobResponse)(nil), // 9: viam.app.mltraining.v1.GetTrainingJobResponse - (*ListTrainingJobsRequest)(nil), // 10: viam.app.mltraining.v1.ListTrainingJobsRequest - (*ListTrainingJobsResponse)(nil), // 11: viam.app.mltraining.v1.ListTrainingJobsResponse - (*TrainingJobMetadata)(nil), // 12: viam.app.mltraining.v1.TrainingJobMetadata - (*CancelTrainingJobRequest)(nil), // 13: viam.app.mltraining.v1.CancelTrainingJobRequest - (*CancelTrainingJobResponse)(nil), // 14: viam.app.mltraining.v1.CancelTrainingJobResponse - (*DeleteCompletedTrainingJobRequest)(nil), // 15: viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest - (*DeleteCompletedTrainingJobResponse)(nil), // 16: viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse - (*TrainingJobLogEntry)(nil), // 17: viam.app.mltraining.v1.TrainingJobLogEntry - (*GetTrainingJobLogsRequest)(nil), // 18: viam.app.mltraining.v1.GetTrainingJobLogsRequest - (*GetTrainingJobLogsResponse)(nil), // 19: viam.app.mltraining.v1.GetTrainingJobLogsResponse - (*ListSupportedContainersRequest)(nil), // 20: viam.app.mltraining.v1.ListSupportedContainersRequest - (*ListSupportedContainersResponse)(nil), // 21: viam.app.mltraining.v1.ListSupportedContainersResponse - (*Container)(nil), // 22: viam.app.mltraining.v1.Container - nil, // 23: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntry - nil, // 24: viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntry - nil, // 25: viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry - (*status.Status)(nil), // 26: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (ModelType)(0), // 0: viam.app.mltraining.v1.ModelType + (ModelFramework)(0), // 1: viam.app.mltraining.v1.ModelFramework + (TrainingStatus)(0), // 2: viam.app.mltraining.v1.TrainingStatus + (Visibility)(0), // 3: viam.app.mltraining.v1.Visibility + (*SubmitTrainingJobRequest)(nil), // 4: viam.app.mltraining.v1.SubmitTrainingJobRequest + (*SubmitTrainingJobResponse)(nil), // 5: viam.app.mltraining.v1.SubmitTrainingJobResponse + (*SubmitCustomTrainingJobRequest)(nil), // 6: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest + (*SubmitCustomTrainingJobResponse)(nil), // 7: viam.app.mltraining.v1.SubmitCustomTrainingJobResponse + (*GetTrainingJobRequest)(nil), // 8: viam.app.mltraining.v1.GetTrainingJobRequest + (*GetTrainingJobResponse)(nil), // 9: viam.app.mltraining.v1.GetTrainingJobResponse + (*ListTrainingJobsRequest)(nil), // 10: viam.app.mltraining.v1.ListTrainingJobsRequest + (*ListTrainingJobsResponse)(nil), // 11: viam.app.mltraining.v1.ListTrainingJobsResponse + (*TrainingJobMetadata)(nil), // 12: viam.app.mltraining.v1.TrainingJobMetadata + (*CancelTrainingJobRequest)(nil), // 13: viam.app.mltraining.v1.CancelTrainingJobRequest + (*CancelTrainingJobResponse)(nil), // 14: viam.app.mltraining.v1.CancelTrainingJobResponse + (*DeleteCompletedTrainingJobRequest)(nil), // 15: viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest + (*DeleteCompletedTrainingJobResponse)(nil), // 16: viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse + (*TrainingJobLogEntry)(nil), // 17: viam.app.mltraining.v1.TrainingJobLogEntry + (*GetTrainingJobLogsRequest)(nil), // 18: viam.app.mltraining.v1.GetTrainingJobLogsRequest + (*GetTrainingJobLogsResponse)(nil), // 19: viam.app.mltraining.v1.GetTrainingJobLogsResponse + (*ListSupportedContainersRequest)(nil), // 20: viam.app.mltraining.v1.ListSupportedContainersRequest + (*ListSupportedContainersResponse)(nil), // 21: viam.app.mltraining.v1.ListSupportedContainersResponse + (*RegisterCustomTrainingContainerRequest)(nil), // 22: viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest + (*RegisterCustomTrainingContainerResponse)(nil), // 23: viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse + (*DeleteCustomTrainingContainerRequest)(nil), // 24: viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest + (*DeleteCustomTrainingContainerResponse)(nil), // 25: viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse + (*Container)(nil), // 26: viam.app.mltraining.v1.Container + nil, // 27: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntry + nil, // 28: viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntry + nil, // 29: viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry + (*status.Status)(nil), // 30: google.rpc.Status + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp } var file_app_mltraining_v1_ml_training_proto_depIdxs = []int32{ 0, // 0: viam.app.mltraining.v1.SubmitTrainingJobRequest.model_type:type_name -> viam.app.mltraining.v1.ModelType 1, // 1: viam.app.mltraining.v1.SubmitTrainingJobRequest.model_framework:type_name -> viam.app.mltraining.v1.ModelFramework - 23, // 2: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.arguments:type_name -> viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntry + 27, // 2: viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.arguments:type_name -> viam.app.mltraining.v1.SubmitCustomTrainingJobRequest.ArgumentsEntry 12, // 3: viam.app.mltraining.v1.GetTrainingJobResponse.metadata:type_name -> viam.app.mltraining.v1.TrainingJobMetadata 2, // 4: viam.app.mltraining.v1.ListTrainingJobsRequest.status:type_name -> viam.app.mltraining.v1.TrainingStatus 12, // 5: viam.app.mltraining.v1.ListTrainingJobsResponse.jobs:type_name -> viam.app.mltraining.v1.TrainingJobMetadata 0, // 6: viam.app.mltraining.v1.TrainingJobMetadata.model_type:type_name -> viam.app.mltraining.v1.ModelType 1, // 7: viam.app.mltraining.v1.TrainingJobMetadata.model_framework:type_name -> viam.app.mltraining.v1.ModelFramework 2, // 8: viam.app.mltraining.v1.TrainingJobMetadata.status:type_name -> viam.app.mltraining.v1.TrainingStatus - 26, // 9: viam.app.mltraining.v1.TrainingJobMetadata.error_status:type_name -> google.rpc.Status - 27, // 10: viam.app.mltraining.v1.TrainingJobMetadata.created_on:type_name -> google.protobuf.Timestamp - 27, // 11: viam.app.mltraining.v1.TrainingJobMetadata.last_modified:type_name -> google.protobuf.Timestamp - 27, // 12: viam.app.mltraining.v1.TrainingJobMetadata.training_started:type_name -> google.protobuf.Timestamp - 27, // 13: viam.app.mltraining.v1.TrainingJobMetadata.training_ended:type_name -> google.protobuf.Timestamp - 24, // 14: viam.app.mltraining.v1.TrainingJobMetadata.arguments:type_name -> viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntry - 27, // 15: viam.app.mltraining.v1.TrainingJobLogEntry.time:type_name -> google.protobuf.Timestamp + 30, // 9: viam.app.mltraining.v1.TrainingJobMetadata.error_status:type_name -> google.rpc.Status + 31, // 10: viam.app.mltraining.v1.TrainingJobMetadata.created_on:type_name -> google.protobuf.Timestamp + 31, // 11: viam.app.mltraining.v1.TrainingJobMetadata.last_modified:type_name -> google.protobuf.Timestamp + 31, // 12: viam.app.mltraining.v1.TrainingJobMetadata.training_started:type_name -> google.protobuf.Timestamp + 31, // 13: viam.app.mltraining.v1.TrainingJobMetadata.training_ended:type_name -> google.protobuf.Timestamp + 28, // 14: viam.app.mltraining.v1.TrainingJobMetadata.arguments:type_name -> viam.app.mltraining.v1.TrainingJobMetadata.ArgumentsEntry + 31, // 15: viam.app.mltraining.v1.TrainingJobLogEntry.time:type_name -> google.protobuf.Timestamp 17, // 16: viam.app.mltraining.v1.GetTrainingJobLogsResponse.logs:type_name -> viam.app.mltraining.v1.TrainingJobLogEntry - 25, // 17: viam.app.mltraining.v1.ListSupportedContainersResponse.container_map:type_name -> viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry - 27, // 18: viam.app.mltraining.v1.Container.eol:type_name -> google.protobuf.Timestamp - 27, // 19: viam.app.mltraining.v1.Container.created_on:type_name -> google.protobuf.Timestamp + 29, // 17: viam.app.mltraining.v1.ListSupportedContainersResponse.container_map:type_name -> viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry + 31, // 18: viam.app.mltraining.v1.Container.eol:type_name -> google.protobuf.Timestamp + 31, // 19: viam.app.mltraining.v1.Container.created_on:type_name -> google.protobuf.Timestamp 3, // 20: viam.app.mltraining.v1.Container.visibility:type_name -> viam.app.mltraining.v1.Visibility - 22, // 21: viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry.value:type_name -> viam.app.mltraining.v1.Container + 26, // 21: viam.app.mltraining.v1.ListSupportedContainersResponse.ContainerMapEntry.value:type_name -> viam.app.mltraining.v1.Container 4, // 22: viam.app.mltraining.v1.MLTrainingService.SubmitTrainingJob:input_type -> viam.app.mltraining.v1.SubmitTrainingJobRequest 6, // 23: viam.app.mltraining.v1.MLTrainingService.SubmitCustomTrainingJob:input_type -> viam.app.mltraining.v1.SubmitCustomTrainingJobRequest 8, // 24: viam.app.mltraining.v1.MLTrainingService.GetTrainingJob:input_type -> viam.app.mltraining.v1.GetTrainingJobRequest @@ -1961,16 +2193,20 @@ var file_app_mltraining_v1_ml_training_proto_depIdxs = []int32{ 15, // 27: viam.app.mltraining.v1.MLTrainingService.DeleteCompletedTrainingJob:input_type -> viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest 18, // 28: viam.app.mltraining.v1.MLTrainingService.GetTrainingJobLogs:input_type -> viam.app.mltraining.v1.GetTrainingJobLogsRequest 20, // 29: viam.app.mltraining.v1.MLTrainingService.ListSupportedContainers:input_type -> viam.app.mltraining.v1.ListSupportedContainersRequest - 5, // 30: viam.app.mltraining.v1.MLTrainingService.SubmitTrainingJob:output_type -> viam.app.mltraining.v1.SubmitTrainingJobResponse - 7, // 31: viam.app.mltraining.v1.MLTrainingService.SubmitCustomTrainingJob:output_type -> viam.app.mltraining.v1.SubmitCustomTrainingJobResponse - 9, // 32: viam.app.mltraining.v1.MLTrainingService.GetTrainingJob:output_type -> viam.app.mltraining.v1.GetTrainingJobResponse - 11, // 33: viam.app.mltraining.v1.MLTrainingService.ListTrainingJobs:output_type -> viam.app.mltraining.v1.ListTrainingJobsResponse - 14, // 34: viam.app.mltraining.v1.MLTrainingService.CancelTrainingJob:output_type -> viam.app.mltraining.v1.CancelTrainingJobResponse - 16, // 35: viam.app.mltraining.v1.MLTrainingService.DeleteCompletedTrainingJob:output_type -> viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse - 19, // 36: viam.app.mltraining.v1.MLTrainingService.GetTrainingJobLogs:output_type -> viam.app.mltraining.v1.GetTrainingJobLogsResponse - 21, // 37: viam.app.mltraining.v1.MLTrainingService.ListSupportedContainers:output_type -> viam.app.mltraining.v1.ListSupportedContainersResponse - 30, // [30:38] is the sub-list for method output_type - 22, // [22:30] is the sub-list for method input_type + 22, // 30: viam.app.mltraining.v1.MLTrainingService.RegisterCustomTrainingContainer:input_type -> viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest + 24, // 31: viam.app.mltraining.v1.MLTrainingService.DeleteCustomTrainingContainer:input_type -> viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest + 5, // 32: viam.app.mltraining.v1.MLTrainingService.SubmitTrainingJob:output_type -> viam.app.mltraining.v1.SubmitTrainingJobResponse + 7, // 33: viam.app.mltraining.v1.MLTrainingService.SubmitCustomTrainingJob:output_type -> viam.app.mltraining.v1.SubmitCustomTrainingJobResponse + 9, // 34: viam.app.mltraining.v1.MLTrainingService.GetTrainingJob:output_type -> viam.app.mltraining.v1.GetTrainingJobResponse + 11, // 35: viam.app.mltraining.v1.MLTrainingService.ListTrainingJobs:output_type -> viam.app.mltraining.v1.ListTrainingJobsResponse + 14, // 36: viam.app.mltraining.v1.MLTrainingService.CancelTrainingJob:output_type -> viam.app.mltraining.v1.CancelTrainingJobResponse + 16, // 37: viam.app.mltraining.v1.MLTrainingService.DeleteCompletedTrainingJob:output_type -> viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse + 19, // 38: viam.app.mltraining.v1.MLTrainingService.GetTrainingJobLogs:output_type -> viam.app.mltraining.v1.GetTrainingJobLogsResponse + 21, // 39: viam.app.mltraining.v1.MLTrainingService.ListSupportedContainers:output_type -> viam.app.mltraining.v1.ListSupportedContainersResponse + 23, // 40: viam.app.mltraining.v1.MLTrainingService.RegisterCustomTrainingContainer:output_type -> viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse + 25, // 41: viam.app.mltraining.v1.MLTrainingService.DeleteCustomTrainingContainer:output_type -> viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse + 32, // [32:42] is the sub-list for method output_type + 22, // [22:32] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name @@ -1988,7 +2224,7 @@ func file_app_mltraining_v1_ml_training_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_app_mltraining_v1_ml_training_proto_rawDesc, NumEnums: 4, - NumMessages: 22, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/app/mltraining/v1/ml_training.pb.gw.go b/app/mltraining/v1/ml_training.pb.gw.go index 0eedf1939..c422321fa 100644 --- a/app/mltraining/v1/ml_training.pb.gw.go +++ b/app/mltraining/v1/ml_training.pb.gw.go @@ -239,6 +239,58 @@ func local_request_MLTrainingService_ListSupportedContainers_0(ctx context.Conte } +func request_MLTrainingService_RegisterCustomTrainingContainer_0(ctx context.Context, marshaler runtime.Marshaler, client MLTrainingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RegisterCustomTrainingContainerRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RegisterCustomTrainingContainer(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_MLTrainingService_RegisterCustomTrainingContainer_0(ctx context.Context, marshaler runtime.Marshaler, server MLTrainingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RegisterCustomTrainingContainerRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RegisterCustomTrainingContainer(ctx, &protoReq) + return msg, metadata, err + +} + +func request_MLTrainingService_DeleteCustomTrainingContainer_0(ctx context.Context, marshaler runtime.Marshaler, client MLTrainingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteCustomTrainingContainerRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteCustomTrainingContainer(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_MLTrainingService_DeleteCustomTrainingContainer_0(ctx context.Context, marshaler runtime.Marshaler, server MLTrainingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteCustomTrainingContainerRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteCustomTrainingContainer(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterMLTrainingServiceHandlerServer registers the http handlers for service MLTrainingService to "mux". // UnaryRPC :call MLTrainingServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -445,6 +497,56 @@ func RegisterMLTrainingServiceHandlerServer(ctx context.Context, mux *runtime.Se }) + mux.Handle("POST", pattern_MLTrainingService_RegisterCustomTrainingContainer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer", runtime.WithHTTPPathPattern("/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_MLTrainingService_RegisterCustomTrainingContainer_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_MLTrainingService_RegisterCustomTrainingContainer_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_MLTrainingService_DeleteCustomTrainingContainer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer", runtime.WithHTTPPathPattern("/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_MLTrainingService_DeleteCustomTrainingContainer_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_MLTrainingService_DeleteCustomTrainingContainer_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -662,6 +764,50 @@ func RegisterMLTrainingServiceHandlerClient(ctx context.Context, mux *runtime.Se }) + mux.Handle("POST", pattern_MLTrainingService_RegisterCustomTrainingContainer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer", runtime.WithHTTPPathPattern("/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_MLTrainingService_RegisterCustomTrainingContainer_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_MLTrainingService_RegisterCustomTrainingContainer_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_MLTrainingService_DeleteCustomTrainingContainer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer", runtime.WithHTTPPathPattern("/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_MLTrainingService_DeleteCustomTrainingContainer_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_MLTrainingService_DeleteCustomTrainingContainer_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -681,6 +827,10 @@ var ( pattern_MLTrainingService_GetTrainingJobLogs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.mltraining.v1.MLTrainingService", "GetTrainingJobLogs"}, "")) pattern_MLTrainingService_ListSupportedContainers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.mltraining.v1.MLTrainingService", "ListSupportedContainers"}, "")) + + pattern_MLTrainingService_RegisterCustomTrainingContainer_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.mltraining.v1.MLTrainingService", "RegisterCustomTrainingContainer"}, "")) + + pattern_MLTrainingService_DeleteCustomTrainingContainer_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.mltraining.v1.MLTrainingService", "DeleteCustomTrainingContainer"}, "")) ) var ( @@ -699,4 +849,8 @@ var ( forward_MLTrainingService_GetTrainingJobLogs_0 = runtime.ForwardResponseMessage forward_MLTrainingService_ListSupportedContainers_0 = runtime.ForwardResponseMessage + + forward_MLTrainingService_RegisterCustomTrainingContainer_0 = runtime.ForwardResponseMessage + + forward_MLTrainingService_DeleteCustomTrainingContainer_0 = runtime.ForwardResponseMessage ) diff --git a/app/mltraining/v1/ml_training_grpc.pb.go b/app/mltraining/v1/ml_training_grpc.pb.go index 05c801fed..fde2fb614 100644 --- a/app/mltraining/v1/ml_training_grpc.pb.go +++ b/app/mltraining/v1/ml_training_grpc.pb.go @@ -38,6 +38,10 @@ type MLTrainingServiceClient interface { GetTrainingJobLogs(ctx context.Context, in *GetTrainingJobLogsRequest, opts ...grpc.CallOption) (*GetTrainingJobLogsResponse, error) // ListSupportedContainers gets all the containers one can use for a custom training job. ListSupportedContainers(ctx context.Context, in *ListSupportedContainersRequest, opts ...grpc.CallOption) (*ListSupportedContainersResponse, error) + // RegisterCustomTrainingContainer registers a custom container in the database for custom training jobs + RegisterCustomTrainingContainer(ctx context.Context, in *RegisterCustomTrainingContainerRequest, opts ...grpc.CallOption) (*RegisterCustomTrainingContainerResponse, error) + // DeleteCustomTrainingContainer deletes a custom container from the database + DeleteCustomTrainingContainer(ctx context.Context, in *DeleteCustomTrainingContainerRequest, opts ...grpc.CallOption) (*DeleteCustomTrainingContainerResponse, error) } type mLTrainingServiceClient struct { @@ -120,6 +124,24 @@ func (c *mLTrainingServiceClient) ListSupportedContainers(ctx context.Context, i return out, nil } +func (c *mLTrainingServiceClient) RegisterCustomTrainingContainer(ctx context.Context, in *RegisterCustomTrainingContainerRequest, opts ...grpc.CallOption) (*RegisterCustomTrainingContainerResponse, error) { + out := new(RegisterCustomTrainingContainerResponse) + err := c.cc.Invoke(ctx, "/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *mLTrainingServiceClient) DeleteCustomTrainingContainer(ctx context.Context, in *DeleteCustomTrainingContainerRequest, opts ...grpc.CallOption) (*DeleteCustomTrainingContainerResponse, error) { + out := new(DeleteCustomTrainingContainerResponse) + err := c.cc.Invoke(ctx, "/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MLTrainingServiceServer is the server API for MLTrainingService service. // All implementations must embed UnimplementedMLTrainingServiceServer // for forward compatibility @@ -140,6 +162,10 @@ type MLTrainingServiceServer interface { GetTrainingJobLogs(context.Context, *GetTrainingJobLogsRequest) (*GetTrainingJobLogsResponse, error) // ListSupportedContainers gets all the containers one can use for a custom training job. ListSupportedContainers(context.Context, *ListSupportedContainersRequest) (*ListSupportedContainersResponse, error) + // RegisterCustomTrainingContainer registers a custom container in the database for custom training jobs + RegisterCustomTrainingContainer(context.Context, *RegisterCustomTrainingContainerRequest) (*RegisterCustomTrainingContainerResponse, error) + // DeleteCustomTrainingContainer deletes a custom container from the database + DeleteCustomTrainingContainer(context.Context, *DeleteCustomTrainingContainerRequest) (*DeleteCustomTrainingContainerResponse, error) mustEmbedUnimplementedMLTrainingServiceServer() } @@ -171,6 +197,12 @@ func (UnimplementedMLTrainingServiceServer) GetTrainingJobLogs(context.Context, func (UnimplementedMLTrainingServiceServer) ListSupportedContainers(context.Context, *ListSupportedContainersRequest) (*ListSupportedContainersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListSupportedContainers not implemented") } +func (UnimplementedMLTrainingServiceServer) RegisterCustomTrainingContainer(context.Context, *RegisterCustomTrainingContainerRequest) (*RegisterCustomTrainingContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterCustomTrainingContainer not implemented") +} +func (UnimplementedMLTrainingServiceServer) DeleteCustomTrainingContainer(context.Context, *DeleteCustomTrainingContainerRequest) (*DeleteCustomTrainingContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteCustomTrainingContainer not implemented") +} func (UnimplementedMLTrainingServiceServer) mustEmbedUnimplementedMLTrainingServiceServer() {} // UnsafeMLTrainingServiceServer may be embedded to opt out of forward compatibility for this service. @@ -328,6 +360,42 @@ func _MLTrainingService_ListSupportedContainers_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } +func _MLTrainingService_RegisterCustomTrainingContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RegisterCustomTrainingContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MLTrainingServiceServer).RegisterCustomTrainingContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MLTrainingServiceServer).RegisterCustomTrainingContainer(ctx, req.(*RegisterCustomTrainingContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MLTrainingService_DeleteCustomTrainingContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCustomTrainingContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MLTrainingServiceServer).DeleteCustomTrainingContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MLTrainingServiceServer).DeleteCustomTrainingContainer(ctx, req.(*DeleteCustomTrainingContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + // MLTrainingService_ServiceDesc is the grpc.ServiceDesc for MLTrainingService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -367,6 +435,14 @@ var MLTrainingService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListSupportedContainers", Handler: _MLTrainingService_ListSupportedContainers_Handler, }, + { + MethodName: "RegisterCustomTrainingContainer", + Handler: _MLTrainingService_RegisterCustomTrainingContainer_Handler, + }, + { + MethodName: "DeleteCustomTrainingContainer", + Handler: _MLTrainingService_DeleteCustomTrainingContainer_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "app/mltraining/v1/ml_training.proto", diff --git a/gen/js/app/mltraining/v1/ml_training_grpc_web_pb.js b/gen/js/app/mltraining/v1/ml_training_grpc_web_pb.js index fc1357b89..ed2fac9ef 100644 --- a/gen/js/app/mltraining/v1/ml_training_grpc_web_pb.js +++ b/gen/js/app/mltraining/v1/ml_training_grpc_web_pb.js @@ -571,5 +571,127 @@ proto.viam.app.mltraining.v1.MLTrainingServicePromiseClient.prototype.listSuppor }; +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest, + * !proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse>} + */ +const methodDescriptor_MLTrainingService_RegisterCustomTrainingContainer = new grpc.web.MethodDescriptor( + '/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer', + grpc.web.MethodType.UNARY, + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest, + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse, + /** + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.deserializeBinary +); + + +/** + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.viam.app.mltraining.v1.MLTrainingServiceClient.prototype.registerCustomTrainingContainer = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer', + request, + metadata || {}, + methodDescriptor_MLTrainingService_RegisterCustomTrainingContainer, + callback); +}; + + +/** + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.viam.app.mltraining.v1.MLTrainingServicePromiseClient.prototype.registerCustomTrainingContainer = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/viam.app.mltraining.v1.MLTrainingService/RegisterCustomTrainingContainer', + request, + metadata || {}, + methodDescriptor_MLTrainingService_RegisterCustomTrainingContainer); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest, + * !proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse>} + */ +const methodDescriptor_MLTrainingService_DeleteCustomTrainingContainer = new grpc.web.MethodDescriptor( + '/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer', + grpc.web.MethodType.UNARY, + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest, + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse, + /** + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.deserializeBinary +); + + +/** + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.viam.app.mltraining.v1.MLTrainingServiceClient.prototype.deleteCustomTrainingContainer = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer', + request, + metadata || {}, + methodDescriptor_MLTrainingService_DeleteCustomTrainingContainer, + callback); +}; + + +/** + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.viam.app.mltraining.v1.MLTrainingServicePromiseClient.prototype.deleteCustomTrainingContainer = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/viam.app.mltraining.v1.MLTrainingService/DeleteCustomTrainingContainer', + request, + metadata || {}, + methodDescriptor_MLTrainingService_DeleteCustomTrainingContainer); +}; + + module.exports = proto.viam.app.mltraining.v1; diff --git a/gen/js/app/mltraining/v1/ml_training_pb.d.ts b/gen/js/app/mltraining/v1/ml_training_pb.d.ts index 3c114e5cb..45cd7e187 100644 --- a/gen/js/app/mltraining/v1/ml_training_pb.d.ts +++ b/gen/js/app/mltraining/v1/ml_training_pb.d.ts @@ -527,6 +527,90 @@ export namespace ListSupportedContainersResponse { } } +export class RegisterCustomTrainingContainerRequest extends jspb.Message { + getOrganizationId(): string; + setOrganizationId(value: string): void; + + getImageUri(): string; + setImageUri(value: string): void; + + getDescription(): string; + setDescription(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): RegisterCustomTrainingContainerRequest.AsObject; + static toObject(includeInstance: boolean, msg: RegisterCustomTrainingContainerRequest): RegisterCustomTrainingContainerRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: RegisterCustomTrainingContainerRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): RegisterCustomTrainingContainerRequest; + static deserializeBinaryFromReader(message: RegisterCustomTrainingContainerRequest, reader: jspb.BinaryReader): RegisterCustomTrainingContainerRequest; +} + +export namespace RegisterCustomTrainingContainerRequest { + export type AsObject = { + organizationId: string, + imageUri: string, + description: string, + } +} + +export class RegisterCustomTrainingContainerResponse extends jspb.Message { + getId(): string; + setId(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): RegisterCustomTrainingContainerResponse.AsObject; + static toObject(includeInstance: boolean, msg: RegisterCustomTrainingContainerResponse): RegisterCustomTrainingContainerResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: RegisterCustomTrainingContainerResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): RegisterCustomTrainingContainerResponse; + static deserializeBinaryFromReader(message: RegisterCustomTrainingContainerResponse, reader: jspb.BinaryReader): RegisterCustomTrainingContainerResponse; +} + +export namespace RegisterCustomTrainingContainerResponse { + export type AsObject = { + id: string, + } +} + +export class DeleteCustomTrainingContainerRequest extends jspb.Message { + getId(): string; + setId(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DeleteCustomTrainingContainerRequest.AsObject; + static toObject(includeInstance: boolean, msg: DeleteCustomTrainingContainerRequest): DeleteCustomTrainingContainerRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DeleteCustomTrainingContainerRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DeleteCustomTrainingContainerRequest; + static deserializeBinaryFromReader(message: DeleteCustomTrainingContainerRequest, reader: jspb.BinaryReader): DeleteCustomTrainingContainerRequest; +} + +export namespace DeleteCustomTrainingContainerRequest { + export type AsObject = { + id: string, + } +} + +export class DeleteCustomTrainingContainerResponse extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DeleteCustomTrainingContainerResponse.AsObject; + static toObject(includeInstance: boolean, msg: DeleteCustomTrainingContainerResponse): DeleteCustomTrainingContainerResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DeleteCustomTrainingContainerResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DeleteCustomTrainingContainerResponse; + static deserializeBinaryFromReader(message: DeleteCustomTrainingContainerResponse, reader: jspb.BinaryReader): DeleteCustomTrainingContainerResponse; +} + +export namespace DeleteCustomTrainingContainerResponse { + export type AsObject = { + } +} + export class Container extends jspb.Message { getKey(): string; setKey(value: string): void; diff --git a/gen/js/app/mltraining/v1/ml_training_pb.js b/gen/js/app/mltraining/v1/ml_training_pb.js index 69cf7b45a..251cacd99 100644 --- a/gen/js/app/mltraining/v1/ml_training_pb.js +++ b/gen/js/app/mltraining/v1/ml_training_pb.js @@ -26,6 +26,8 @@ goog.exportSymbol('proto.viam.app.mltraining.v1.CancelTrainingJobResponse', null goog.exportSymbol('proto.viam.app.mltraining.v1.Container', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.DeleteCompletedTrainingJobRequest', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.DeleteCompletedTrainingJobResponse', null, global); +goog.exportSymbol('proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest', null, global); +goog.exportSymbol('proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.GetTrainingJobLogsRequest', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.GetTrainingJobLogsResponse', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.GetTrainingJobRequest', null, global); @@ -36,6 +38,8 @@ goog.exportSymbol('proto.viam.app.mltraining.v1.ListTrainingJobsRequest', null, goog.exportSymbol('proto.viam.app.mltraining.v1.ListTrainingJobsResponse', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.ModelFramework', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.ModelType', null, global); +goog.exportSymbol('proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest', null, global); +goog.exportSymbol('proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.SubmitCustomTrainingJobRequest', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.SubmitCustomTrainingJobResponse', null, global); goog.exportSymbol('proto.viam.app.mltraining.v1.SubmitTrainingJobRequest', null, global); @@ -422,6 +426,90 @@ if (goog.DEBUG && !COMPILED) { */ proto.viam.app.mltraining.v1.ListSupportedContainersResponse.displayName = 'proto.viam.app.mltraining.v1.ListSupportedContainersResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.displayName = 'proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.displayName = 'proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.displayName = 'proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.displayName = 'proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -4124,6 +4212,557 @@ proto.viam.app.mltraining.v1.ListSupportedContainersResponse.prototype.clearCont +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.toObject = function(includeInstance, msg) { + var f, obj = { + organizationId: jspb.Message.getFieldWithDefault(msg, 1, ""), + imageUri: jspb.Message.getFieldWithDefault(msg, 2, ""), + description: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest; + return proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setOrganizationId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setImageUri(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setDescription(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOrganizationId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getImageUri(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getDescription(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string organization_id = 1; + * @return {string} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.getOrganizationId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} returns this + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.setOrganizationId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string image_uri = 2; + * @return {string} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.getImageUri = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} returns this + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.setImageUri = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string description = 3; + * @return {string} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.getDescription = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest} returns this + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerRequest.prototype.setDescription = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.toObject = function(includeInstance, msg) { + var f, obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse; + return proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse} returns this + */ +proto.viam.app.mltraining.v1.RegisterCustomTrainingContainerResponse.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.toObject = function(includeInstance, msg) { + var f, obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest; + return proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest} returns this + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerRequest.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse; + return proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.mltraining.v1.DeleteCustomTrainingContainerResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/gen/js/app/mltraining/v1/ml_training_pb_service.d.ts b/gen/js/app/mltraining/v1/ml_training_pb_service.d.ts index eb12135bf..4a8da089c 100644 --- a/gen/js/app/mltraining/v1/ml_training_pb_service.d.ts +++ b/gen/js/app/mltraining/v1/ml_training_pb_service.d.ts @@ -76,6 +76,24 @@ type MLTrainingServiceListSupportedContainers = { readonly responseType: typeof app_mltraining_v1_ml_training_pb.ListSupportedContainersResponse; }; +type MLTrainingServiceRegisterCustomTrainingContainer = { + readonly methodName: string; + readonly service: typeof MLTrainingService; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerRequest; + readonly responseType: typeof app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerResponse; +}; + +type MLTrainingServiceDeleteCustomTrainingContainer = { + readonly methodName: string; + readonly service: typeof MLTrainingService; + readonly requestStream: false; + readonly responseStream: false; + readonly requestType: typeof app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerRequest; + readonly responseType: typeof app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerResponse; +}; + export class MLTrainingService { static readonly serviceName: string; static readonly SubmitTrainingJob: MLTrainingServiceSubmitTrainingJob; @@ -86,6 +104,8 @@ export class MLTrainingService { static readonly DeleteCompletedTrainingJob: MLTrainingServiceDeleteCompletedTrainingJob; static readonly GetTrainingJobLogs: MLTrainingServiceGetTrainingJobLogs; static readonly ListSupportedContainers: MLTrainingServiceListSupportedContainers; + static readonly RegisterCustomTrainingContainer: MLTrainingServiceRegisterCustomTrainingContainer; + static readonly DeleteCustomTrainingContainer: MLTrainingServiceDeleteCustomTrainingContainer; } export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } @@ -192,5 +212,23 @@ export class MLTrainingServiceClient { requestMessage: app_mltraining_v1_ml_training_pb.ListSupportedContainersRequest, callback: (error: ServiceError|null, responseMessage: app_mltraining_v1_ml_training_pb.ListSupportedContainersResponse|null) => void ): UnaryResponse; + registerCustomTrainingContainer( + requestMessage: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerResponse|null) => void + ): UnaryResponse; + registerCustomTrainingContainer( + requestMessage: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerRequest, + callback: (error: ServiceError|null, responseMessage: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerResponse|null) => void + ): UnaryResponse; + deleteCustomTrainingContainer( + requestMessage: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerRequest, + metadata: grpc.Metadata, + callback: (error: ServiceError|null, responseMessage: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerResponse|null) => void + ): UnaryResponse; + deleteCustomTrainingContainer( + requestMessage: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerRequest, + callback: (error: ServiceError|null, responseMessage: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerResponse|null) => void + ): UnaryResponse; } diff --git a/gen/js/app/mltraining/v1/ml_training_pb_service.js b/gen/js/app/mltraining/v1/ml_training_pb_service.js index b7c40539c..88846b244 100644 --- a/gen/js/app/mltraining/v1/ml_training_pb_service.js +++ b/gen/js/app/mltraining/v1/ml_training_pb_service.js @@ -82,6 +82,24 @@ MLTrainingService.ListSupportedContainers = { responseType: app_mltraining_v1_ml_training_pb.ListSupportedContainersResponse }; +MLTrainingService.RegisterCustomTrainingContainer = { + methodName: "RegisterCustomTrainingContainer", + service: MLTrainingService, + requestStream: false, + responseStream: false, + requestType: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerRequest, + responseType: app_mltraining_v1_ml_training_pb.RegisterCustomTrainingContainerResponse +}; + +MLTrainingService.DeleteCustomTrainingContainer = { + methodName: "DeleteCustomTrainingContainer", + service: MLTrainingService, + requestStream: false, + responseStream: false, + requestType: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerRequest, + responseType: app_mltraining_v1_ml_training_pb.DeleteCustomTrainingContainerResponse +}; + exports.MLTrainingService = MLTrainingService; function MLTrainingServiceClient(serviceHost, options) { @@ -337,5 +355,67 @@ MLTrainingServiceClient.prototype.listSupportedContainers = function listSupport }; }; +MLTrainingServiceClient.prototype.registerCustomTrainingContainer = function registerCustomTrainingContainer(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(MLTrainingService.RegisterCustomTrainingContainer, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + +MLTrainingServiceClient.prototype.deleteCustomTrainingContainer = function deleteCustomTrainingContainer(requestMessage, metadata, callback) { + if (arguments.length === 2) { + callback = arguments[1]; + } + var client = grpc.unary(MLTrainingService.DeleteCustomTrainingContainer, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onEnd: function (response) { + if (callback) { + if (response.status !== grpc.Code.OK) { + var err = new Error(response.statusMessage); + err.code = response.status; + err.metadata = response.trailers; + callback(err, null); + } else { + callback(null, response.message); + } + } + } + }); + return { + cancel: function () { + callback = null; + client.close(); + } + }; +}; + exports.MLTrainingServiceClient = MLTrainingServiceClient; diff --git a/proto/viam/app/mltraining/v1/ml_training.proto b/proto/viam/app/mltraining/v1/ml_training.proto index d897da295..08a7db30e 100644 --- a/proto/viam/app/mltraining/v1/ml_training.proto +++ b/proto/viam/app/mltraining/v1/ml_training.proto @@ -32,6 +32,12 @@ service MLTrainingService { // ListSupportedContainers gets all the containers one can use for a custom training job. rpc ListSupportedContainers(ListSupportedContainersRequest) returns (ListSupportedContainersResponse); + + // RegisterCustomTrainingContainer registers a custom container in the database for custom training jobs + rpc RegisterCustomTrainingContainer(RegisterCustomTrainingContainerRequest) returns (RegisterCustomTrainingContainerResponse); + + // DeleteCustomTrainingContainer deletes a custom container from the database + rpc DeleteCustomTrainingContainer(DeleteCustomTrainingContainerRequest) returns (DeleteCustomTrainingContainerResponse); } enum ModelType { @@ -187,6 +193,25 @@ message ListSupportedContainersResponse { // } } +message RegisterCustomTrainingContainerRequest { + string organization_id = 1; + + // Docker Hub reference, official images normalize to docker.io/library/:. + string image_uri = 2; + + string description = 3; // will serve as display name +} + +message RegisterCustomTrainingContainerResponse { + string id = 1; +} + +message DeleteCustomTrainingContainerRequest { + string id = 1; +} + +message DeleteCustomTrainingContainerResponse {} + enum Visibility { VISIBILITY_UNSPECIFIED = 0; VISIBILITY_PRIVATE = 1;