feat: add hash APIs for SPDK

Longhorn 10480

Signed-off-by: Shuo Wu <shuo.wu@suse.com>
This commit is contained in:
Shuo Wu 2025-02-21 03:01:24 +00:00 committed by Derek Su
parent 23a07a51e0
commit 74fbf95c13
10 changed files with 2770 additions and 1302 deletions

File diff suppressed because one or more lines are too long

View File

@ -70,6 +70,11 @@ class ControllerServiceStub(object):
request_serializer=ptypes_dot_controller__pb2.VolumeSnapshotMaxSizeSetRequest.SerializeToString,
response_deserializer=ptypes_dot_controller__pb2.Volume.FromString,
)
self.VolumeIO = channel.unary_unary(
'/ptypes.ControllerService/VolumeIO',
request_serializer=ptypes_dot_controller__pb2.VolumeIORequest.SerializeToString,
response_deserializer=ptypes_dot_controller__pb2.VolumeIOResponse.FromString,
)
self.ReplicaList = channel.unary_unary(
'/ptypes.ControllerService/ReplicaList',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
@ -191,6 +196,12 @@ class ControllerServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def VolumeIO(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaList(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@ -309,6 +320,11 @@ def add_ControllerServiceServicer_to_server(servicer, server):
request_deserializer=ptypes_dot_controller__pb2.VolumeSnapshotMaxSizeSetRequest.FromString,
response_serializer=ptypes_dot_controller__pb2.Volume.SerializeToString,
),
'VolumeIO': grpc.unary_unary_rpc_method_handler(
servicer.VolumeIO,
request_deserializer=ptypes_dot_controller__pb2.VolumeIORequest.FromString,
response_serializer=ptypes_dot_controller__pb2.VolumeIOResponse.SerializeToString,
),
'ReplicaList': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaList,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
@ -556,6 +572,23 @@ class ControllerService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def VolumeIO(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/ptypes.ControllerService/VolumeIO',
ptypes_dot_controller__pb2.VolumeIORequest.SerializeToString,
ptypes_dot_controller__pb2.VolumeIOResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaList(request,
target,

File diff suppressed because one or more lines are too long

View File

@ -50,6 +50,26 @@ class SPDKServiceStub(object):
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ReplicaSnapshotHash = channel.unary_unary(
'/spdkrpc.SPDKService/ReplicaSnapshotHash',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ReplicaSnapshotHashStatus = channel.unary_unary(
'/spdkrpc.SPDKService/ReplicaSnapshotHashStatus',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.ReplicaSnapshotHashStatusResponse.FromString,
)
self.ReplicaSnapshotHashCancel = channel.unary_unary(
'/spdkrpc.SPDKService/ReplicaSnapshotHashCancel',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ReplicaSnapshotHashLockState = channel.unary_unary(
'/spdkrpc.SPDKService/ReplicaSnapshotHashLockState',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.FromString,
)
self.ReplicaList = channel.unary_unary(
'/spdkrpc.SPDKService/ReplicaList',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
@ -180,6 +200,26 @@ class SPDKServiceStub(object):
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.EngineSnapshotHash = channel.unary_unary(
'/spdkrpc.SPDKService/EngineSnapshotHash',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.EngineSnapshotHashStatus = channel.unary_unary(
'/spdkrpc.SPDKService/EngineSnapshotHashStatus',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.EngineSnapshotHashStatusResponse.FromString,
)
self.EngineSnapshotHashCancel = channel.unary_unary(
'/spdkrpc.SPDKService/EngineSnapshotHashCancel',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.EngineSnapshotHashLockState = channel.unary_unary(
'/spdkrpc.SPDKService/EngineSnapshotHashLockState',
request_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.FromString,
)
self.EngineList = channel.unary_unary(
'/spdkrpc.SPDKService/EngineList',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
@ -357,6 +397,30 @@ class SPDKServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaSnapshotHash(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaSnapshotHashStatus(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaSnapshotHashCancel(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaSnapshotHashLockState(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ReplicaList(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@ -513,6 +577,30 @@ class SPDKServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def EngineSnapshotHash(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def EngineSnapshotHashStatus(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def EngineSnapshotHashCancel(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def EngineSnapshotHashLockState(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def EngineList(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@ -707,6 +795,26 @@ def add_SPDKServiceServicer_to_server(servicer, server):
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ReplicaSnapshotHash': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaSnapshotHash,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ReplicaSnapshotHashStatus': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaSnapshotHashStatus,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.ReplicaSnapshotHashStatusResponse.SerializeToString,
),
'ReplicaSnapshotHashCancel': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaSnapshotHashCancel,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ReplicaSnapshotHashLockState': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaSnapshotHashLockState,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.SerializeToString,
),
'ReplicaList': grpc.unary_unary_rpc_method_handler(
servicer.ReplicaList,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
@ -837,6 +945,26 @@ def add_SPDKServiceServicer_to_server(servicer, server):
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'EngineSnapshotHash': grpc.unary_unary_rpc_method_handler(
servicer.EngineSnapshotHash,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'EngineSnapshotHashStatus': grpc.unary_unary_rpc_method_handler(
servicer.EngineSnapshotHashStatus,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.EngineSnapshotHashStatusResponse.SerializeToString,
),
'EngineSnapshotHashCancel': grpc.unary_unary_rpc_method_handler(
servicer.EngineSnapshotHashCancel,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'EngineSnapshotHashLockState': grpc.unary_unary_rpc_method_handler(
servicer.EngineSnapshotHashLockState,
request_deserializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.SerializeToString,
),
'EngineList': grpc.unary_unary_rpc_method_handler(
servicer.EngineList,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
@ -1096,6 +1224,74 @@ class SPDKService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaSnapshotHash(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/ReplicaSnapshotHash',
spdkrpc_dot_spdk__pb2.SnapshotHashRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaSnapshotHashStatus(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/ReplicaSnapshotHashStatus',
spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.ReplicaSnapshotHashStatusResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaSnapshotHashCancel(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/ReplicaSnapshotHashCancel',
spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaSnapshotHashLockState(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/ReplicaSnapshotHashLockState',
spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ReplicaList(request,
target,
@ -1538,6 +1734,74 @@ class SPDKService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def EngineSnapshotHash(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/EngineSnapshotHash',
spdkrpc_dot_spdk__pb2.SnapshotHashRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def EngineSnapshotHashStatus(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/EngineSnapshotHashStatus',
spdkrpc_dot_spdk__pb2.SnapshotHashStatusRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.EngineSnapshotHashStatusResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def EngineSnapshotHashCancel(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/EngineSnapshotHashCancel',
spdkrpc_dot_spdk__pb2.SnapshotHashCancelRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def EngineSnapshotHashLockState(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/spdkrpc.SPDKService/EngineSnapshotHashLockState',
spdkrpc_dot_spdk__pb2.SnapshotHashLockStateRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.SnapshotHashLockStateResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def EngineList(request,
target,

View File

@ -866,6 +866,132 @@ func (x *VolumeFinishRestoreRequest) GetCurrentRestored() string {
return ""
}
type VolumeIORequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
Offset int64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
Length int64 `protobuf:"varint,4,opt,name=length,proto3" json:"length,omitempty"`
}
func (x *VolumeIORequest) Reset() {
*x = VolumeIORequest{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VolumeIORequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VolumeIORequest) ProtoMessage() {}
func (x *VolumeIORequest) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VolumeIORequest.ProtoReflect.Descriptor instead.
func (*VolumeIORequest) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{14}
}
func (x *VolumeIORequest) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *VolumeIORequest) GetData() string {
if x != nil {
return x.Data
}
return ""
}
func (x *VolumeIORequest) GetOffset() int64 {
if x != nil {
return x.Offset
}
return 0
}
func (x *VolumeIORequest) GetLength() int64 {
if x != nil {
return x.Length
}
return 0
}
type VolumeIOResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
}
func (x *VolumeIOResponse) Reset() {
*x = VolumeIOResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VolumeIOResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VolumeIOResponse) ProtoMessage() {}
func (x *VolumeIOResponse) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VolumeIOResponse.ProtoReflect.Descriptor instead.
func (*VolumeIOResponse) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{15}
}
func (x *VolumeIOResponse) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
func (x *VolumeIOResponse) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
type ReplicaListReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -877,7 +1003,7 @@ type ReplicaListReply struct {
func (x *ReplicaListReply) Reset() {
*x = ReplicaListReply{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[14]
mi := &file_ptypes_controller_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -890,7 +1016,7 @@ func (x *ReplicaListReply) String() string {
func (*ReplicaListReply) ProtoMessage() {}
func (x *ReplicaListReply) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[14]
mi := &file_ptypes_controller_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -903,7 +1029,7 @@ func (x *ReplicaListReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReplicaListReply.ProtoReflect.Descriptor instead.
func (*ReplicaListReply) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{14}
return file_ptypes_controller_proto_rawDescGZIP(), []int{16}
}
func (x *ReplicaListReply) GetReplicas() []*ControllerReplica {
@ -926,7 +1052,7 @@ type ControllerReplicaCreateRequest struct {
func (x *ControllerReplicaCreateRequest) Reset() {
*x = ControllerReplicaCreateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[15]
mi := &file_ptypes_controller_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -939,7 +1065,7 @@ func (x *ControllerReplicaCreateRequest) String() string {
func (*ControllerReplicaCreateRequest) ProtoMessage() {}
func (x *ControllerReplicaCreateRequest) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[15]
mi := &file_ptypes_controller_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -952,7 +1078,7 @@ func (x *ControllerReplicaCreateRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ControllerReplicaCreateRequest.ProtoReflect.Descriptor instead.
func (*ControllerReplicaCreateRequest) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{15}
return file_ptypes_controller_proto_rawDescGZIP(), []int{17}
}
func (x *ControllerReplicaCreateRequest) GetAddress() string {
@ -988,7 +1114,7 @@ type ReplicaPrepareRebuildReply struct {
func (x *ReplicaPrepareRebuildReply) Reset() {
*x = ReplicaPrepareRebuildReply{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[16]
mi := &file_ptypes_controller_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1001,7 +1127,7 @@ func (x *ReplicaPrepareRebuildReply) String() string {
func (*ReplicaPrepareRebuildReply) ProtoMessage() {}
func (x *ReplicaPrepareRebuildReply) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[16]
mi := &file_ptypes_controller_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1014,7 +1140,7 @@ func (x *ReplicaPrepareRebuildReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReplicaPrepareRebuildReply.ProtoReflect.Descriptor instead.
func (*ReplicaPrepareRebuildReply) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{16}
return file_ptypes_controller_proto_rawDescGZIP(), []int{18}
}
func (x *ReplicaPrepareRebuildReply) GetReplica() *ControllerReplica {
@ -1042,7 +1168,7 @@ type JournalListRequest struct {
func (x *JournalListRequest) Reset() {
*x = JournalListRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[17]
mi := &file_ptypes_controller_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1055,7 +1181,7 @@ func (x *JournalListRequest) String() string {
func (*JournalListRequest) ProtoMessage() {}
func (x *JournalListRequest) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[17]
mi := &file_ptypes_controller_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1068,7 +1194,7 @@ func (x *JournalListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use JournalListRequest.ProtoReflect.Descriptor instead.
func (*JournalListRequest) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{17}
return file_ptypes_controller_proto_rawDescGZIP(), []int{19}
}
func (x *JournalListRequest) GetLimit() int64 {
@ -1097,7 +1223,7 @@ type VersionOutput struct {
func (x *VersionOutput) Reset() {
*x = VersionOutput{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[18]
mi := &file_ptypes_controller_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1110,7 +1236,7 @@ func (x *VersionOutput) String() string {
func (*VersionOutput) ProtoMessage() {}
func (x *VersionOutput) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[18]
mi := &file_ptypes_controller_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1123,7 +1249,7 @@ func (x *VersionOutput) ProtoReflect() protoreflect.Message {
// Deprecated: Use VersionOutput.ProtoReflect.Descriptor instead.
func (*VersionOutput) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{18}
return file_ptypes_controller_proto_rawDescGZIP(), []int{20}
}
func (x *VersionOutput) GetVersion() string {
@ -1200,7 +1326,7 @@ type VersionDetailGetReply struct {
func (x *VersionDetailGetReply) Reset() {
*x = VersionDetailGetReply{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[19]
mi := &file_ptypes_controller_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1213,7 +1339,7 @@ func (x *VersionDetailGetReply) String() string {
func (*VersionDetailGetReply) ProtoMessage() {}
func (x *VersionDetailGetReply) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[19]
mi := &file_ptypes_controller_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1226,7 +1352,7 @@ func (x *VersionDetailGetReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use VersionDetailGetReply.ProtoReflect.Descriptor instead.
func (*VersionDetailGetReply) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{19}
return file_ptypes_controller_proto_rawDescGZIP(), []int{21}
}
func (x *VersionDetailGetReply) GetVersion() *VersionOutput {
@ -1252,7 +1378,7 @@ type Metrics struct {
func (x *Metrics) Reset() {
*x = Metrics{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[20]
mi := &file_ptypes_controller_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1265,7 +1391,7 @@ func (x *Metrics) String() string {
func (*Metrics) ProtoMessage() {}
func (x *Metrics) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[20]
mi := &file_ptypes_controller_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1278,7 +1404,7 @@ func (x *Metrics) ProtoReflect() protoreflect.Message {
// Deprecated: Use Metrics.ProtoReflect.Descriptor instead.
func (*Metrics) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{20}
return file_ptypes_controller_proto_rawDescGZIP(), []int{22}
}
func (x *Metrics) GetReadThroughput() uint64 {
@ -1334,7 +1460,7 @@ type MetricsGetReply struct {
func (x *MetricsGetReply) Reset() {
*x = MetricsGetReply{}
if protoimpl.UnsafeEnabled {
mi := &file_ptypes_controller_proto_msgTypes[21]
mi := &file_ptypes_controller_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1347,7 +1473,7 @@ func (x *MetricsGetReply) String() string {
func (*MetricsGetReply) ProtoMessage() {}
func (x *MetricsGetReply) ProtoReflect() protoreflect.Message {
mi := &file_ptypes_controller_proto_msgTypes[21]
mi := &file_ptypes_controller_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1360,7 +1486,7 @@ func (x *MetricsGetReply) ProtoReflect() protoreflect.Message {
// Deprecated: Use MetricsGetReply.ProtoReflect.Descriptor instead.
func (*MetricsGetReply) Descriptor() ([]byte, []int) {
return file_ptypes_controller_proto_rawDescGZIP(), []int{21}
return file_ptypes_controller_proto_rawDescGZIP(), []int{23}
}
func (x *MetricsGetReply) GetMetrics() *Metrics {
@ -1473,182 +1599,196 @@ var file_ptypes_controller_proto_rawDesc = []byte{
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22,
0x49, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
0x70, 0x6c, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x1e, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73,
0x68, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x08, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75,
0x69, 0x72, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x96, 0x01,
0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65,
0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x07,
0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65,
0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x12, 0x43, 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x69, 0x6c, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x12, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61,
0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05,
0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d,
0x69, 0x74, 0x22, 0x87, 0x03, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x75,
0x74, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
0x0a, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09,
0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6c,
0x69, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x41, 0x50, 0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x41,
0x50, 0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14,
0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74,
0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50,
0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
0x03, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49,
0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x61,
0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61,
0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61,
0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x15,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdb, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67,
0x68, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64,
0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x72,
0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x04, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67,
0x68, 0x70, 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x61, 0x74, 0x65,
0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4c,
0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c,
0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x72,
0x69, 0x74, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
0x61, 0x64, 0x49, 0x4f, 0x50, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65,
0x61, 0x64, 0x49, 0x4f, 0x50, 0x53, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x49,
0x4f, 0x50, 0x53, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65,
0x49, 0x4f, 0x50, 0x53, 0x22, 0x3c, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x47,
0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65,
0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x73, 0x2a, 0x26, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4d, 0x6f, 0x64,
0x65, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x4f, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x52, 0x57, 0x10,
0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x52, 0x52, 0x10, 0x02, 0x32, 0xfc, 0x0b, 0x0a, 0x11, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x33, 0x0a, 0x09, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53,
0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x12, 0x38, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f,
0x77, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79,
0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0e, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70,
0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
0x68, 0x6f, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65,
0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45,
0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x40, 0x0a,
0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53,
0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12,
0x67, 0x0a, 0x22, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4d, 0x61,
0x72, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
0x65, 0x64, 0x53, 0x65, 0x74, 0x12, 0x31, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x53, 0x6e,
0x61, 0x70, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x53, 0x65,
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65,
0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x19, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x53, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12,
0x53, 0x0a, 0x18, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
0x74, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
0x69, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x3a, 0x0a, 0x10, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x49, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61,
0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65,
0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x73, 0x22, 0x90, 0x01, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b,
0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69,
0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73,
0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x6d,
0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04,
0x6d, 0x6f, 0x64, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52,
0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x43, 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63,
0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53,
0x79, 0x6e, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x73, 0x79, 0x6e,
0x63, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x0a,
0x12, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x87, 0x03, 0x0a, 0x0d, 0x56, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d,
0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74,
0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x41, 0x50, 0x49,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x41, 0x50,
0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
0x03, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x41, 0x50, 0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65,
0x72, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
0x03, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x6c, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x61,
0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x32, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x69, 0x6e,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x64,
0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x15, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2f, 0x0a, 0x07,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x75,
0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdb, 0x01,
0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61,
0x64, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x04, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75,
0x74, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67,
0x68, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74,
0x65, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72,
0x65, 0x61, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x22, 0x0a,
0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63,
0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x49, 0x4f, 0x50, 0x53, 0x18, 0x05, 0x20,
0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x49, 0x4f, 0x50, 0x53, 0x12, 0x1c, 0x0a,
0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x49, 0x4f, 0x50, 0x53, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04,
0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x49, 0x4f, 0x50, 0x53, 0x22, 0x3c, 0x0a, 0x0f, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29,
0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0f, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2a, 0x26, 0x0a, 0x0b, 0x52, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x4f, 0x10, 0x00,
0x12, 0x06, 0x0a, 0x02, 0x52, 0x57, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x52, 0x52, 0x10,
0x02, 0x32, 0xbb, 0x0c, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
0x65, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0b,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
0x65, 0x12, 0x4c, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c,
0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
0x3b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12,
0x1b, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52,
0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0c,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61,
0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x56, 0x6f, 0x6c,
0x75, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74,
0x12, 0x22, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x46, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c,
0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x12, 0x26, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x12, 0x3f, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x53, 0x0a, 0x15,
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65,
0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x22, 0x2e,
0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x72,
0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x70, 0x6c,
0x79, 0x12, 0x49, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x56, 0x65, 0x72, 0x69,
0x66, 0x79, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x6c, 0x75, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x16, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x46, 0x72,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x22, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4d, 0x61, 0x72, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x68, 0x61,
0x69, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x53, 0x65, 0x74, 0x12, 0x31, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x61,
0x70, 0x4d, 0x61, 0x72, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65,
0x6d, 0x6f, 0x76, 0x65, 0x64, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12,
0x55, 0x0a, 0x19, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
0x74, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70,
0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x18, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x53,
0x65, 0x74, 0x12, 0x27, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75,
0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a,
0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x56,
0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x4f, 0x12, 0x17, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x18, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x49, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x52, 0x65,
0x70, 0x6c, 0x69, 0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x1a, 0x18, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x0a, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x41, 0x0a, 0x0b,
0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
0x49, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x73, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x1a, 0x17, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72,
0x61, 0x74, 0x65, 0x64, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x72, 0x70, 0x63, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x5c, 0x0a, 0x17,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x3f, 0x0a, 0x0d, 0x52, 0x65,
0x70, 0x6c, 0x69, 0x63, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0d, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x70,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72,
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x12, 0x53, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x72, 0x65,
0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x16, 0x2e, 0x70, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x1a, 0x22, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12,
0x16, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x12, 0x41, 0x0a, 0x0b, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x73,
0x74, 0x12, 0x1a, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x6f, 0x75, 0x72, 0x6e,
0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x1a, 0x1d, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79,
0x12, 0x3d, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x47, 0x65, 0x74, 0x12, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42,
0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x6f,
0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x70, 0x6b, 0x67,
0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1664,7 +1804,7 @@ func file_ptypes_controller_proto_rawDescGZIP() []byte {
}
var file_ptypes_controller_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_ptypes_controller_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_ptypes_controller_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_ptypes_controller_proto_goTypes = []interface{}{
(ReplicaMode)(0), // 0: ptypes.ReplicaMode
(*Volume)(nil), // 1: ptypes.Volume
@ -1681,72 +1821,76 @@ var file_ptypes_controller_proto_goTypes = []interface{}{
(*VolumeSnapshotMaxSizeSetRequest)(nil), // 12: ptypes.VolumeSnapshotMaxSizeSetRequest
(*VolumePrepareRestoreRequest)(nil), // 13: ptypes.VolumePrepareRestoreRequest
(*VolumeFinishRestoreRequest)(nil), // 14: ptypes.VolumeFinishRestoreRequest
(*ReplicaListReply)(nil), // 15: ptypes.ReplicaListReply
(*ControllerReplicaCreateRequest)(nil), // 16: ptypes.ControllerReplicaCreateRequest
(*ReplicaPrepareRebuildReply)(nil), // 17: ptypes.ReplicaPrepareRebuildReply
(*JournalListRequest)(nil), // 18: ptypes.JournalListRequest
(*VersionOutput)(nil), // 19: ptypes.VersionOutput
(*VersionDetailGetReply)(nil), // 20: ptypes.VersionDetailGetReply
(*Metrics)(nil), // 21: ptypes.Metrics
(*MetricsGetReply)(nil), // 22: ptypes.MetricsGetReply
nil, // 23: ptypes.VolumeSnapshotRequest.LabelsEntry
(*SyncFileInfo)(nil), // 24: ptypes.SyncFileInfo
(*emptypb.Empty)(nil), // 25: google.protobuf.Empty
(*VolumeIORequest)(nil), // 15: ptypes.VolumeIORequest
(*VolumeIOResponse)(nil), // 16: ptypes.VolumeIOResponse
(*ReplicaListReply)(nil), // 17: ptypes.ReplicaListReply
(*ControllerReplicaCreateRequest)(nil), // 18: ptypes.ControllerReplicaCreateRequest
(*ReplicaPrepareRebuildReply)(nil), // 19: ptypes.ReplicaPrepareRebuildReply
(*JournalListRequest)(nil), // 20: ptypes.JournalListRequest
(*VersionOutput)(nil), // 21: ptypes.VersionOutput
(*VersionDetailGetReply)(nil), // 22: ptypes.VersionDetailGetReply
(*Metrics)(nil), // 23: ptypes.Metrics
(*MetricsGetReply)(nil), // 24: ptypes.MetricsGetReply
nil, // 25: ptypes.VolumeSnapshotRequest.LabelsEntry
(*SyncFileInfo)(nil), // 26: ptypes.SyncFileInfo
(*emptypb.Empty)(nil), // 27: google.protobuf.Empty
}
var file_ptypes_controller_proto_depIdxs = []int32{
2, // 0: ptypes.ControllerReplica.address:type_name -> ptypes.ReplicaAddress
0, // 1: ptypes.ControllerReplica.mode:type_name -> ptypes.ReplicaMode
23, // 2: ptypes.VolumeSnapshotRequest.labels:type_name -> ptypes.VolumeSnapshotRequest.LabelsEntry
25, // 2: ptypes.VolumeSnapshotRequest.labels:type_name -> ptypes.VolumeSnapshotRequest.LabelsEntry
3, // 3: ptypes.ReplicaListReply.replicas:type_name -> ptypes.ControllerReplica
0, // 4: ptypes.ControllerReplicaCreateRequest.mode:type_name -> ptypes.ReplicaMode
3, // 5: ptypes.ReplicaPrepareRebuildReply.replica:type_name -> ptypes.ControllerReplica
24, // 6: ptypes.ReplicaPrepareRebuildReply.sync_file_info_list:type_name -> ptypes.SyncFileInfo
19, // 7: ptypes.VersionDetailGetReply.version:type_name -> ptypes.VersionOutput
21, // 8: ptypes.MetricsGetReply.metrics:type_name -> ptypes.Metrics
25, // 9: ptypes.ControllerService.VolumeGet:input_type -> google.protobuf.Empty
26, // 6: ptypes.ReplicaPrepareRebuildReply.sync_file_info_list:type_name -> ptypes.SyncFileInfo
21, // 7: ptypes.VersionDetailGetReply.version:type_name -> ptypes.VersionOutput
23, // 8: ptypes.MetricsGetReply.metrics:type_name -> ptypes.Metrics
27, // 9: ptypes.ControllerService.VolumeGet:input_type -> google.protobuf.Empty
4, // 10: ptypes.ControllerService.VolumeStart:input_type -> ptypes.VolumeStartRequest
25, // 11: ptypes.ControllerService.VolumeShutdown:input_type -> google.protobuf.Empty
27, // 11: ptypes.ControllerService.VolumeShutdown:input_type -> google.protobuf.Empty
5, // 12: ptypes.ControllerService.VolumeSnapshot:input_type -> ptypes.VolumeSnapshotRequest
7, // 13: ptypes.ControllerService.VolumeRevert:input_type -> ptypes.VolumeRevertRequest
8, // 14: ptypes.ControllerService.VolumeExpand:input_type -> ptypes.VolumeExpandRequest
9, // 15: ptypes.ControllerService.VolumeFrontendStart:input_type -> ptypes.VolumeFrontendStartRequest
25, // 16: ptypes.ControllerService.VolumeFrontendShutdown:input_type -> google.protobuf.Empty
27, // 16: ptypes.ControllerService.VolumeFrontendShutdown:input_type -> google.protobuf.Empty
10, // 17: ptypes.ControllerService.VolumeUnmapMarkSnapChainRemovedSet:input_type -> ptypes.VolumeUnmapMarkSnapChainRemovedSetRequest
11, // 18: ptypes.ControllerService.VolumeSnapshotMaxCountSet:input_type -> ptypes.VolumeSnapshotMaxCountSetRequest
12, // 19: ptypes.ControllerService.VolumeSnapshotMaxSizeSet:input_type -> ptypes.VolumeSnapshotMaxSizeSetRequest
25, // 20: ptypes.ControllerService.ReplicaList:input_type -> google.protobuf.Empty
2, // 21: ptypes.ControllerService.ReplicaGet:input_type -> ptypes.ReplicaAddress
16, // 22: ptypes.ControllerService.ControllerReplicaCreate:input_type -> ptypes.ControllerReplicaCreateRequest
2, // 23: ptypes.ControllerService.ReplicaDelete:input_type -> ptypes.ReplicaAddress
3, // 24: ptypes.ControllerService.ReplicaUpdate:input_type -> ptypes.ControllerReplica
2, // 25: ptypes.ControllerService.ReplicaPrepareRebuild:input_type -> ptypes.ReplicaAddress
2, // 26: ptypes.ControllerService.ReplicaVerifyRebuild:input_type -> ptypes.ReplicaAddress
18, // 27: ptypes.ControllerService.JournalList:input_type -> ptypes.JournalListRequest
25, // 28: ptypes.ControllerService.VersionDetailGet:input_type -> google.protobuf.Empty
25, // 29: ptypes.ControllerService.MetricsGet:input_type -> google.protobuf.Empty
1, // 30: ptypes.ControllerService.VolumeGet:output_type -> ptypes.Volume
1, // 31: ptypes.ControllerService.VolumeStart:output_type -> ptypes.Volume
1, // 32: ptypes.ControllerService.VolumeShutdown:output_type -> ptypes.Volume
6, // 33: ptypes.ControllerService.VolumeSnapshot:output_type -> ptypes.VolumeSnapshotReply
1, // 34: ptypes.ControllerService.VolumeRevert:output_type -> ptypes.Volume
1, // 35: ptypes.ControllerService.VolumeExpand:output_type -> ptypes.Volume
1, // 36: ptypes.ControllerService.VolumeFrontendStart:output_type -> ptypes.Volume
1, // 37: ptypes.ControllerService.VolumeFrontendShutdown:output_type -> ptypes.Volume
1, // 38: ptypes.ControllerService.VolumeUnmapMarkSnapChainRemovedSet:output_type -> ptypes.Volume
1, // 39: ptypes.ControllerService.VolumeSnapshotMaxCountSet:output_type -> ptypes.Volume
1, // 40: ptypes.ControllerService.VolumeSnapshotMaxSizeSet:output_type -> ptypes.Volume
15, // 41: ptypes.ControllerService.ReplicaList:output_type -> ptypes.ReplicaListReply
3, // 42: ptypes.ControllerService.ReplicaGet:output_type -> ptypes.ControllerReplica
3, // 43: ptypes.ControllerService.ControllerReplicaCreate:output_type -> ptypes.ControllerReplica
25, // 44: ptypes.ControllerService.ReplicaDelete:output_type -> google.protobuf.Empty
3, // 45: ptypes.ControllerService.ReplicaUpdate:output_type -> ptypes.ControllerReplica
17, // 46: ptypes.ControllerService.ReplicaPrepareRebuild:output_type -> ptypes.ReplicaPrepareRebuildReply
3, // 47: ptypes.ControllerService.ReplicaVerifyRebuild:output_type -> ptypes.ControllerReplica
25, // 48: ptypes.ControllerService.JournalList:output_type -> google.protobuf.Empty
20, // 49: ptypes.ControllerService.VersionDetailGet:output_type -> ptypes.VersionDetailGetReply
22, // 50: ptypes.ControllerService.MetricsGet:output_type -> ptypes.MetricsGetReply
30, // [30:51] is the sub-list for method output_type
9, // [9:30] is the sub-list for method input_type
15, // 20: ptypes.ControllerService.VolumeIO:input_type -> ptypes.VolumeIORequest
27, // 21: ptypes.ControllerService.ReplicaList:input_type -> google.protobuf.Empty
2, // 22: ptypes.ControllerService.ReplicaGet:input_type -> ptypes.ReplicaAddress
18, // 23: ptypes.ControllerService.ControllerReplicaCreate:input_type -> ptypes.ControllerReplicaCreateRequest
2, // 24: ptypes.ControllerService.ReplicaDelete:input_type -> ptypes.ReplicaAddress
3, // 25: ptypes.ControllerService.ReplicaUpdate:input_type -> ptypes.ControllerReplica
2, // 26: ptypes.ControllerService.ReplicaPrepareRebuild:input_type -> ptypes.ReplicaAddress
2, // 27: ptypes.ControllerService.ReplicaVerifyRebuild:input_type -> ptypes.ReplicaAddress
20, // 28: ptypes.ControllerService.JournalList:input_type -> ptypes.JournalListRequest
27, // 29: ptypes.ControllerService.VersionDetailGet:input_type -> google.protobuf.Empty
27, // 30: ptypes.ControllerService.MetricsGet:input_type -> google.protobuf.Empty
1, // 31: ptypes.ControllerService.VolumeGet:output_type -> ptypes.Volume
1, // 32: ptypes.ControllerService.VolumeStart:output_type -> ptypes.Volume
1, // 33: ptypes.ControllerService.VolumeShutdown:output_type -> ptypes.Volume
6, // 34: ptypes.ControllerService.VolumeSnapshot:output_type -> ptypes.VolumeSnapshotReply
1, // 35: ptypes.ControllerService.VolumeRevert:output_type -> ptypes.Volume
1, // 36: ptypes.ControllerService.VolumeExpand:output_type -> ptypes.Volume
1, // 37: ptypes.ControllerService.VolumeFrontendStart:output_type -> ptypes.Volume
1, // 38: ptypes.ControllerService.VolumeFrontendShutdown:output_type -> ptypes.Volume
1, // 39: ptypes.ControllerService.VolumeUnmapMarkSnapChainRemovedSet:output_type -> ptypes.Volume
1, // 40: ptypes.ControllerService.VolumeSnapshotMaxCountSet:output_type -> ptypes.Volume
1, // 41: ptypes.ControllerService.VolumeSnapshotMaxSizeSet:output_type -> ptypes.Volume
16, // 42: ptypes.ControllerService.VolumeIO:output_type -> ptypes.VolumeIOResponse
17, // 43: ptypes.ControllerService.ReplicaList:output_type -> ptypes.ReplicaListReply
3, // 44: ptypes.ControllerService.ReplicaGet:output_type -> ptypes.ControllerReplica
3, // 45: ptypes.ControllerService.ControllerReplicaCreate:output_type -> ptypes.ControllerReplica
27, // 46: ptypes.ControllerService.ReplicaDelete:output_type -> google.protobuf.Empty
3, // 47: ptypes.ControllerService.ReplicaUpdate:output_type -> ptypes.ControllerReplica
19, // 48: ptypes.ControllerService.ReplicaPrepareRebuild:output_type -> ptypes.ReplicaPrepareRebuildReply
3, // 49: ptypes.ControllerService.ReplicaVerifyRebuild:output_type -> ptypes.ControllerReplica
27, // 50: ptypes.ControllerService.JournalList:output_type -> google.protobuf.Empty
22, // 51: ptypes.ControllerService.VersionDetailGet:output_type -> ptypes.VersionDetailGetReply
24, // 52: ptypes.ControllerService.MetricsGet:output_type -> ptypes.MetricsGetReply
31, // [31:53] is the sub-list for method output_type
9, // [9:31] is the sub-list for method input_type
9, // [9:9] is the sub-list for extension type_name
9, // [9:9] is the sub-list for extension extendee
0, // [0:9] is the sub-list for field type_name
@ -1928,7 +2072,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplicaListReply); i {
switch v := v.(*VolumeIORequest); i {
case 0:
return &v.state
case 1:
@ -1940,7 +2084,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ControllerReplicaCreateRequest); i {
switch v := v.(*VolumeIOResponse); i {
case 0:
return &v.state
case 1:
@ -1952,7 +2096,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplicaPrepareRebuildReply); i {
switch v := v.(*ReplicaListReply); i {
case 0:
return &v.state
case 1:
@ -1964,7 +2108,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JournalListRequest); i {
switch v := v.(*ControllerReplicaCreateRequest); i {
case 0:
return &v.state
case 1:
@ -1976,7 +2120,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VersionOutput); i {
switch v := v.(*ReplicaPrepareRebuildReply); i {
case 0:
return &v.state
case 1:
@ -1988,7 +2132,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VersionDetailGetReply); i {
switch v := v.(*JournalListRequest); i {
case 0:
return &v.state
case 1:
@ -2000,7 +2144,7 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Metrics); i {
switch v := v.(*VersionOutput); i {
case 0:
return &v.state
case 1:
@ -2012,6 +2156,30 @@ func file_ptypes_controller_proto_init() {
}
}
file_ptypes_controller_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VersionDetailGetReply); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_ptypes_controller_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Metrics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_ptypes_controller_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetricsGetReply); i {
case 0:
return &v.state
@ -2030,7 +2198,7 @@ func file_ptypes_controller_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_ptypes_controller_proto_rawDesc,
NumEnums: 1,
NumMessages: 23,
NumMessages: 25,
NumExtensions: 0,
NumServices: 1,
},

View File

@ -31,6 +31,7 @@ const (
ControllerService_VolumeUnmapMarkSnapChainRemovedSet_FullMethodName = "/ptypes.ControllerService/VolumeUnmapMarkSnapChainRemovedSet"
ControllerService_VolumeSnapshotMaxCountSet_FullMethodName = "/ptypes.ControllerService/VolumeSnapshotMaxCountSet"
ControllerService_VolumeSnapshotMaxSizeSet_FullMethodName = "/ptypes.ControllerService/VolumeSnapshotMaxSizeSet"
ControllerService_VolumeIO_FullMethodName = "/ptypes.ControllerService/VolumeIO"
ControllerService_ReplicaList_FullMethodName = "/ptypes.ControllerService/ReplicaList"
ControllerService_ReplicaGet_FullMethodName = "/ptypes.ControllerService/ReplicaGet"
ControllerService_ControllerReplicaCreate_FullMethodName = "/ptypes.ControllerService/ControllerReplicaCreate"
@ -58,6 +59,7 @@ type ControllerServiceClient interface {
VolumeUnmapMarkSnapChainRemovedSet(ctx context.Context, in *VolumeUnmapMarkSnapChainRemovedSetRequest, opts ...grpc.CallOption) (*Volume, error)
VolumeSnapshotMaxCountSet(ctx context.Context, in *VolumeSnapshotMaxCountSetRequest, opts ...grpc.CallOption) (*Volume, error)
VolumeSnapshotMaxSizeSet(ctx context.Context, in *VolumeSnapshotMaxSizeSetRequest, opts ...grpc.CallOption) (*Volume, error)
VolumeIO(ctx context.Context, in *VolumeIORequest, opts ...grpc.CallOption) (*VolumeIOResponse, error)
ReplicaList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ReplicaListReply, error)
ReplicaGet(ctx context.Context, in *ReplicaAddress, opts ...grpc.CallOption) (*ControllerReplica, error)
ControllerReplicaCreate(ctx context.Context, in *ControllerReplicaCreateRequest, opts ...grpc.CallOption) (*ControllerReplica, error)
@ -177,6 +179,15 @@ func (c *controllerServiceClient) VolumeSnapshotMaxSizeSet(ctx context.Context,
return out, nil
}
func (c *controllerServiceClient) VolumeIO(ctx context.Context, in *VolumeIORequest, opts ...grpc.CallOption) (*VolumeIOResponse, error) {
out := new(VolumeIOResponse)
err := c.cc.Invoke(ctx, ControllerService_VolumeIO_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *controllerServiceClient) ReplicaList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ReplicaListReply, error) {
out := new(ReplicaListReply)
err := c.cc.Invoke(ctx, ControllerService_ReplicaList_FullMethodName, in, out, opts...)
@ -282,6 +293,7 @@ type ControllerServiceServer interface {
VolumeUnmapMarkSnapChainRemovedSet(context.Context, *VolumeUnmapMarkSnapChainRemovedSetRequest) (*Volume, error)
VolumeSnapshotMaxCountSet(context.Context, *VolumeSnapshotMaxCountSetRequest) (*Volume, error)
VolumeSnapshotMaxSizeSet(context.Context, *VolumeSnapshotMaxSizeSetRequest) (*Volume, error)
VolumeIO(context.Context, *VolumeIORequest) (*VolumeIOResponse, error)
ReplicaList(context.Context, *emptypb.Empty) (*ReplicaListReply, error)
ReplicaGet(context.Context, *ReplicaAddress) (*ControllerReplica, error)
ControllerReplicaCreate(context.Context, *ControllerReplicaCreateRequest) (*ControllerReplica, error)
@ -332,6 +344,9 @@ func (UnimplementedControllerServiceServer) VolumeSnapshotMaxCountSet(context.Co
func (UnimplementedControllerServiceServer) VolumeSnapshotMaxSizeSet(context.Context, *VolumeSnapshotMaxSizeSetRequest) (*Volume, error) {
return nil, status.Errorf(codes.Unimplemented, "method VolumeSnapshotMaxSizeSet not implemented")
}
func (UnimplementedControllerServiceServer) VolumeIO(context.Context, *VolumeIORequest) (*VolumeIOResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method VolumeIO not implemented")
}
func (UnimplementedControllerServiceServer) ReplicaList(context.Context, *emptypb.Empty) (*ReplicaListReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaList not implemented")
}
@ -573,6 +588,24 @@ func _ControllerService_VolumeSnapshotMaxSizeSet_Handler(srv interface{}, ctx co
return interceptor(ctx, in, info, handler)
}
func _ControllerService_VolumeIO_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(VolumeIORequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ControllerServiceServer).VolumeIO(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ControllerService_VolumeIO_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServiceServer).VolumeIO(ctx, req.(*VolumeIORequest))
}
return interceptor(ctx, in, info, handler)
}
func _ControllerService_ReplicaList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(emptypb.Empty)
if err := dec(in); err != nil {
@ -804,6 +837,10 @@ var ControllerService_ServiceDesc = grpc.ServiceDesc{
MethodName: "VolumeSnapshotMaxSizeSet",
Handler: _ControllerService_VolumeSnapshotMaxSizeSet_Handler,
},
{
MethodName: "VolumeIO",
Handler: _ControllerService_VolumeIO_Handler,
},
{
MethodName: "ReplicaList",
Handler: _ControllerService_ReplicaList_Handler,

File diff suppressed because it is too large Load Diff

View File

@ -27,6 +27,10 @@ const (
SPDKService_ReplicaSnapshotDelete_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotDelete"
SPDKService_ReplicaSnapshotRevert_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotRevert"
SPDKService_ReplicaSnapshotPurge_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotPurge"
SPDKService_ReplicaSnapshotHash_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotHash"
SPDKService_ReplicaSnapshotHashStatus_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotHashStatus"
SPDKService_ReplicaSnapshotHashCancel_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotHashCancel"
SPDKService_ReplicaSnapshotHashLockState_FullMethodName = "/spdkrpc.SPDKService/ReplicaSnapshotHashLockState"
SPDKService_ReplicaList_FullMethodName = "/spdkrpc.SPDKService/ReplicaList"
SPDKService_ReplicaWatch_FullMethodName = "/spdkrpc.SPDKService/ReplicaWatch"
SPDKService_ReplicaRebuildingSrcStart_FullMethodName = "/spdkrpc.SPDKService/ReplicaRebuildingSrcStart"
@ -53,6 +57,10 @@ const (
SPDKService_EngineSnapshotDelete_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotDelete"
SPDKService_EngineSnapshotRevert_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotRevert"
SPDKService_EngineSnapshotPurge_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotPurge"
SPDKService_EngineSnapshotHash_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotHash"
SPDKService_EngineSnapshotHashStatus_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotHashStatus"
SPDKService_EngineSnapshotHashCancel_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotHashCancel"
SPDKService_EngineSnapshotHashLockState_FullMethodName = "/spdkrpc.SPDKService/EngineSnapshotHashLockState"
SPDKService_EngineList_FullMethodName = "/spdkrpc.SPDKService/EngineList"
SPDKService_EngineWatch_FullMethodName = "/spdkrpc.SPDKService/EngineWatch"
SPDKService_EngineReplicaList_FullMethodName = "/spdkrpc.SPDKService/EngineReplicaList"
@ -92,6 +100,10 @@ type SPDKServiceClient interface {
ReplicaSnapshotDelete(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaSnapshotRevert(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaSnapshotPurge(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaSnapshotHash(ctx context.Context, in *SnapshotHashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaSnapshotHashStatus(ctx context.Context, in *SnapshotHashStatusRequest, opts ...grpc.CallOption) (*ReplicaSnapshotHashStatusResponse, error)
ReplicaSnapshotHashCancel(ctx context.Context, in *SnapshotHashCancelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaSnapshotHashLockState(ctx context.Context, in *SnapshotHashLockStateRequest, opts ...grpc.CallOption) (*SnapshotHashLockStateResponse, error)
ReplicaList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ReplicaListResponse, error)
ReplicaWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (SPDKService_ReplicaWatchClient, error)
ReplicaRebuildingSrcStart(ctx context.Context, in *ReplicaRebuildingSrcStartRequest, opts ...grpc.CallOption) (*ReplicaRebuildingSrcStartResponse, error)
@ -118,6 +130,10 @@ type SPDKServiceClient interface {
EngineSnapshotDelete(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineSnapshotRevert(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineSnapshotPurge(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineSnapshotHash(ctx context.Context, in *SnapshotHashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineSnapshotHashStatus(ctx context.Context, in *SnapshotHashStatusRequest, opts ...grpc.CallOption) (*EngineSnapshotHashStatusResponse, error)
EngineSnapshotHashCancel(ctx context.Context, in *SnapshotHashCancelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineSnapshotHashLockState(ctx context.Context, in *SnapshotHashLockStateRequest, opts ...grpc.CallOption) (*SnapshotHashLockStateResponse, error)
EngineList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EngineListResponse, error)
EngineWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (SPDKService_EngineWatchClient, error)
EngineReplicaList(ctx context.Context, in *EngineReplicaListRequest, opts ...grpc.CallOption) (*EngineReplicaListResponse, error)
@ -217,6 +233,42 @@ func (c *sPDKServiceClient) ReplicaSnapshotPurge(ctx context.Context, in *Snapsh
return out, nil
}
func (c *sPDKServiceClient) ReplicaSnapshotHash(ctx context.Context, in *SnapshotHashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_ReplicaSnapshotHash_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) ReplicaSnapshotHashStatus(ctx context.Context, in *SnapshotHashStatusRequest, opts ...grpc.CallOption) (*ReplicaSnapshotHashStatusResponse, error) {
out := new(ReplicaSnapshotHashStatusResponse)
err := c.cc.Invoke(ctx, SPDKService_ReplicaSnapshotHashStatus_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) ReplicaSnapshotHashCancel(ctx context.Context, in *SnapshotHashCancelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_ReplicaSnapshotHashCancel_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) ReplicaSnapshotHashLockState(ctx context.Context, in *SnapshotHashLockStateRequest, opts ...grpc.CallOption) (*SnapshotHashLockStateResponse, error) {
out := new(SnapshotHashLockStateResponse)
err := c.cc.Invoke(ctx, SPDKService_ReplicaSnapshotHashLockState_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) ReplicaList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ReplicaListResponse, error) {
out := new(ReplicaListResponse)
err := c.cc.Invoke(ctx, SPDKService_ReplicaList_FullMethodName, in, out, opts...)
@ -474,6 +526,42 @@ func (c *sPDKServiceClient) EngineSnapshotPurge(ctx context.Context, in *Snapsho
return out, nil
}
func (c *sPDKServiceClient) EngineSnapshotHash(ctx context.Context, in *SnapshotHashRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_EngineSnapshotHash_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) EngineSnapshotHashStatus(ctx context.Context, in *SnapshotHashStatusRequest, opts ...grpc.CallOption) (*EngineSnapshotHashStatusResponse, error) {
out := new(EngineSnapshotHashStatusResponse)
err := c.cc.Invoke(ctx, SPDKService_EngineSnapshotHashStatus_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) EngineSnapshotHashCancel(ctx context.Context, in *SnapshotHashCancelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_EngineSnapshotHashCancel_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) EngineSnapshotHashLockState(ctx context.Context, in *SnapshotHashLockStateRequest, opts ...grpc.CallOption) (*SnapshotHashLockStateResponse, error) {
out := new(SnapshotHashLockStateResponse)
err := c.cc.Invoke(ctx, SPDKService_EngineSnapshotHashLockState_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) EngineList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EngineListResponse, error) {
out := new(EngineListResponse)
err := c.cc.Invoke(ctx, SPDKService_EngineList_FullMethodName, in, out, opts...)
@ -765,6 +853,10 @@ type SPDKServiceServer interface {
ReplicaSnapshotDelete(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
ReplicaSnapshotRevert(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
ReplicaSnapshotPurge(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
ReplicaSnapshotHash(context.Context, *SnapshotHashRequest) (*emptypb.Empty, error)
ReplicaSnapshotHashStatus(context.Context, *SnapshotHashStatusRequest) (*ReplicaSnapshotHashStatusResponse, error)
ReplicaSnapshotHashCancel(context.Context, *SnapshotHashCancelRequest) (*emptypb.Empty, error)
ReplicaSnapshotHashLockState(context.Context, *SnapshotHashLockStateRequest) (*SnapshotHashLockStateResponse, error)
ReplicaList(context.Context, *emptypb.Empty) (*ReplicaListResponse, error)
ReplicaWatch(*emptypb.Empty, SPDKService_ReplicaWatchServer) error
ReplicaRebuildingSrcStart(context.Context, *ReplicaRebuildingSrcStartRequest) (*ReplicaRebuildingSrcStartResponse, error)
@ -791,6 +883,10 @@ type SPDKServiceServer interface {
EngineSnapshotDelete(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
EngineSnapshotRevert(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
EngineSnapshotPurge(context.Context, *SnapshotRequest) (*emptypb.Empty, error)
EngineSnapshotHash(context.Context, *SnapshotHashRequest) (*emptypb.Empty, error)
EngineSnapshotHashStatus(context.Context, *SnapshotHashStatusRequest) (*EngineSnapshotHashStatusResponse, error)
EngineSnapshotHashCancel(context.Context, *SnapshotHashCancelRequest) (*emptypb.Empty, error)
EngineSnapshotHashLockState(context.Context, *SnapshotHashLockStateRequest) (*SnapshotHashLockStateResponse, error)
EngineList(context.Context, *emptypb.Empty) (*EngineListResponse, error)
EngineWatch(*emptypb.Empty, SPDKService_EngineWatchServer) error
EngineReplicaList(context.Context, *EngineReplicaListRequest) (*EngineReplicaListResponse, error)
@ -845,6 +941,18 @@ func (UnimplementedSPDKServiceServer) ReplicaSnapshotRevert(context.Context, *Sn
func (UnimplementedSPDKServiceServer) ReplicaSnapshotPurge(context.Context, *SnapshotRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaSnapshotPurge not implemented")
}
func (UnimplementedSPDKServiceServer) ReplicaSnapshotHash(context.Context, *SnapshotHashRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaSnapshotHash not implemented")
}
func (UnimplementedSPDKServiceServer) ReplicaSnapshotHashStatus(context.Context, *SnapshotHashStatusRequest) (*ReplicaSnapshotHashStatusResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaSnapshotHashStatus not implemented")
}
func (UnimplementedSPDKServiceServer) ReplicaSnapshotHashCancel(context.Context, *SnapshotHashCancelRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaSnapshotHashCancel not implemented")
}
func (UnimplementedSPDKServiceServer) ReplicaSnapshotHashLockState(context.Context, *SnapshotHashLockStateRequest) (*SnapshotHashLockStateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaSnapshotHashLockState not implemented")
}
func (UnimplementedSPDKServiceServer) ReplicaList(context.Context, *emptypb.Empty) (*ReplicaListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaList not implemented")
}
@ -923,6 +1031,18 @@ func (UnimplementedSPDKServiceServer) EngineSnapshotRevert(context.Context, *Sna
func (UnimplementedSPDKServiceServer) EngineSnapshotPurge(context.Context, *SnapshotRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineSnapshotPurge not implemented")
}
func (UnimplementedSPDKServiceServer) EngineSnapshotHash(context.Context, *SnapshotHashRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineSnapshotHash not implemented")
}
func (UnimplementedSPDKServiceServer) EngineSnapshotHashStatus(context.Context, *SnapshotHashStatusRequest) (*EngineSnapshotHashStatusResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineSnapshotHashStatus not implemented")
}
func (UnimplementedSPDKServiceServer) EngineSnapshotHashCancel(context.Context, *SnapshotHashCancelRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineSnapshotHashCancel not implemented")
}
func (UnimplementedSPDKServiceServer) EngineSnapshotHashLockState(context.Context, *SnapshotHashLockStateRequest) (*SnapshotHashLockStateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineSnapshotHashLockState not implemented")
}
func (UnimplementedSPDKServiceServer) EngineList(context.Context, *emptypb.Empty) (*EngineListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineList not implemented")
}
@ -1140,6 +1260,78 @@ func _SPDKService_ReplicaSnapshotPurge_Handler(srv interface{}, ctx context.Cont
return interceptor(ctx, in, info, handler)
}
func _SPDKService_ReplicaSnapshotHash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).ReplicaSnapshotHash(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_ReplicaSnapshotHash_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).ReplicaSnapshotHash(ctx, req.(*SnapshotHashRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_ReplicaSnapshotHashStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashStatusRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).ReplicaSnapshotHashStatus(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_ReplicaSnapshotHashStatus_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).ReplicaSnapshotHashStatus(ctx, req.(*SnapshotHashStatusRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_ReplicaSnapshotHashCancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashCancelRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).ReplicaSnapshotHashCancel(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_ReplicaSnapshotHashCancel_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).ReplicaSnapshotHashCancel(ctx, req.(*SnapshotHashCancelRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_ReplicaSnapshotHashLockState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashLockStateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).ReplicaSnapshotHashLockState(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_ReplicaSnapshotHashLockState_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).ReplicaSnapshotHashLockState(ctx, req.(*SnapshotHashLockStateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_ReplicaList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(emptypb.Empty)
if err := dec(in); err != nil {
@ -1611,6 +1803,78 @@ func _SPDKService_EngineSnapshotPurge_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler)
}
func _SPDKService_EngineSnapshotHash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).EngineSnapshotHash(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_EngineSnapshotHash_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).EngineSnapshotHash(ctx, req.(*SnapshotHashRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_EngineSnapshotHashStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashStatusRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).EngineSnapshotHashStatus(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_EngineSnapshotHashStatus_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).EngineSnapshotHashStatus(ctx, req.(*SnapshotHashStatusRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_EngineSnapshotHashCancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashCancelRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).EngineSnapshotHashCancel(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_EngineSnapshotHashCancel_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).EngineSnapshotHashCancel(ctx, req.(*SnapshotHashCancelRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_EngineSnapshotHashLockState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SnapshotHashLockStateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).EngineSnapshotHashLockState(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_EngineSnapshotHashLockState_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).EngineSnapshotHashLockState(ctx, req.(*SnapshotHashLockStateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_EngineList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(emptypb.Empty)
if err := dec(in); err != nil {
@ -2120,6 +2384,22 @@ var SPDKService_ServiceDesc = grpc.ServiceDesc{
MethodName: "ReplicaSnapshotPurge",
Handler: _SPDKService_ReplicaSnapshotPurge_Handler,
},
{
MethodName: "ReplicaSnapshotHash",
Handler: _SPDKService_ReplicaSnapshotHash_Handler,
},
{
MethodName: "ReplicaSnapshotHashStatus",
Handler: _SPDKService_ReplicaSnapshotHashStatus_Handler,
},
{
MethodName: "ReplicaSnapshotHashCancel",
Handler: _SPDKService_ReplicaSnapshotHashCancel_Handler,
},
{
MethodName: "ReplicaSnapshotHashLockState",
Handler: _SPDKService_ReplicaSnapshotHashLockState_Handler,
},
{
MethodName: "ReplicaList",
Handler: _SPDKService_ReplicaList_Handler,
@ -2220,6 +2500,22 @@ var SPDKService_ServiceDesc = grpc.ServiceDesc{
MethodName: "EngineSnapshotPurge",
Handler: _SPDKService_EngineSnapshotPurge_Handler,
},
{
MethodName: "EngineSnapshotHash",
Handler: _SPDKService_EngineSnapshotHash_Handler,
},
{
MethodName: "EngineSnapshotHashStatus",
Handler: _SPDKService_EngineSnapshotHashStatus_Handler,
},
{
MethodName: "EngineSnapshotHashCancel",
Handler: _SPDKService_EngineSnapshotHashCancel_Handler,
},
{
MethodName: "EngineSnapshotHashLockState",
Handler: _SPDKService_EngineSnapshotHashLockState_Handler,
},
{
MethodName: "EngineList",
Handler: _SPDKService_EngineList_Handler,

View File

@ -19,6 +19,7 @@ service ControllerService {
rpc VolumeUnmapMarkSnapChainRemovedSet(VolumeUnmapMarkSnapChainRemovedSetRequest) returns (Volume);
rpc VolumeSnapshotMaxCountSet(VolumeSnapshotMaxCountSetRequest) returns (Volume);
rpc VolumeSnapshotMaxSizeSet(VolumeSnapshotMaxSizeSetRequest) returns (Volume);
rpc VolumeIO(VolumeIORequest) returns (VolumeIOResponse);
rpc ReplicaList(google.protobuf.Empty) returns (ReplicaListReply);
rpc ReplicaGet(ReplicaAddress) returns (ControllerReplica);
@ -118,6 +119,18 @@ message VolumeFinishRestoreRequest {
string currentRestored = 1;
}
message VolumeIORequest {
string type = 1;
string data = 2;
int64 offset = 3;
int64 length = 4;
}
message VolumeIOResponse {
bytes data = 1;
int64 size = 2;
}
message ReplicaListReply {
repeated ControllerReplica replicas = 1;
}

View File

@ -14,6 +14,10 @@ service SPDKService {
rpc ReplicaSnapshotDelete(SnapshotRequest) returns (google.protobuf.Empty);
rpc ReplicaSnapshotRevert(SnapshotRequest) returns (google.protobuf.Empty);
rpc ReplicaSnapshotPurge(SnapshotRequest) returns (google.protobuf.Empty);
rpc ReplicaSnapshotHash(SnapshotHashRequest) returns (google.protobuf.Empty) {};
rpc ReplicaSnapshotHashStatus(SnapshotHashStatusRequest) returns (ReplicaSnapshotHashStatusResponse) {};
rpc ReplicaSnapshotHashCancel(SnapshotHashCancelRequest) returns (google.protobuf.Empty) {};
rpc ReplicaSnapshotHashLockState(SnapshotHashLockStateRequest) returns (SnapshotHashLockStateResponse) {};
rpc ReplicaList(google.protobuf.Empty) returns (ReplicaListResponse);
rpc ReplicaWatch(google.protobuf.Empty) returns (stream google.protobuf.Empty) {}
rpc ReplicaRebuildingSrcStart(ReplicaRebuildingSrcStartRequest) returns (ReplicaRebuildingSrcStartResponse) {};
@ -41,6 +45,10 @@ service SPDKService {
rpc EngineSnapshotDelete(SnapshotRequest) returns (google.protobuf.Empty);
rpc EngineSnapshotRevert(SnapshotRequest) returns (google.protobuf.Empty);
rpc EngineSnapshotPurge(SnapshotRequest) returns (google.protobuf.Empty);
rpc EngineSnapshotHash(SnapshotHashRequest) returns (google.protobuf.Empty) {};
rpc EngineSnapshotHashStatus(SnapshotHashStatusRequest) returns (EngineSnapshotHashStatusResponse) {};
rpc EngineSnapshotHashCancel(SnapshotHashCancelRequest) returns (google.protobuf.Empty) {};
rpc EngineSnapshotHashLockState(SnapshotHashLockStateRequest) returns (SnapshotHashLockStateResponse) {};
rpc EngineList(google.protobuf.Empty) returns (EngineListResponse);
rpc EngineWatch(google.protobuf.Empty) returns (stream google.protobuf.Empty) {}
rpc EngineReplicaList(EngineReplicaListRequest) returns (EngineReplicaListResponse) {}
@ -312,6 +320,41 @@ message SnapshotResponse {
string snapshot_name = 1;
}
message SnapshotHashRequest {
string name = 1;
string snapshot_name = 2;
bool rehash = 3;
}
message SnapshotHashStatusRequest {
string name = 1;
string snapshot_name = 2;
}
message ReplicaSnapshotHashStatusResponse {
string state = 1;
string checksum = 2;
string error = 3;
bool silently_corrupted = 4;
}
message EngineSnapshotHashStatusResponse {
map<string, ReplicaSnapshotHashStatusResponse> status = 1;
}
message SnapshotHashCancelRequest {
string name = 1;
string snapshot_name = 2;
}
message SnapshotHashLockStateRequest {
string name = 1;
}
message SnapshotHashLockStateResponse {
bool is_locked = 1;
}
message VersionOutput {
string version = 1;
string gitCommit = 2;