diff --git a/CHANGELOG.md b/CHANGELOG.md index 77416986d8..ca5130c251 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Changelog for NeoFS Node - Indexes inspection command to neofs-lens (#2882) - Add objects sanity checker to neofs-lens (#2506) - Support for 0.20.0+ neofs-contract archive format (#2872) +- `neofs-cli control object status` command (#2886) ### Fixed - Control service's Drop call does not clean metabase (#2822) diff --git a/cmd/neofs-cli/modules/control/objects.go b/cmd/neofs-cli/modules/control/objects.go new file mode 100644 index 0000000000..7f6280a2d8 --- /dev/null +++ b/cmd/neofs-cli/modules/control/objects.go @@ -0,0 +1,92 @@ +package control + +import ( + "fmt" + + rawclient "github.com/nspcc-dev/neofs-api-go/v2/rpc/client" + "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/commonflags" + "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/key" + "github.com/nspcc-dev/neofs-node/pkg/services/control" + oid "github.com/nspcc-dev/neofs-sdk-go/object/id" + "github.com/spf13/cobra" +) + +const objectFlag = "object" + +var objectCmd = &cobra.Command{ + Use: "object", + Short: "Direct object operations with storage engine", +} + +var objectStatusCmd = &cobra.Command{ + Use: "status", + Short: "Check current object status", + Args: cobra.NoArgs, + SilenceUsage: true, + RunE: objectStatus, +} + +func objectStatus(cmd *cobra.Command, _ []string) error { + ctx, cancel := commonflags.GetCommandContext(cmd) + defer cancel() + + pk := key.Get(cmd) + addressRaw, err := cmd.Flags().GetString(objectFlag) + if err != nil { + return fmt.Errorf("reading %s flag: %w", objectFlag, err) + } + + var sdkAddr oid.Address + err = sdkAddr.DecodeString(addressRaw) + if err != nil { + return fmt.Errorf("validating address (%s): %w", addressRaw, err) + } + + var resp *control.ObjectStatusResponse + req := &control.ObjectStatusRequest{ + Body: &control.ObjectStatusRequest_Body{ + ObjectAddress: addressRaw, + }, + } + signRequest(cmd, pk, req) + + cli := getClient(ctx, cmd) + + err = cli.ExecRaw(func(client *rawclient.Client) error { + resp, err = control.ObjectStatus(client, req) + return err + }) + if err != nil { + return fmt.Errorf("rpc error: %w", err) + } + + verifyResponse(cmd, resp.GetSignature(), resp.GetBody()) + + shards := resp.GetBody().GetShards() + if len(shards) == 0 { + cmd.Println("") + return nil + } + + for _, shard := range shards { + cmd.Printf("Shard ID: %s\n", shard.ShardId) + storages := shard.GetStorages() + if len(storages) == 0 { + cmd.Println("\t") + continue + } + + for _, storage := range storages { + cmd.Printf("\t%s: %s\n", storage.Type, storage.Status) + } + } + + return nil +} + +func initObjectStatusFlags() { + initControlFlags(objectStatusCmd) + + flags := objectStatusCmd.Flags() + flags.String(objectFlag, "", "Object address") +} diff --git a/cmd/neofs-cli/modules/control/root.go b/cmd/neofs-cli/modules/control/root.go index 660be77934..c2848bfe1a 100644 --- a/cmd/neofs-cli/modules/control/root.go +++ b/cmd/neofs-cli/modules/control/root.go @@ -27,12 +27,17 @@ const ( ) func init() { + objectCmd.AddCommand( + objectStatusCmd, + ) + Cmd.AddCommand( healthCheckCmd, setNetmapStatusCmd, dropObjectsCmd, shardsCmd, synchronizeTreeCmd, + objectCmd, ) initControlHealthCheckCmd() @@ -40,4 +45,5 @@ func init() { initControlDropObjectsCmd() initControlShardsCmd() initControlSynchronizeTreeCmd() + initObjectStatusFlags() } diff --git a/pkg/services/control/convert.go b/pkg/services/control/convert.go index 041af61e4e..e32bbcbdcc 100644 --- a/pkg/services/control/convert.go +++ b/pkg/services/control/convert.go @@ -200,3 +200,21 @@ func (w *flushCacheResponseWrapper) FromGRPCMessage(m grpc.Message) error { w.FlushCacheResponse = r return nil } + +type objectStatusResponseWrapper struct { + *ObjectStatusResponse +} + +func (w *objectStatusResponseWrapper) ToGRPCMessage() grpc.Message { + return w.ObjectStatusResponse +} + +func (w *objectStatusResponseWrapper) FromGRPCMessage(m grpc.Message) error { + r, ok := m.(*ObjectStatusResponse) + if !ok { + return message.NewUnexpectedMessageType(m, (*ObjectStatusResponse)(nil)) + } + + w.ObjectStatusResponse = r + return nil +} diff --git a/pkg/services/control/rpc.go b/pkg/services/control/rpc.go index b0be2a7f25..303fe6937c 100644 --- a/pkg/services/control/rpc.go +++ b/pkg/services/control/rpc.go @@ -18,6 +18,7 @@ const ( rpcSynchronizeTree = "SynchronizeTree" rpcEvacuateShard = "EvacuateShard" rpcFlushCache = "FlushCache" + rpcObjectStatus = "ObjectStatus" ) // HealthCheck executes ControlService.HealthCheck RPC. @@ -191,3 +192,16 @@ func FlushCache(cli *client.Client, req *FlushCacheRequest, opts ...client.CallO return wResp.FlushCacheResponse, nil } + +// ObjectStatus executes ControlService.ObjectStatus RPC. +func ObjectStatus(cli *client.Client, req *ObjectStatusRequest, opts ...client.CallOption) (*ObjectStatusResponse, error) { + wResp := &objectStatusResponseWrapper{new(ObjectStatusResponse)} + wReq := &requestWrapper{m: req} + + err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcObjectStatus), wReq, wResp, opts...) + if err != nil { + return nil, err + } + + return wResp.ObjectStatusResponse, nil +} diff --git a/pkg/services/control/server/object_status.go b/pkg/services/control/server/object_status.go new file mode 100644 index 0000000000..2f3f9d887a --- /dev/null +++ b/pkg/services/control/server/object_status.go @@ -0,0 +1,94 @@ +package control + +import ( + "context" + "fmt" + "strings" + + "github.com/nspcc-dev/neofs-node/pkg/services/control" + oid "github.com/nspcc-dev/neofs-sdk-go/object/id" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (s *Server) ObjectStatus(_ context.Context, request *control.ObjectStatusRequest) (*control.ObjectStatusResponse, error) { + err := s.isValidRequest(request) + if err != nil { + return nil, status.Error(codes.PermissionDenied, err.Error()) + } + + // check availability + err = s.ready() + if err != nil { + return nil, err + } + + var addr oid.Address + err = addr.DecodeString(request.GetBody().GetObjectAddress()) + if err != nil { + return nil, status.Errorf(codes.InvalidArgument, "parsing object address: %s", err) + } + + st, err := s.storage.ObjectStatus(addr) + if err != nil { + return nil, status.Errorf(codes.Internal, "storage engine error: %s", err) + } + + resp := &control.ObjectStatusResponse{ + Body: &control.ObjectStatusResponse_Body{}, + } + + for _, sh := range st.Shards { + respSh := new(control.ObjectStatusResponse_Body_Shard) + respSh.ShardId = sh.ID + + if len(sh.Shard.Metabase.State) == 0 { + // can be reconsidered since it is possible to get + // resynchronized state when meta knows nothing about + // stored objects in blob; however, it is a control + // service, not a debug util + continue + } + + respSh.Storages = append(respSh.Storages, &control.ObjectStatusResponse_Body_Shard_Status{ + Type: "metabase", + Status: strings.Join(sh.Shard.Metabase.State, ","), + }) + + for _, subStorage := range sh.Shard.Blob.Substorages { + respSh.Storages = append(respSh.Storages, + &control.ObjectStatusResponse_Body_Shard_Status{ + Type: subStorage.Type, + Status: fmt.Sprintf("path: %q", subStorage.Path), + }, + ) + } + + var wcStatus string + switch { + case sh.Shard.Writecache.PathDB != "": + wcStatus = fmt.Sprintf("database path: %q", sh.Shard.Writecache.PathDB) + case sh.Shard.Writecache.PathFSTree != "": + wcStatus = fmt.Sprintf("fsTree path: %q", sh.Shard.Writecache.PathFSTree) + } + + // it can be turned off, it is OK + if wcStatus != "" { + respSh.Storages = append(respSh.Storages, + &control.ObjectStatusResponse_Body_Shard_Status{ + Type: "write-cache", + Status: wcStatus, + }, + ) + } + + resp.Body.Shards = append(resp.Body.Shards, respSh) + } + + err = SignMessage(s.key, resp) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return resp, nil +} diff --git a/pkg/services/control/service.pb.go b/pkg/services/control/service.pb.go index 9130d41fab..d6ef51a5c0 100644 --- a/pkg/services/control/service.pb.go +++ b/pkg/services/control/service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc v4.25.1 // source: pkg/services/control/service.proto package control @@ -1172,6 +1172,122 @@ func (x *FlushCacheResponse) GetSignature() *Signature { return nil } +// ObjectStatus request. +type ObjectStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Body of object status request message. + Body *ObjectStatusRequest_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` + // Body signature. + Signature *Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *ObjectStatusRequest) Reset() { + *x = ObjectStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusRequest) ProtoMessage() {} + +func (x *ObjectStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusRequest.ProtoReflect.Descriptor instead. +func (*ObjectStatusRequest) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{20} +} + +func (x *ObjectStatusRequest) GetBody() *ObjectStatusRequest_Body { + if x != nil { + return x.Body + } + return nil +} + +func (x *ObjectStatusRequest) GetSignature() *Signature { + if x != nil { + return x.Signature + } + return nil +} + +// ObjectStatus response. +type ObjectStatusResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Body of object status response message. + Body *ObjectStatusResponse_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` + // Body signature. + Signature *Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *ObjectStatusResponse) Reset() { + *x = ObjectStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusResponse) ProtoMessage() {} + +func (x *ObjectStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusResponse.ProtoReflect.Descriptor instead. +func (*ObjectStatusResponse) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{21} +} + +func (x *ObjectStatusResponse) GetBody() *ObjectStatusResponse_Body { + if x != nil { + return x.Body + } + return nil +} + +func (x *ObjectStatusResponse) GetSignature() *Signature { + if x != nil { + return x.Signature + } + return nil +} + // Health check request body. type HealthCheckRequest_Body struct { state protoimpl.MessageState @@ -1182,7 +1298,7 @@ type HealthCheckRequest_Body struct { func (x *HealthCheckRequest_Body) Reset() { *x = HealthCheckRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[20] + mi := &file_pkg_services_control_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1195,7 +1311,7 @@ func (x *HealthCheckRequest_Body) String() string { func (*HealthCheckRequest_Body) ProtoMessage() {} func (x *HealthCheckRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[20] + mi := &file_pkg_services_control_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1226,7 +1342,7 @@ type HealthCheckResponse_Body struct { func (x *HealthCheckResponse_Body) Reset() { *x = HealthCheckResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[21] + mi := &file_pkg_services_control_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +1355,7 @@ func (x *HealthCheckResponse_Body) String() string { func (*HealthCheckResponse_Body) ProtoMessage() {} func (x *HealthCheckResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[21] + mi := &file_pkg_services_control_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1290,7 +1406,7 @@ type SetNetmapStatusRequest_Body struct { func (x *SetNetmapStatusRequest_Body) Reset() { *x = SetNetmapStatusRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[22] + mi := &file_pkg_services_control_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1303,7 +1419,7 @@ func (x *SetNetmapStatusRequest_Body) String() string { func (*SetNetmapStatusRequest_Body) ProtoMessage() {} func (x *SetNetmapStatusRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[22] + mi := &file_pkg_services_control_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1343,7 +1459,7 @@ type SetNetmapStatusResponse_Body struct { func (x *SetNetmapStatusResponse_Body) Reset() { *x = SetNetmapStatusResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[23] + mi := &file_pkg_services_control_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1356,7 +1472,7 @@ func (x *SetNetmapStatusResponse_Body) String() string { func (*SetNetmapStatusResponse_Body) ProtoMessage() {} func (x *SetNetmapStatusResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[23] + mi := &file_pkg_services_control_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1386,7 +1502,7 @@ type DropObjectsRequest_Body struct { func (x *DropObjectsRequest_Body) Reset() { *x = DropObjectsRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[24] + mi := &file_pkg_services_control_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1399,7 +1515,7 @@ func (x *DropObjectsRequest_Body) String() string { func (*DropObjectsRequest_Body) ProtoMessage() {} func (x *DropObjectsRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[24] + mi := &file_pkg_services_control_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1548,7 @@ type DropObjectsResponse_Body struct { func (x *DropObjectsResponse_Body) Reset() { *x = DropObjectsResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[25] + mi := &file_pkg_services_control_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1445,7 +1561,7 @@ func (x *DropObjectsResponse_Body) String() string { func (*DropObjectsResponse_Body) ProtoMessage() {} func (x *DropObjectsResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[25] + mi := &file_pkg_services_control_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1471,7 +1587,7 @@ type ListShardsRequest_Body struct { func (x *ListShardsRequest_Body) Reset() { *x = ListShardsRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[26] + mi := &file_pkg_services_control_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1484,7 +1600,7 @@ func (x *ListShardsRequest_Body) String() string { func (*ListShardsRequest_Body) ProtoMessage() {} func (x *ListShardsRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[26] + mi := &file_pkg_services_control_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1513,7 +1629,7 @@ type ListShardsResponse_Body struct { func (x *ListShardsResponse_Body) Reset() { *x = ListShardsResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[27] + mi := &file_pkg_services_control_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1526,7 +1642,7 @@ func (x *ListShardsResponse_Body) String() string { func (*ListShardsResponse_Body) ProtoMessage() {} func (x *ListShardsResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[27] + mi := &file_pkg_services_control_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1566,7 +1682,7 @@ type SetShardModeRequest_Body struct { func (x *SetShardModeRequest_Body) Reset() { *x = SetShardModeRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[28] + mi := &file_pkg_services_control_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1579,7 +1695,7 @@ func (x *SetShardModeRequest_Body) String() string { func (*SetShardModeRequest_Body) ProtoMessage() {} func (x *SetShardModeRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[28] + mi := &file_pkg_services_control_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1626,7 +1742,7 @@ type SetShardModeResponse_Body struct { func (x *SetShardModeResponse_Body) Reset() { *x = SetShardModeResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[29] + mi := &file_pkg_services_control_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1639,7 +1755,7 @@ func (x *SetShardModeResponse_Body) String() string { func (*SetShardModeResponse_Body) ProtoMessage() {} func (x *SetShardModeResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[29] + mi := &file_pkg_services_control_service_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1672,7 +1788,7 @@ type DumpShardRequest_Body struct { func (x *DumpShardRequest_Body) Reset() { *x = DumpShardRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[30] + mi := &file_pkg_services_control_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1801,7 @@ func (x *DumpShardRequest_Body) String() string { func (*DumpShardRequest_Body) ProtoMessage() {} func (x *DumpShardRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[30] + mi := &file_pkg_services_control_service_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1732,7 +1848,7 @@ type DumpShardResponse_Body struct { func (x *DumpShardResponse_Body) Reset() { *x = DumpShardResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[31] + mi := &file_pkg_services_control_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1745,7 +1861,7 @@ func (x *DumpShardResponse_Body) String() string { func (*DumpShardResponse_Body) ProtoMessage() {} func (x *DumpShardResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[31] + mi := &file_pkg_services_control_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1778,7 +1894,7 @@ type RestoreShardRequest_Body struct { func (x *RestoreShardRequest_Body) Reset() { *x = RestoreShardRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[32] + mi := &file_pkg_services_control_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1791,7 +1907,7 @@ func (x *RestoreShardRequest_Body) String() string { func (*RestoreShardRequest_Body) ProtoMessage() {} func (x *RestoreShardRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[32] + mi := &file_pkg_services_control_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1954,7 @@ type RestoreShardResponse_Body struct { func (x *RestoreShardResponse_Body) Reset() { *x = RestoreShardResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[33] + mi := &file_pkg_services_control_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1851,7 +1967,7 @@ func (x *RestoreShardResponse_Body) String() string { func (*RestoreShardResponse_Body) ProtoMessage() {} func (x *RestoreShardResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[33] + mi := &file_pkg_services_control_service_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1882,7 +1998,7 @@ type SynchronizeTreeRequest_Body struct { func (x *SynchronizeTreeRequest_Body) Reset() { *x = SynchronizeTreeRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[34] + mi := &file_pkg_services_control_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1895,7 +2011,7 @@ func (x *SynchronizeTreeRequest_Body) String() string { func (*SynchronizeTreeRequest_Body) ProtoMessage() {} func (x *SynchronizeTreeRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[34] + mi := &file_pkg_services_control_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1942,7 +2058,7 @@ type SynchronizeTreeResponse_Body struct { func (x *SynchronizeTreeResponse_Body) Reset() { *x = SynchronizeTreeResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[35] + mi := &file_pkg_services_control_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1955,7 +2071,7 @@ func (x *SynchronizeTreeResponse_Body) String() string { func (*SynchronizeTreeResponse_Body) ProtoMessage() {} func (x *SynchronizeTreeResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[35] + mi := &file_pkg_services_control_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1986,7 +2102,7 @@ type EvacuateShardRequest_Body struct { func (x *EvacuateShardRequest_Body) Reset() { *x = EvacuateShardRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[36] + mi := &file_pkg_services_control_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1999,7 +2115,7 @@ func (x *EvacuateShardRequest_Body) String() string { func (*EvacuateShardRequest_Body) ProtoMessage() {} func (x *EvacuateShardRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[36] + mi := &file_pkg_services_control_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2041,7 +2157,7 @@ type EvacuateShardResponse_Body struct { func (x *EvacuateShardResponse_Body) Reset() { *x = EvacuateShardResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[37] + mi := &file_pkg_services_control_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2054,7 +2170,7 @@ func (x *EvacuateShardResponse_Body) String() string { func (*EvacuateShardResponse_Body) ProtoMessage() {} func (x *EvacuateShardResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[37] + mi := &file_pkg_services_control_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2090,7 +2206,7 @@ type FlushCacheRequest_Body struct { func (x *FlushCacheRequest_Body) Reset() { *x = FlushCacheRequest_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[38] + mi := &file_pkg_services_control_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2103,7 +2219,7 @@ func (x *FlushCacheRequest_Body) String() string { func (*FlushCacheRequest_Body) ProtoMessage() {} func (x *FlushCacheRequest_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[38] + mi := &file_pkg_services_control_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2136,7 +2252,7 @@ type FlushCacheResponse_Body struct { func (x *FlushCacheResponse_Body) Reset() { *x = FlushCacheResponse_Body{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_services_control_service_proto_msgTypes[39] + mi := &file_pkg_services_control_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2149,7 +2265,7 @@ func (x *FlushCacheResponse_Body) String() string { func (*FlushCacheResponse_Body) ProtoMessage() {} func (x *FlushCacheResponse_Body) ProtoReflect() protoreflect.Message { - mi := &file_pkg_services_control_service_proto_msgTypes[39] + mi := &file_pkg_services_control_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2165,6 +2281,220 @@ func (*FlushCacheResponse_Body) Descriptor() ([]byte, []int) { return file_pkg_services_control_service_proto_rawDescGZIP(), []int{19, 0} } +// Request body structure. +type ObjectStatusRequest_Body struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Requested object. + ObjectAddress string `protobuf:"bytes,1,opt,name=object_address,json=objectAddress,proto3" json:"object_address,omitempty"` +} + +func (x *ObjectStatusRequest_Body) Reset() { + *x = ObjectStatusRequest_Body{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusRequest_Body) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusRequest_Body) ProtoMessage() {} + +func (x *ObjectStatusRequest_Body) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusRequest_Body.ProtoReflect.Descriptor instead. +func (*ObjectStatusRequest_Body) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *ObjectStatusRequest_Body) GetObjectAddress() string { + if x != nil { + return x.ObjectAddress + } + return "" +} + +// Response body structure. +type ObjectStatusResponse_Body struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Engine's shards that know something about an object. + Shards []*ObjectStatusResponse_Body_Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty"` +} + +func (x *ObjectStatusResponse_Body) Reset() { + *x = ObjectStatusResponse_Body{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusResponse_Body) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusResponse_Body) ProtoMessage() {} + +func (x *ObjectStatusResponse_Body) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusResponse_Body.ProtoReflect.Descriptor instead. +func (*ObjectStatusResponse_Body) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{21, 0} +} + +func (x *ObjectStatusResponse_Body) GetShards() []*ObjectStatusResponse_Body_Shard { + if x != nil { + return x.Shards + } + return nil +} + +// Information about an object from a single shard. +type ObjectStatusResponse_Body_Shard struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // String presentation of shard ID. + ShardId string `protobuf:"bytes,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` + // Shard's storages (metabase, write-cache, FSTree, etc). + Storages []*ObjectStatusResponse_Body_Shard_Status `protobuf:"bytes,2,rep,name=storages,proto3" json:"storages,omitempty"` +} + +func (x *ObjectStatusResponse_Body_Shard) Reset() { + *x = ObjectStatusResponse_Body_Shard{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusResponse_Body_Shard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusResponse_Body_Shard) ProtoMessage() {} + +func (x *ObjectStatusResponse_Body_Shard) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusResponse_Body_Shard.ProtoReflect.Descriptor instead. +func (*ObjectStatusResponse_Body_Shard) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{21, 0, 0} +} + +func (x *ObjectStatusResponse_Body_Shard) GetShardId() string { + if x != nil { + return x.ShardId + } + return "" +} + +func (x *ObjectStatusResponse_Body_Shard) GetStorages() []*ObjectStatusResponse_Body_Shard_Status { + if x != nil { + return x.Storages + } + return nil +} + +// Status from a single shard's component. +type ObjectStatusResponse_Body_Shard_Status struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Component identification. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // Object's status in a free form (human readable). + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *ObjectStatusResponse_Body_Shard_Status) Reset() { + *x = ObjectStatusResponse_Body_Shard_Status{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_services_control_service_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectStatusResponse_Body_Shard_Status) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectStatusResponse_Body_Shard_Status) ProtoMessage() {} + +func (x *ObjectStatusResponse_Body_Shard_Status) ProtoReflect() protoreflect.Message { + mi := &file_pkg_services_control_service_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectStatusResponse_Body_Shard_Status.ProtoReflect.Descriptor instead. +func (*ObjectStatusResponse_Body_Shard_Status) Descriptor() ([]byte, []int) { + return file_pkg_services_control_service_proto_rawDescGZIP(), []int{21, 0, 0, 0} +} + +func (x *ObjectStatusResponse_Body_Shard_Status) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ObjectStatusResponse_Body_Shard_Status) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + var File_pkg_services_control_service_proto protoreflect.FileDescriptor var file_pkg_services_control_service_proto_rawDesc = []byte{ @@ -2394,59 +2724,99 @@ var file_pkg_services_control_service_proto_rawDesc = []byte{ 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x06, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, - 0x32, 0x8c, 0x06, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, - 0x0f, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x65, - 0x74, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x4e, - 0x65, 0x74, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x72, 0x6f, - 0x70, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x42, 0x0a, 0x09, 0x44, 0x75, 0x6d, 0x70, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, - 0x65, 0x54, 0x72, 0x65, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x54, 0x72, 0x65, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x45, 0x76, 0x61, 0x63, - 0x75, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x46, 0x6c, 0x75, 0x73, - 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x46, 0x6c, 0x75, - 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x73, - 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x2d, 0x6e, 0x6f, - 0x64, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0xad, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, + 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x1a, 0x2d, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0xf3, 0x02, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x1a, 0xf0, 0x01, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x40, 0x0a, 0x06, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x1a, 0xa5, + 0x01, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, + 0x1a, 0x34, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x32, 0xd9, 0x06, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x6d, 0x61, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x44, 0x72, 0x6f, + 0x70, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x53, 0x65, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x44, 0x75, 0x6d, 0x70, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, + 0x75, 0x6d, 0x70, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, + 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x54, 0x72, 0x65, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, + 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, + 0x7a, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, + 0x0a, 0x0d, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, + 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, + 0x0a, 0x0a, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1a, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6e, 0x73, 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x65, 0x6f, 0x66, 0x73, + 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2461,125 +2831,139 @@ func file_pkg_services_control_service_proto_rawDescGZIP() []byte { return file_pkg_services_control_service_proto_rawDescData } -var file_pkg_services_control_service_proto_msgTypes = make([]protoimpl.MessageInfo, 40) +var file_pkg_services_control_service_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_pkg_services_control_service_proto_goTypes = []interface{}{ - (*HealthCheckRequest)(nil), // 0: control.HealthCheckRequest - (*HealthCheckResponse)(nil), // 1: control.HealthCheckResponse - (*SetNetmapStatusRequest)(nil), // 2: control.SetNetmapStatusRequest - (*SetNetmapStatusResponse)(nil), // 3: control.SetNetmapStatusResponse - (*DropObjectsRequest)(nil), // 4: control.DropObjectsRequest - (*DropObjectsResponse)(nil), // 5: control.DropObjectsResponse - (*ListShardsRequest)(nil), // 6: control.ListShardsRequest - (*ListShardsResponse)(nil), // 7: control.ListShardsResponse - (*SetShardModeRequest)(nil), // 8: control.SetShardModeRequest - (*SetShardModeResponse)(nil), // 9: control.SetShardModeResponse - (*DumpShardRequest)(nil), // 10: control.DumpShardRequest - (*DumpShardResponse)(nil), // 11: control.DumpShardResponse - (*RestoreShardRequest)(nil), // 12: control.RestoreShardRequest - (*RestoreShardResponse)(nil), // 13: control.RestoreShardResponse - (*SynchronizeTreeRequest)(nil), // 14: control.SynchronizeTreeRequest - (*SynchronizeTreeResponse)(nil), // 15: control.SynchronizeTreeResponse - (*EvacuateShardRequest)(nil), // 16: control.EvacuateShardRequest - (*EvacuateShardResponse)(nil), // 17: control.EvacuateShardResponse - (*FlushCacheRequest)(nil), // 18: control.FlushCacheRequest - (*FlushCacheResponse)(nil), // 19: control.FlushCacheResponse - (*HealthCheckRequest_Body)(nil), // 20: control.HealthCheckRequest.Body - (*HealthCheckResponse_Body)(nil), // 21: control.HealthCheckResponse.Body - (*SetNetmapStatusRequest_Body)(nil), // 22: control.SetNetmapStatusRequest.Body - (*SetNetmapStatusResponse_Body)(nil), // 23: control.SetNetmapStatusResponse.Body - (*DropObjectsRequest_Body)(nil), // 24: control.DropObjectsRequest.Body - (*DropObjectsResponse_Body)(nil), // 25: control.DropObjectsResponse.Body - (*ListShardsRequest_Body)(nil), // 26: control.ListShardsRequest.Body - (*ListShardsResponse_Body)(nil), // 27: control.ListShardsResponse.Body - (*SetShardModeRequest_Body)(nil), // 28: control.SetShardModeRequest.Body - (*SetShardModeResponse_Body)(nil), // 29: control.SetShardModeResponse.Body - (*DumpShardRequest_Body)(nil), // 30: control.DumpShardRequest.Body - (*DumpShardResponse_Body)(nil), // 31: control.DumpShardResponse.Body - (*RestoreShardRequest_Body)(nil), // 32: control.RestoreShardRequest.Body - (*RestoreShardResponse_Body)(nil), // 33: control.RestoreShardResponse.Body - (*SynchronizeTreeRequest_Body)(nil), // 34: control.SynchronizeTreeRequest.Body - (*SynchronizeTreeResponse_Body)(nil), // 35: control.SynchronizeTreeResponse.Body - (*EvacuateShardRequest_Body)(nil), // 36: control.EvacuateShardRequest.Body - (*EvacuateShardResponse_Body)(nil), // 37: control.EvacuateShardResponse.Body - (*FlushCacheRequest_Body)(nil), // 38: control.FlushCacheRequest.Body - (*FlushCacheResponse_Body)(nil), // 39: control.FlushCacheResponse.Body - (*Signature)(nil), // 40: control.Signature - (NetmapStatus)(0), // 41: control.NetmapStatus - (HealthStatus)(0), // 42: control.HealthStatus - (*ShardInfo)(nil), // 43: control.ShardInfo - (ShardMode)(0), // 44: control.ShardMode + (*HealthCheckRequest)(nil), // 0: control.HealthCheckRequest + (*HealthCheckResponse)(nil), // 1: control.HealthCheckResponse + (*SetNetmapStatusRequest)(nil), // 2: control.SetNetmapStatusRequest + (*SetNetmapStatusResponse)(nil), // 3: control.SetNetmapStatusResponse + (*DropObjectsRequest)(nil), // 4: control.DropObjectsRequest + (*DropObjectsResponse)(nil), // 5: control.DropObjectsResponse + (*ListShardsRequest)(nil), // 6: control.ListShardsRequest + (*ListShardsResponse)(nil), // 7: control.ListShardsResponse + (*SetShardModeRequest)(nil), // 8: control.SetShardModeRequest + (*SetShardModeResponse)(nil), // 9: control.SetShardModeResponse + (*DumpShardRequest)(nil), // 10: control.DumpShardRequest + (*DumpShardResponse)(nil), // 11: control.DumpShardResponse + (*RestoreShardRequest)(nil), // 12: control.RestoreShardRequest + (*RestoreShardResponse)(nil), // 13: control.RestoreShardResponse + (*SynchronizeTreeRequest)(nil), // 14: control.SynchronizeTreeRequest + (*SynchronizeTreeResponse)(nil), // 15: control.SynchronizeTreeResponse + (*EvacuateShardRequest)(nil), // 16: control.EvacuateShardRequest + (*EvacuateShardResponse)(nil), // 17: control.EvacuateShardResponse + (*FlushCacheRequest)(nil), // 18: control.FlushCacheRequest + (*FlushCacheResponse)(nil), // 19: control.FlushCacheResponse + (*ObjectStatusRequest)(nil), // 20: control.ObjectStatusRequest + (*ObjectStatusResponse)(nil), // 21: control.ObjectStatusResponse + (*HealthCheckRequest_Body)(nil), // 22: control.HealthCheckRequest.Body + (*HealthCheckResponse_Body)(nil), // 23: control.HealthCheckResponse.Body + (*SetNetmapStatusRequest_Body)(nil), // 24: control.SetNetmapStatusRequest.Body + (*SetNetmapStatusResponse_Body)(nil), // 25: control.SetNetmapStatusResponse.Body + (*DropObjectsRequest_Body)(nil), // 26: control.DropObjectsRequest.Body + (*DropObjectsResponse_Body)(nil), // 27: control.DropObjectsResponse.Body + (*ListShardsRequest_Body)(nil), // 28: control.ListShardsRequest.Body + (*ListShardsResponse_Body)(nil), // 29: control.ListShardsResponse.Body + (*SetShardModeRequest_Body)(nil), // 30: control.SetShardModeRequest.Body + (*SetShardModeResponse_Body)(nil), // 31: control.SetShardModeResponse.Body + (*DumpShardRequest_Body)(nil), // 32: control.DumpShardRequest.Body + (*DumpShardResponse_Body)(nil), // 33: control.DumpShardResponse.Body + (*RestoreShardRequest_Body)(nil), // 34: control.RestoreShardRequest.Body + (*RestoreShardResponse_Body)(nil), // 35: control.RestoreShardResponse.Body + (*SynchronizeTreeRequest_Body)(nil), // 36: control.SynchronizeTreeRequest.Body + (*SynchronizeTreeResponse_Body)(nil), // 37: control.SynchronizeTreeResponse.Body + (*EvacuateShardRequest_Body)(nil), // 38: control.EvacuateShardRequest.Body + (*EvacuateShardResponse_Body)(nil), // 39: control.EvacuateShardResponse.Body + (*FlushCacheRequest_Body)(nil), // 40: control.FlushCacheRequest.Body + (*FlushCacheResponse_Body)(nil), // 41: control.FlushCacheResponse.Body + (*ObjectStatusRequest_Body)(nil), // 42: control.ObjectStatusRequest.Body + (*ObjectStatusResponse_Body)(nil), // 43: control.ObjectStatusResponse.Body + (*ObjectStatusResponse_Body_Shard)(nil), // 44: control.ObjectStatusResponse.Body.Shard + (*ObjectStatusResponse_Body_Shard_Status)(nil), // 45: control.ObjectStatusResponse.Body.Shard.Status + (*Signature)(nil), // 46: control.Signature + (NetmapStatus)(0), // 47: control.NetmapStatus + (HealthStatus)(0), // 48: control.HealthStatus + (*ShardInfo)(nil), // 49: control.ShardInfo + (ShardMode)(0), // 50: control.ShardMode } var file_pkg_services_control_service_proto_depIdxs = []int32{ - 20, // 0: control.HealthCheckRequest.body:type_name -> control.HealthCheckRequest.Body - 40, // 1: control.HealthCheckRequest.signature:type_name -> control.Signature - 21, // 2: control.HealthCheckResponse.body:type_name -> control.HealthCheckResponse.Body - 40, // 3: control.HealthCheckResponse.signature:type_name -> control.Signature - 22, // 4: control.SetNetmapStatusRequest.body:type_name -> control.SetNetmapStatusRequest.Body - 40, // 5: control.SetNetmapStatusRequest.signature:type_name -> control.Signature - 23, // 6: control.SetNetmapStatusResponse.body:type_name -> control.SetNetmapStatusResponse.Body - 40, // 7: control.SetNetmapStatusResponse.signature:type_name -> control.Signature - 24, // 8: control.DropObjectsRequest.body:type_name -> control.DropObjectsRequest.Body - 40, // 9: control.DropObjectsRequest.signature:type_name -> control.Signature - 25, // 10: control.DropObjectsResponse.body:type_name -> control.DropObjectsResponse.Body - 40, // 11: control.DropObjectsResponse.signature:type_name -> control.Signature - 26, // 12: control.ListShardsRequest.body:type_name -> control.ListShardsRequest.Body - 40, // 13: control.ListShardsRequest.signature:type_name -> control.Signature - 27, // 14: control.ListShardsResponse.body:type_name -> control.ListShardsResponse.Body - 40, // 15: control.ListShardsResponse.signature:type_name -> control.Signature - 28, // 16: control.SetShardModeRequest.body:type_name -> control.SetShardModeRequest.Body - 40, // 17: control.SetShardModeRequest.signature:type_name -> control.Signature - 29, // 18: control.SetShardModeResponse.body:type_name -> control.SetShardModeResponse.Body - 40, // 19: control.SetShardModeResponse.signature:type_name -> control.Signature - 30, // 20: control.DumpShardRequest.body:type_name -> control.DumpShardRequest.Body - 40, // 21: control.DumpShardRequest.signature:type_name -> control.Signature - 31, // 22: control.DumpShardResponse.body:type_name -> control.DumpShardResponse.Body - 40, // 23: control.DumpShardResponse.signature:type_name -> control.Signature - 32, // 24: control.RestoreShardRequest.body:type_name -> control.RestoreShardRequest.Body - 40, // 25: control.RestoreShardRequest.signature:type_name -> control.Signature - 33, // 26: control.RestoreShardResponse.body:type_name -> control.RestoreShardResponse.Body - 40, // 27: control.RestoreShardResponse.signature:type_name -> control.Signature - 34, // 28: control.SynchronizeTreeRequest.body:type_name -> control.SynchronizeTreeRequest.Body - 40, // 29: control.SynchronizeTreeRequest.signature:type_name -> control.Signature - 35, // 30: control.SynchronizeTreeResponse.body:type_name -> control.SynchronizeTreeResponse.Body - 40, // 31: control.SynchronizeTreeResponse.signature:type_name -> control.Signature - 36, // 32: control.EvacuateShardRequest.body:type_name -> control.EvacuateShardRequest.Body - 40, // 33: control.EvacuateShardRequest.signature:type_name -> control.Signature - 37, // 34: control.EvacuateShardResponse.body:type_name -> control.EvacuateShardResponse.Body - 40, // 35: control.EvacuateShardResponse.signature:type_name -> control.Signature - 38, // 36: control.FlushCacheRequest.body:type_name -> control.FlushCacheRequest.Body - 40, // 37: control.FlushCacheRequest.signature:type_name -> control.Signature - 39, // 38: control.FlushCacheResponse.body:type_name -> control.FlushCacheResponse.Body - 40, // 39: control.FlushCacheResponse.signature:type_name -> control.Signature - 41, // 40: control.HealthCheckResponse.Body.netmap_status:type_name -> control.NetmapStatus - 42, // 41: control.HealthCheckResponse.Body.health_status:type_name -> control.HealthStatus - 41, // 42: control.SetNetmapStatusRequest.Body.status:type_name -> control.NetmapStatus - 43, // 43: control.ListShardsResponse.Body.shards:type_name -> control.ShardInfo - 44, // 44: control.SetShardModeRequest.Body.mode:type_name -> control.ShardMode - 0, // 45: control.ControlService.HealthCheck:input_type -> control.HealthCheckRequest - 2, // 46: control.ControlService.SetNetmapStatus:input_type -> control.SetNetmapStatusRequest - 4, // 47: control.ControlService.DropObjects:input_type -> control.DropObjectsRequest - 6, // 48: control.ControlService.ListShards:input_type -> control.ListShardsRequest - 8, // 49: control.ControlService.SetShardMode:input_type -> control.SetShardModeRequest - 10, // 50: control.ControlService.DumpShard:input_type -> control.DumpShardRequest - 12, // 51: control.ControlService.RestoreShard:input_type -> control.RestoreShardRequest - 14, // 52: control.ControlService.SynchronizeTree:input_type -> control.SynchronizeTreeRequest - 16, // 53: control.ControlService.EvacuateShard:input_type -> control.EvacuateShardRequest - 18, // 54: control.ControlService.FlushCache:input_type -> control.FlushCacheRequest - 1, // 55: control.ControlService.HealthCheck:output_type -> control.HealthCheckResponse - 3, // 56: control.ControlService.SetNetmapStatus:output_type -> control.SetNetmapStatusResponse - 5, // 57: control.ControlService.DropObjects:output_type -> control.DropObjectsResponse - 7, // 58: control.ControlService.ListShards:output_type -> control.ListShardsResponse - 9, // 59: control.ControlService.SetShardMode:output_type -> control.SetShardModeResponse - 11, // 60: control.ControlService.DumpShard:output_type -> control.DumpShardResponse - 13, // 61: control.ControlService.RestoreShard:output_type -> control.RestoreShardResponse - 15, // 62: control.ControlService.SynchronizeTree:output_type -> control.SynchronizeTreeResponse - 17, // 63: control.ControlService.EvacuateShard:output_type -> control.EvacuateShardResponse - 19, // 64: control.ControlService.FlushCache:output_type -> control.FlushCacheResponse - 55, // [55:65] is the sub-list for method output_type - 45, // [45:55] is the sub-list for method input_type - 45, // [45:45] is the sub-list for extension type_name - 45, // [45:45] is the sub-list for extension extendee - 0, // [0:45] is the sub-list for field type_name + 22, // 0: control.HealthCheckRequest.body:type_name -> control.HealthCheckRequest.Body + 46, // 1: control.HealthCheckRequest.signature:type_name -> control.Signature + 23, // 2: control.HealthCheckResponse.body:type_name -> control.HealthCheckResponse.Body + 46, // 3: control.HealthCheckResponse.signature:type_name -> control.Signature + 24, // 4: control.SetNetmapStatusRequest.body:type_name -> control.SetNetmapStatusRequest.Body + 46, // 5: control.SetNetmapStatusRequest.signature:type_name -> control.Signature + 25, // 6: control.SetNetmapStatusResponse.body:type_name -> control.SetNetmapStatusResponse.Body + 46, // 7: control.SetNetmapStatusResponse.signature:type_name -> control.Signature + 26, // 8: control.DropObjectsRequest.body:type_name -> control.DropObjectsRequest.Body + 46, // 9: control.DropObjectsRequest.signature:type_name -> control.Signature + 27, // 10: control.DropObjectsResponse.body:type_name -> control.DropObjectsResponse.Body + 46, // 11: control.DropObjectsResponse.signature:type_name -> control.Signature + 28, // 12: control.ListShardsRequest.body:type_name -> control.ListShardsRequest.Body + 46, // 13: control.ListShardsRequest.signature:type_name -> control.Signature + 29, // 14: control.ListShardsResponse.body:type_name -> control.ListShardsResponse.Body + 46, // 15: control.ListShardsResponse.signature:type_name -> control.Signature + 30, // 16: control.SetShardModeRequest.body:type_name -> control.SetShardModeRequest.Body + 46, // 17: control.SetShardModeRequest.signature:type_name -> control.Signature + 31, // 18: control.SetShardModeResponse.body:type_name -> control.SetShardModeResponse.Body + 46, // 19: control.SetShardModeResponse.signature:type_name -> control.Signature + 32, // 20: control.DumpShardRequest.body:type_name -> control.DumpShardRequest.Body + 46, // 21: control.DumpShardRequest.signature:type_name -> control.Signature + 33, // 22: control.DumpShardResponse.body:type_name -> control.DumpShardResponse.Body + 46, // 23: control.DumpShardResponse.signature:type_name -> control.Signature + 34, // 24: control.RestoreShardRequest.body:type_name -> control.RestoreShardRequest.Body + 46, // 25: control.RestoreShardRequest.signature:type_name -> control.Signature + 35, // 26: control.RestoreShardResponse.body:type_name -> control.RestoreShardResponse.Body + 46, // 27: control.RestoreShardResponse.signature:type_name -> control.Signature + 36, // 28: control.SynchronizeTreeRequest.body:type_name -> control.SynchronizeTreeRequest.Body + 46, // 29: control.SynchronizeTreeRequest.signature:type_name -> control.Signature + 37, // 30: control.SynchronizeTreeResponse.body:type_name -> control.SynchronizeTreeResponse.Body + 46, // 31: control.SynchronizeTreeResponse.signature:type_name -> control.Signature + 38, // 32: control.EvacuateShardRequest.body:type_name -> control.EvacuateShardRequest.Body + 46, // 33: control.EvacuateShardRequest.signature:type_name -> control.Signature + 39, // 34: control.EvacuateShardResponse.body:type_name -> control.EvacuateShardResponse.Body + 46, // 35: control.EvacuateShardResponse.signature:type_name -> control.Signature + 40, // 36: control.FlushCacheRequest.body:type_name -> control.FlushCacheRequest.Body + 46, // 37: control.FlushCacheRequest.signature:type_name -> control.Signature + 41, // 38: control.FlushCacheResponse.body:type_name -> control.FlushCacheResponse.Body + 46, // 39: control.FlushCacheResponse.signature:type_name -> control.Signature + 42, // 40: control.ObjectStatusRequest.body:type_name -> control.ObjectStatusRequest.Body + 46, // 41: control.ObjectStatusRequest.signature:type_name -> control.Signature + 43, // 42: control.ObjectStatusResponse.body:type_name -> control.ObjectStatusResponse.Body + 46, // 43: control.ObjectStatusResponse.signature:type_name -> control.Signature + 47, // 44: control.HealthCheckResponse.Body.netmap_status:type_name -> control.NetmapStatus + 48, // 45: control.HealthCheckResponse.Body.health_status:type_name -> control.HealthStatus + 47, // 46: control.SetNetmapStatusRequest.Body.status:type_name -> control.NetmapStatus + 49, // 47: control.ListShardsResponse.Body.shards:type_name -> control.ShardInfo + 50, // 48: control.SetShardModeRequest.Body.mode:type_name -> control.ShardMode + 44, // 49: control.ObjectStatusResponse.Body.shards:type_name -> control.ObjectStatusResponse.Body.Shard + 45, // 50: control.ObjectStatusResponse.Body.Shard.storages:type_name -> control.ObjectStatusResponse.Body.Shard.Status + 0, // 51: control.ControlService.HealthCheck:input_type -> control.HealthCheckRequest + 2, // 52: control.ControlService.SetNetmapStatus:input_type -> control.SetNetmapStatusRequest + 4, // 53: control.ControlService.DropObjects:input_type -> control.DropObjectsRequest + 6, // 54: control.ControlService.ListShards:input_type -> control.ListShardsRequest + 8, // 55: control.ControlService.SetShardMode:input_type -> control.SetShardModeRequest + 10, // 56: control.ControlService.DumpShard:input_type -> control.DumpShardRequest + 12, // 57: control.ControlService.RestoreShard:input_type -> control.RestoreShardRequest + 14, // 58: control.ControlService.SynchronizeTree:input_type -> control.SynchronizeTreeRequest + 16, // 59: control.ControlService.EvacuateShard:input_type -> control.EvacuateShardRequest + 18, // 60: control.ControlService.FlushCache:input_type -> control.FlushCacheRequest + 20, // 61: control.ControlService.ObjectStatus:input_type -> control.ObjectStatusRequest + 1, // 62: control.ControlService.HealthCheck:output_type -> control.HealthCheckResponse + 3, // 63: control.ControlService.SetNetmapStatus:output_type -> control.SetNetmapStatusResponse + 5, // 64: control.ControlService.DropObjects:output_type -> control.DropObjectsResponse + 7, // 65: control.ControlService.ListShards:output_type -> control.ListShardsResponse + 9, // 66: control.ControlService.SetShardMode:output_type -> control.SetShardModeResponse + 11, // 67: control.ControlService.DumpShard:output_type -> control.DumpShardResponse + 13, // 68: control.ControlService.RestoreShard:output_type -> control.RestoreShardResponse + 15, // 69: control.ControlService.SynchronizeTree:output_type -> control.SynchronizeTreeResponse + 17, // 70: control.ControlService.EvacuateShard:output_type -> control.EvacuateShardResponse + 19, // 71: control.ControlService.FlushCache:output_type -> control.FlushCacheResponse + 21, // 72: control.ControlService.ObjectStatus:output_type -> control.ObjectStatusResponse + 62, // [62:73] is the sub-list for method output_type + 51, // [51:62] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_pkg_services_control_service_proto_init() } @@ -2830,7 +3214,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckRequest_Body); i { + switch v := v.(*ObjectStatusRequest); i { case 0: return &v.state case 1: @@ -2842,7 +3226,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckResponse_Body); i { + switch v := v.(*ObjectStatusResponse); i { case 0: return &v.state case 1: @@ -2854,7 +3238,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetNetmapStatusRequest_Body); i { + switch v := v.(*HealthCheckRequest_Body); i { case 0: return &v.state case 1: @@ -2866,7 +3250,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetNetmapStatusResponse_Body); i { + switch v := v.(*HealthCheckResponse_Body); i { case 0: return &v.state case 1: @@ -2878,7 +3262,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DropObjectsRequest_Body); i { + switch v := v.(*SetNetmapStatusRequest_Body); i { case 0: return &v.state case 1: @@ -2890,7 +3274,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DropObjectsResponse_Body); i { + switch v := v.(*SetNetmapStatusResponse_Body); i { case 0: return &v.state case 1: @@ -2902,7 +3286,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListShardsRequest_Body); i { + switch v := v.(*DropObjectsRequest_Body); i { case 0: return &v.state case 1: @@ -2914,7 +3298,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListShardsResponse_Body); i { + switch v := v.(*DropObjectsResponse_Body); i { case 0: return &v.state case 1: @@ -2926,7 +3310,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardModeRequest_Body); i { + switch v := v.(*ListShardsRequest_Body); i { case 0: return &v.state case 1: @@ -2938,7 +3322,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetShardModeResponse_Body); i { + switch v := v.(*ListShardsResponse_Body); i { case 0: return &v.state case 1: @@ -2950,7 +3334,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DumpShardRequest_Body); i { + switch v := v.(*SetShardModeRequest_Body); i { case 0: return &v.state case 1: @@ -2962,7 +3346,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DumpShardResponse_Body); i { + switch v := v.(*SetShardModeResponse_Body); i { case 0: return &v.state case 1: @@ -2974,7 +3358,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreShardRequest_Body); i { + switch v := v.(*DumpShardRequest_Body); i { case 0: return &v.state case 1: @@ -2986,7 +3370,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreShardResponse_Body); i { + switch v := v.(*DumpShardResponse_Body); i { case 0: return &v.state case 1: @@ -2998,7 +3382,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SynchronizeTreeRequest_Body); i { + switch v := v.(*RestoreShardRequest_Body); i { case 0: return &v.state case 1: @@ -3010,7 +3394,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SynchronizeTreeResponse_Body); i { + switch v := v.(*RestoreShardResponse_Body); i { case 0: return &v.state case 1: @@ -3022,7 +3406,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvacuateShardRequest_Body); i { + switch v := v.(*SynchronizeTreeRequest_Body); i { case 0: return &v.state case 1: @@ -3034,7 +3418,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EvacuateShardResponse_Body); i { + switch v := v.(*SynchronizeTreeResponse_Body); i { case 0: return &v.state case 1: @@ -3046,7 +3430,7 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlushCacheRequest_Body); i { + switch v := v.(*EvacuateShardRequest_Body); i { case 0: return &v.state case 1: @@ -3058,6 +3442,30 @@ func file_pkg_services_control_service_proto_init() { } } file_pkg_services_control_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EvacuateShardResponse_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_services_control_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlushCacheRequest_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_services_control_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlushCacheResponse_Body); i { case 0: return &v.state @@ -3069,6 +3477,54 @@ func file_pkg_services_control_service_proto_init() { return nil } } + file_pkg_services_control_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectStatusRequest_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_services_control_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectStatusResponse_Body); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_services_control_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectStatusResponse_Body_Shard); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_services_control_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectStatusResponse_Body_Shard_Status); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3076,7 +3532,7 @@ func file_pkg_services_control_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_services_control_service_proto_rawDesc, NumEnums: 0, - NumMessages: 40, + NumMessages: 46, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/services/control/service.proto b/pkg/services/control/service.proto index 302602deb5..08fa63f2dc 100644 --- a/pkg/services/control/service.proto +++ b/pkg/services/control/service.proto @@ -37,6 +37,9 @@ service ControlService { // FlushCache moves all data from one shard to the others. rpc FlushCache (FlushCacheRequest) returns (FlushCacheResponse); + + // ObjectStatus requests object status in the storage engine. + rpc ObjectStatus (ObjectStatusRequest) returns (ObjectStatusResponse); } // Health check request. @@ -345,3 +348,49 @@ message FlushCacheResponse { Body body = 1; Signature signature = 2; } + +// ObjectStatus request. +message ObjectStatusRequest { + // Request body structure. + message Body { + // Requested object. + string object_address = 1; + } + + // Body of object status request message. + Body body = 1; + + // Body signature. + Signature signature = 2; +} + +// ObjectStatus response. +message ObjectStatusResponse { + // Response body structure. + message Body { + // Information about an object from a single shard. + message Shard { + // Status from a single shard's component. + message Status { + // Component identification. + string type = 1; + // Object's status in a free form (human readable). + string status = 2; + } + + // String presentation of shard ID. + string shard_id = 1; + // Shard's storages (metabase, write-cache, FSTree, etc). + repeated Status storages = 2; + } + + // Engine's shards that know something about an object. + repeated Shard shards = 1; + } + + // Body of object status response message. + Body body = 1; + + // Body signature. + Signature signature = 2; +} diff --git a/pkg/services/control/service_grpc.pb.go b/pkg/services/control/service_grpc.pb.go index 2f9ebbc2cd..fd503667ec 100644 --- a/pkg/services/control/service_grpc.pb.go +++ b/pkg/services/control/service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc v4.25.1 // source: pkg/services/control/service.proto package control @@ -29,6 +29,7 @@ const ( ControlService_SynchronizeTree_FullMethodName = "/control.ControlService/SynchronizeTree" ControlService_EvacuateShard_FullMethodName = "/control.ControlService/EvacuateShard" ControlService_FlushCache_FullMethodName = "/control.ControlService/FlushCache" + ControlService_ObjectStatus_FullMethodName = "/control.ControlService/ObjectStatus" ) // ControlServiceClient is the client API for ControlService service. @@ -55,6 +56,8 @@ type ControlServiceClient interface { EvacuateShard(ctx context.Context, in *EvacuateShardRequest, opts ...grpc.CallOption) (*EvacuateShardResponse, error) // FlushCache moves all data from one shard to the others. FlushCache(ctx context.Context, in *FlushCacheRequest, opts ...grpc.CallOption) (*FlushCacheResponse, error) + // ObjectStatus requests object status in the storage engine. + ObjectStatus(ctx context.Context, in *ObjectStatusRequest, opts ...grpc.CallOption) (*ObjectStatusResponse, error) } type controlServiceClient struct { @@ -155,6 +158,15 @@ func (c *controlServiceClient) FlushCache(ctx context.Context, in *FlushCacheReq return out, nil } +func (c *controlServiceClient) ObjectStatus(ctx context.Context, in *ObjectStatusRequest, opts ...grpc.CallOption) (*ObjectStatusResponse, error) { + out := new(ObjectStatusResponse) + err := c.cc.Invoke(ctx, ControlService_ObjectStatus_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ControlServiceServer is the server API for ControlService service. // All implementations should embed UnimplementedControlServiceServer // for forward compatibility @@ -179,6 +191,8 @@ type ControlServiceServer interface { EvacuateShard(context.Context, *EvacuateShardRequest) (*EvacuateShardResponse, error) // FlushCache moves all data from one shard to the others. FlushCache(context.Context, *FlushCacheRequest) (*FlushCacheResponse, error) + // ObjectStatus requests object status in the storage engine. + ObjectStatus(context.Context, *ObjectStatusRequest) (*ObjectStatusResponse, error) } // UnimplementedControlServiceServer should be embedded to have forward compatible implementations. @@ -215,6 +229,9 @@ func (UnimplementedControlServiceServer) EvacuateShard(context.Context, *Evacuat func (UnimplementedControlServiceServer) FlushCache(context.Context, *FlushCacheRequest) (*FlushCacheResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method FlushCache not implemented") } +func (UnimplementedControlServiceServer) ObjectStatus(context.Context, *ObjectStatusRequest) (*ObjectStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ObjectStatus not implemented") +} // UnsafeControlServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ControlServiceServer will @@ -407,6 +424,24 @@ func _ControlService_FlushCache_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _ControlService_ObjectStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ObjectStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServiceServer).ObjectStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ControlService_ObjectStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServiceServer).ObjectStatus(ctx, req.(*ObjectStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + // ControlService_ServiceDesc is the grpc.ServiceDesc for ControlService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -454,6 +489,10 @@ var ControlService_ServiceDesc = grpc.ServiceDesc{ MethodName: "FlushCache", Handler: _ControlService_FlushCache_Handler, }, + { + MethodName: "ObjectStatus", + Handler: _ControlService_ObjectStatus_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/services/control/service.proto", diff --git a/pkg/services/control/service_neofs.pb.go b/pkg/services/control/service_neofs.pb.go index 2d891bb819..a865acafb3 100644 --- a/pkg/services/control/service_neofs.pb.go +++ b/pkg/services/control/service_neofs.pb.go @@ -1548,3 +1548,231 @@ func (x *FlushCacheResponse) ReadSignedData(buf []byte) ([]byte, error) { func (x *FlushCacheResponse) SetSignature(sig *Signature) { x.Signature = sig } + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusRequest_Body) StableSize() (size int) { + size += proto.StringSize(1, x.ObjectAddress) + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusRequest_Body) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + offset += proto.StringMarshal(1, buf[offset:], x.ObjectAddress) + return buf +} + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusRequest) StableSize() (size int) { + size += proto.NestedStructureSize(1, x.Body) + size += proto.NestedStructureSize(2, x.Signature) + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusRequest) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + offset += proto.NestedStructureMarshal(1, buf[offset:], x.Body) + offset += proto.NestedStructureMarshal(2, buf[offset:], x.Signature) + return buf +} + +// ReadSignedData fills buf with signed data of x. +// If buffer length is less than x.SignedDataSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same signed data. +func (x *ObjectStatusRequest) SignedDataSize() int { + return x.GetBody().StableSize() +} + +// SignedDataSize returns size of the request signed data in bytes. +// +// Structures with the same field values have the same signed data size. +func (x *ObjectStatusRequest) ReadSignedData(buf []byte) ([]byte, error) { + return x.GetBody().StableMarshal(buf), nil +} + +func (x *ObjectStatusRequest) SetSignature(sig *Signature) { + x.Signature = sig +} + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusResponse_Body_Shard_Status) StableSize() (size int) { + size += proto.StringSize(1, x.Type) + size += proto.StringSize(2, x.Status) + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusResponse_Body_Shard_Status) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + offset += proto.StringMarshal(1, buf[offset:], x.Type) + offset += proto.StringMarshal(2, buf[offset:], x.Status) + return buf +} + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusResponse_Body_Shard) StableSize() (size int) { + size += proto.StringSize(1, x.ShardId) + for i := range x.Storages { + size += proto.NestedStructureSize(2, x.Storages[i]) + } + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusResponse_Body_Shard) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + offset += proto.StringMarshal(1, buf[offset:], x.ShardId) + for i := range x.Storages { + offset += proto.NestedStructureMarshal(2, buf[offset:], x.Storages[i]) + } + return buf +} + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusResponse_Body) StableSize() (size int) { + for i := range x.Shards { + size += proto.NestedStructureSize(1, x.Shards[i]) + } + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusResponse_Body) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + for i := range x.Shards { + offset += proto.NestedStructureMarshal(1, buf[offset:], x.Shards[i]) + } + return buf +} + +// StableSize returns the size of x in protobuf format. +// +// Structures with the same field values have the same binary size. +func (x *ObjectStatusResponse) StableSize() (size int) { + size += proto.NestedStructureSize(1, x.Body) + size += proto.NestedStructureSize(2, x.Signature) + return size +} + +// StableMarshal marshals x in protobuf binary format with stable field order. +// +// If buffer length is less than x.StableSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same binary format. +func (x *ObjectStatusResponse) StableMarshal(buf []byte) []byte { + if x == nil { + return []byte{} + } + if buf == nil { + buf = make([]byte, x.StableSize()) + } + var offset int + offset += proto.NestedStructureMarshal(1, buf[offset:], x.Body) + offset += proto.NestedStructureMarshal(2, buf[offset:], x.Signature) + return buf +} + +// ReadSignedData fills buf with signed data of x. +// If buffer length is less than x.SignedDataSize(), new buffer is allocated. +// +// Returns any error encountered which did not allow writing the data completely. +// Otherwise, returns the buffer in which the data is written. +// +// Structures with the same field values have the same signed data. +func (x *ObjectStatusResponse) SignedDataSize() int { + return x.GetBody().StableSize() +} + +// SignedDataSize returns size of the request signed data in bytes. +// +// Structures with the same field values have the same signed data size. +func (x *ObjectStatusResponse) ReadSignedData(buf []byte) ([]byte, error) { + return x.GetBody().StableMarshal(buf), nil +} + +func (x *ObjectStatusResponse) SetSignature(sig *Signature) { + x.Signature = sig +} diff --git a/pkg/services/control/types.pb.go b/pkg/services/control/types.pb.go index 6a4133ca95..dd3e005104 100644 --- a/pkg/services/control/types.pb.go +++ b/pkg/services/control/types.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc v4.25.1 // source: pkg/services/control/types.proto package control