diff --git a/apis/docs/v1/docs.md b/apis/docs/v1/docs.md
index f8714aee2bc..3e419eb17b1 100644
--- a/apis/docs/v1/docs.md
+++ b/apis/docs/v1/docs.md
@@ -45,6 +45,9 @@
- [Insert.MultiRequest](#payload-v1-Insert-MultiRequest)
- [Insert.ObjectRequest](#payload-v1-Insert-ObjectRequest)
- [Insert.Request](#payload-v1-Insert-Request)
+ - [Mirror](#payload-v1-Mirror)
+ - [Mirror.Target](#payload-v1-Mirror-Target)
+ - [Mirror.Targets](#payload-v1-Mirror-Targets)
- [Object](#payload-v1-Object)
- [Object.Blob](#payload-v1-Object-Blob)
- [Object.Distance](#payload-v1-Object-Distance)
@@ -104,6 +107,8 @@
- [Update](#vald-v1-Update)
- [apis/proto/v1/vald/upsert.proto](#apis_proto_v1_vald_upsert-proto)
- [Upsert](#vald-v1-Upsert)
+- [apis/proto/v1/mirror/mirror.proto](#apis_proto_v1_mirror_mirror-proto)
+ - [Mirror](#mirror-v1-Mirror)
- [Scalar Value Types](#scalar-value-types)
@@ -477,6 +482,33 @@ Represent the insert request.
| vector | [Object.Vector](#payload-v1-Object-Vector) | | The vector to be inserted. |
| config | [Insert.Config](#payload-v1-Insert-Config) | | The configuration of the insert request. |
+
+
+### Mirror
+
+Mirror related messages.
+
+
+
+### Mirror.Target
+
+Represent server information.
+
+| Field | Type | Label | Description |
+| ----- | ----------------- | ----- | ---------------- |
+| ip | [string](#string) | | The target ip. |
+| port | [uint32](#uint32) | | The target port. |
+
+
+
+### Mirror.Targets
+
+Represent the multiple Target message.
+
+| Field | Type | Label | Description |
+| ------- | ------------------------------------------ | -------- | -------------------------------- |
+| targets | [Mirror.Target](#payload-v1-Mirror-Target) | repeated | The multiple target information. |
+
### Object
@@ -1074,6 +1106,37 @@ Upsert service provides ways to insert/update vectors.
| StreamUpsert | [.payload.v1.Upsert.Request](#payload-v1-Upsert-Request) stream | [.payload.v1.Object.StreamLocation](#payload-v1-Object-StreamLocation) stream | A method to insert/update multiple vectors by bidirectional streaming. |
| MultiUpsert | [.payload.v1.Upsert.MultiRequest](#payload-v1-Upsert-MultiRequest) | [.payload.v1.Object.Locations](#payload-v1-Object-Locations) | A method to insert/update multiple vectors in a single request. |
+
+
+
Top
+
+## apis/proto/v1/mirror/mirror.proto
+
+Copyright (C) 2019-2022 vdaas.org vald team <vald@vdaas.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+### Mirror
+
+Represent the mirror service.
+
+| Method Name | Request Type | Response Type | Description |
+| ----------- | -------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------- |
+| Register | [.payload.v1.Mirror.Targets](#payload-v1-Mirror-Targets) | [.payload.v1.Mirror.Targets](#payload-v1-Mirror-Targets) | Register is the RPC to register other mirror servers. |
+| Advertise | [.payload.v1.Mirror.Targets](#payload-v1-Mirror-Targets) | [.payload.v1.Mirror.Targets](#payload-v1-Mirror-Targets) | Advertise is the RPC to advertise other mirror servers. |
+
## Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
diff --git a/apis/grpc/v1/mirror/mirror.pb.go b/apis/grpc/v1/mirror/mirror.pb.go
new file mode 100644
index 00000000000..c5938c0f7f5
--- /dev/null
+++ b/apis/grpc/v1/mirror/mirror.pb.go
@@ -0,0 +1,112 @@
+//
+// Copyright (C) 2019-2023 vdaas.org vald team
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: apis/proto/v1/mirror/mirror.proto
+
+package mirror
+
+import (
+ reflect "reflect"
+
+ payload "github.com/vdaas/vald/apis/grpc/v1/payload"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+var File_apis_proto_v1_mirror_mirror_proto protoreflect.FileDescriptor
+
+var file_apis_proto_v1_mirror_mirror_proto_rawDesc = []byte{
+ 0x0a, 0x21, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f,
+ 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x23,
+ 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61,
+ 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
+ 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x32, 0xcc, 0x01, 0x0a, 0x06, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5f, 0x0a,
+ 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x61, 0x79, 0x6c,
+ 0x6f, 0x61, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61,
+ 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e,
+ 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x6d, 0x69, 0x72, 0x72,
+ 0x6f, 0x72, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x61,
+ 0x0a, 0x09, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x61,
+ 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e,
+ 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+ 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x6d, 0x69,
+ 0x72, 0x72, 0x6f, 0x72, 0x2f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x3a, 0x01,
+ 0x2a, 0x42, 0x57, 0x0a, 0x1c, 0x6f, 0x72, 0x67, 0x2e, 0x76, 0x64, 0x61, 0x61, 0x73, 0x2e, 0x76,
+ 0x61, 0x6c, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x6d, 0x69, 0x72, 0x72, 0x6f,
+ 0x72, 0x42, 0x0a, 0x56, 0x61, 0x6c, 0x64, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x01, 0x5a,
+ 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x64, 0x61, 0x61,
+ 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63,
+ 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
+}
+
+var file_apis_proto_v1_mirror_mirror_proto_goTypes = []interface{}{
+ (*payload.Mirror_Targets)(nil), // 0: payload.v1.Mirror.Targets
+}
+var file_apis_proto_v1_mirror_mirror_proto_depIdxs = []int32{
+ 0, // 0: mirror.v1.Mirror.Register:input_type -> payload.v1.Mirror.Targets
+ 0, // 1: mirror.v1.Mirror.Advertise:input_type -> payload.v1.Mirror.Targets
+ 0, // 2: mirror.v1.Mirror.Register:output_type -> payload.v1.Mirror.Targets
+ 0, // 3: mirror.v1.Mirror.Advertise:output_type -> payload.v1.Mirror.Targets
+ 2, // [2:4] is the sub-list for method output_type
+ 0, // [0:2] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_apis_proto_v1_mirror_mirror_proto_init() }
+func file_apis_proto_v1_mirror_mirror_proto_init() {
+ if File_apis_proto_v1_mirror_mirror_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_apis_proto_v1_mirror_mirror_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 0,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_apis_proto_v1_mirror_mirror_proto_goTypes,
+ DependencyIndexes: file_apis_proto_v1_mirror_mirror_proto_depIdxs,
+ }.Build()
+ File_apis_proto_v1_mirror_mirror_proto = out.File
+ file_apis_proto_v1_mirror_mirror_proto_rawDesc = nil
+ file_apis_proto_v1_mirror_mirror_proto_goTypes = nil
+ file_apis_proto_v1_mirror_mirror_proto_depIdxs = nil
+}
diff --git a/apis/grpc/v1/mirror/mirror_vtproto.pb.go b/apis/grpc/v1/mirror/mirror_vtproto.pb.go
new file mode 100644
index 00000000000..d07e0eab6dd
--- /dev/null
+++ b/apis/grpc/v1/mirror/mirror_vtproto.pb.go
@@ -0,0 +1,165 @@
+//
+// Copyright (C) 2019-2023 vdaas.org vald team
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package mirror
+
+import (
+ context "context"
+
+ payload "github.com/vdaas/vald/apis/grpc/v1/payload"
+ codes "github.com/vdaas/vald/internal/net/grpc/codes"
+ status "github.com/vdaas/vald/internal/net/grpc/status"
+ grpc "google.golang.org/grpc"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// MirrorClient is the client API for Mirror service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type MirrorClient interface {
+ // Register is the RPC to register other mirror servers.
+ Register(ctx context.Context, in *payload.Mirror_Targets, opts ...grpc.CallOption) (*payload.Mirror_Targets, error)
+ // Advertise is the RPC to advertise other mirror servers.
+ Advertise(ctx context.Context, in *payload.Mirror_Targets, opts ...grpc.CallOption) (*payload.Mirror_Targets, error)
+}
+
+type mirrorClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewMirrorClient(cc grpc.ClientConnInterface) MirrorClient {
+ return &mirrorClient{cc}
+}
+
+func (c *mirrorClient) Register(ctx context.Context, in *payload.Mirror_Targets, opts ...grpc.CallOption) (*payload.Mirror_Targets, error) {
+ out := new(payload.Mirror_Targets)
+ err := c.cc.Invoke(ctx, "/mirror.v1.Mirror/Register", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *mirrorClient) Advertise(ctx context.Context, in *payload.Mirror_Targets, opts ...grpc.CallOption) (*payload.Mirror_Targets, error) {
+ out := new(payload.Mirror_Targets)
+ err := c.cc.Invoke(ctx, "/mirror.v1.Mirror/Advertise", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// MirrorServer is the server API for Mirror service.
+// All implementations must embed UnimplementedMirrorServer
+// for forward compatibility
+type MirrorServer interface {
+ // Register is the RPC to register other mirror servers.
+ Register(context.Context, *payload.Mirror_Targets) (*payload.Mirror_Targets, error)
+ // Advertise is the RPC to advertise other mirror servers.
+ Advertise(context.Context, *payload.Mirror_Targets) (*payload.Mirror_Targets, error)
+ mustEmbedUnimplementedMirrorServer()
+}
+
+// UnimplementedMirrorServer must be embedded to have forward compatible implementations.
+type UnimplementedMirrorServer struct {
+}
+
+func (UnimplementedMirrorServer) Register(context.Context, *payload.Mirror_Targets) (*payload.Mirror_Targets, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Register not implemented")
+}
+func (UnimplementedMirrorServer) Advertise(context.Context, *payload.Mirror_Targets) (*payload.Mirror_Targets, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Advertise not implemented")
+}
+func (UnimplementedMirrorServer) mustEmbedUnimplementedMirrorServer() {}
+
+// UnsafeMirrorServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to MirrorServer will
+// result in compilation errors.
+type UnsafeMirrorServer interface {
+ mustEmbedUnimplementedMirrorServer()
+}
+
+func RegisterMirrorServer(s grpc.ServiceRegistrar, srv MirrorServer) {
+ s.RegisterService(&Mirror_ServiceDesc, srv)
+}
+
+func _Mirror_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(payload.Mirror_Targets)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(MirrorServer).Register(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/mirror.v1.Mirror/Register",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(MirrorServer).Register(ctx, req.(*payload.Mirror_Targets))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Mirror_Advertise_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(payload.Mirror_Targets)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(MirrorServer).Advertise(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/mirror.v1.Mirror/Advertise",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(MirrorServer).Advertise(ctx, req.(*payload.Mirror_Targets))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Mirror_ServiceDesc is the grpc.ServiceDesc for Mirror service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Mirror_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "mirror.v1.Mirror",
+ HandlerType: (*MirrorServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Register",
+ Handler: _Mirror_Register_Handler,
+ },
+ {
+ MethodName: "Advertise",
+ Handler: _Mirror_Advertise_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "apis/proto/v1/mirror/mirror.proto",
+}
diff --git a/apis/grpc/v1/payload/payload_vtproto.pb.go b/apis/grpc/v1/payload/payload_vtproto.pb.go
index b7ed81cd2a0..154efbe6ae4 100644
--- a/apis/grpc/v1/payload/payload_vtproto.pb.go
+++ b/apis/grpc/v1/payload/payload_vtproto.pb.go
@@ -7131,6 +7131,129 @@ func (m *Info) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *Mirror_Target) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Mirror_Target) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Mirror_Target) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Port != 0 {
+ i = encodeVarint(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Ip) > 0 {
+ i -= len(m.Ip)
+ copy(dAtA[i:], m.Ip)
+ i = encodeVarint(dAtA, i, uint64(len(m.Ip)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Mirror_Targets) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Mirror_Targets) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Mirror_Targets) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Targets) > 0 {
+ for iNdEx := len(m.Targets) - 1; iNdEx >= 0; iNdEx-- {
+ size, err := m.Targets[iNdEx].MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Mirror) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Mirror) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *Mirror) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *Empty) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
@@ -8476,6 +8599,49 @@ func (m *Info) SizeVT() (n int) {
return n
}
+func (m *Mirror_Target) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Ip)
+ if l > 0 {
+ n += 1 + l + sov(uint64(l))
+ }
+ if m.Port != 0 {
+ n += 1 + sov(uint64(m.Port))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Mirror_Targets) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Targets) > 0 {
+ for _, e := range m.Targets {
+ l = e.SizeVT()
+ n += 1 + l + sov(uint64(l))
+ }
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *Mirror) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += len(m.unknownFields)
+ return n
+}
+
func (m *Empty) SizeVT() (n int) {
if m == nil {
return 0
@@ -15825,6 +15991,244 @@ func (m *Info) UnmarshalVT(dAtA []byte) error {
}
return nil
}
+func (m *Mirror_Target) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Mirror_Target: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Mirror_Target: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ip", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Ip = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ }
+ m.Port = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Port |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Mirror_Targets) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Mirror_Targets: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Mirror_Targets: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Targets", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Targets = append(m.Targets, &Mirror_Target{})
+ if err := m.Targets[len(m.Targets)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Mirror) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Mirror: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Mirror: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *Empty) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/apis/proto/v1/mirror/mirror.proto b/apis/proto/v1/mirror/mirror.proto
new file mode 100644
index 00000000000..d61f8ac692c
--- /dev/null
+++ b/apis/proto/v1/mirror/mirror.proto
@@ -0,0 +1,47 @@
+//
+// Copyright (C) 2019-2023 vdaas.org vald team
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+syntax = "proto3";
+
+package mirror.v1;
+
+import "apis/proto/v1/payload/payload.proto";
+import "github.com/googleapis/googleapis/google/api/annotations.proto";
+
+option go_package = "github.com/vdaas/vald/apis/grpc/v1/mirror";
+option java_multiple_files = true;
+option java_package = "org.vdaas.vald.api.v1.mirror";
+option java_outer_classname = "ValdMirror";
+
+
+// Represent the mirror service.
+service Mirror {
+
+ // Register is the RPC to register other mirror servers.
+ rpc Register(payload.v1.Mirror.Targets) returns (payload.v1.Mirror.Targets) {
+ option (google.api.http) = {
+ post : "/mirror/register"
+ body : "*"
+ };
+ }
+
+ // Advertise is the RPC to advertise other mirror servers.
+ rpc Advertise(payload.v1.Mirror.Targets) returns (payload.v1.Mirror.Targets) {
+ option (google.api.http) = {
+ post : "/mirror/advertise"
+ body : "*"
+ };
+ }
+}
diff --git a/apis/proto/v1/payload/payload.proto b/apis/proto/v1/payload/payload.proto
index a23954ba1de..1cc5e83e9bd 100644
--- a/apis/proto/v1/payload/payload.proto
+++ b/apis/proto/v1/payload/payload.proto
@@ -534,5 +534,23 @@ message Info {
message IPs { repeated string ip = 1; }
}
+// Mirror related messages.
+message Mirror {
+
+ // Represent server information.
+ message Target {
+ // The target ip.
+ string ip = 1;
+ // The target port.
+ uint32 port = 2;
+ }
+
+ // Represent the multiple Target message.
+ message Targets {
+ // The multiple target information.
+ repeated Target targets = 1;
+ }
+}
+
// Represent an empty message.
message Empty {}
diff --git a/apis/swagger/v1/mirror/apis/proto/v1/mirror/mirror.swagger.json b/apis/swagger/v1/mirror/apis/proto/v1/mirror/mirror.swagger.json
new file mode 100644
index 00000000000..ba39fe84206
--- /dev/null
+++ b/apis/swagger/v1/mirror/apis/proto/v1/mirror/mirror.swagger.json
@@ -0,0 +1,139 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "apis/proto/v1/mirror/mirror.proto",
+ "version": "version not set"
+ },
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "paths": {
+ "/mirror/advertise": {
+ "post": {
+ "summary": "Advertise is the RPC to advertise other mirror servers.",
+ "operationId": "Mirror_Advertise",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/MirrorTargets"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/runtimeError"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/MirrorTargets"
+ }
+ }
+ ],
+ "tags": ["Mirror"]
+ }
+ },
+ "/mirror/register": {
+ "post": {
+ "summary": "Register is the RPC to register other mirror servers.",
+ "operationId": "Mirror_Register",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/MirrorTargets"
+ }
+ },
+ "default": {
+ "description": "An unexpected error response.",
+ "schema": {
+ "$ref": "#/definitions/runtimeError"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/MirrorTargets"
+ }
+ }
+ ],
+ "tags": ["Mirror"]
+ }
+ }
+ },
+ "definitions": {
+ "MirrorTargets": {
+ "type": "object",
+ "properties": {
+ "targets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/v1MirrorTarget"
+ },
+ "description": "The multiple target information."
+ }
+ },
+ "description": "Represent the multiple Target message."
+ },
+ "protobufAny": {
+ "type": "object",
+ "properties": {
+ "typeUrl": {
+ "type": "string",
+ "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
+ },
+ "value": {
+ "type": "string",
+ "format": "byte",
+ "description": "Must be a valid serialized protocol buffer of the above specified type."
+ }
+ },
+ "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\nExample 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\nExample 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }"
+ },
+ "runtimeError": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ },
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "message": {
+ "type": "string"
+ },
+ "details": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/protobufAny"
+ }
+ }
+ }
+ },
+ "v1MirrorTarget": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "The target ip."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent server information."
+ }
+ }
+}
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/filter.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/filter.swagger.json
index 506dea78946..db4801c579d 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/filter.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/filter.swagger.json
@@ -257,21 +257,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectBlob": {
"type": "object",
"properties": {
@@ -405,11 +390,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -473,13 +458,28 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
},
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
+ },
"v1InsertConfig": {
"type": "object",
"properties": {
@@ -524,7 +524,7 @@
"description": "The configuration of the insert request."
},
"vectorizer": {
- "$ref": "#/definitions/FilterTarget",
+ "$ref": "#/definitions/v1FilterTarget",
"description": "Filter configurations."
}
},
@@ -624,7 +624,7 @@
"description": "The configuration of the search request."
},
"vectorizer": {
- "$ref": "#/definitions/FilterTarget",
+ "$ref": "#/definitions/v1FilterTarget",
"description": "Filter configuration."
}
},
@@ -678,7 +678,7 @@
"description": "The configuration of the update request."
},
"vectorizer": {
- "$ref": "#/definitions/FilterTarget",
+ "$ref": "#/definitions/v1FilterTarget",
"description": "Filter target."
}
},
@@ -732,7 +732,7 @@
"description": "The configuration of the upsert request."
},
"vectorizer": {
- "$ref": "#/definitions/FilterTarget",
+ "$ref": "#/definitions/v1FilterTarget",
"description": "Filter target."
}
},
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/insert.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/insert.swagger.json
index 5e3223d7f0c..d7d0a6986a2 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/insert.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/insert.swagger.json
@@ -71,21 +71,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectLocations": {
"type": "object",
"properties": {
@@ -151,11 +136,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -219,13 +204,28 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
},
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
+ },
"v1InsertConfig": {
"type": "object",
"properties": {
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/object.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/object.swagger.json
index c7407c88837..1be8eabe4e1 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/object.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/object.swagger.json
@@ -67,21 +67,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectID": {
"type": "object",
"properties": {
@@ -144,11 +129,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -212,12 +197,27 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
+ },
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
}
}
}
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/remove.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/remove.swagger.json
index 36b4cf8f674..ad593dfa0b5 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/remove.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/remove.swagger.json
@@ -127,11 +127,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/search.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/search.swagger.json
index 4345256f6c0..ada59000523 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/search.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/search.swagger.json
@@ -257,21 +257,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectDistance": {
"type": "object",
"properties": {
@@ -391,11 +376,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -459,13 +444,28 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
},
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
+ },
"v1SearchConfig": {
"type": "object",
"properties": {
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/update.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/update.swagger.json
index 2c026dd9d34..3cdc3ba7292 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/update.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/update.swagger.json
@@ -71,21 +71,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectLocations": {
"type": "object",
"properties": {
@@ -151,11 +136,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -219,13 +204,28 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
},
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
+ },
"v1ObjectLocation": {
"type": "object",
"properties": {
diff --git a/apis/swagger/v1/vald/apis/proto/v1/vald/upsert.swagger.json b/apis/swagger/v1/vald/apis/proto/v1/vald/upsert.swagger.json
index 59f7f2120c1..1dd9ac1ff30 100644
--- a/apis/swagger/v1/vald/apis/proto/v1/vald/upsert.swagger.json
+++ b/apis/swagger/v1/vald/apis/proto/v1/vald/upsert.swagger.json
@@ -71,21 +71,6 @@
}
},
"definitions": {
- "FilterTarget": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The target hostname."
- },
- "port": {
- "type": "integer",
- "format": "int64",
- "description": "The target port."
- }
- },
- "description": "Represent the target filter server."
- },
"ObjectLocations": {
"type": "object",
"properties": {
@@ -151,11 +136,11 @@
"code": {
"type": "integer",
"format": "int32",
- "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
+ "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
},
"message": {
"type": "string",
- "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
+ "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."
},
"details": {
"type": "array",
@@ -219,13 +204,28 @@
"targets": {
"type": "array",
"items": {
- "$ref": "#/definitions/FilterTarget"
+ "$ref": "#/definitions/v1FilterTarget"
},
"description": "Represent the filter target configuration."
}
},
"description": "Represent filter configuration."
},
+ "v1FilterTarget": {
+ "type": "object",
+ "properties": {
+ "host": {
+ "type": "string",
+ "description": "The target hostname."
+ },
+ "port": {
+ "type": "integer",
+ "format": "int64",
+ "description": "The target port."
+ }
+ },
+ "description": "Represent the target filter server."
+ },
"v1ObjectLocation": {
"type": "object",
"properties": {